Enectiva REST API - Librarian
HomeEnectivaUser ManualEnerfis
HomeEnectivaUser ManualEnerfis
  1. Readings to Enectiva
  • Introduction
  • Access tokens
    • Create a new access token
      POST
  • Data points from Enectiva
    • List data points of a data series
      GET
  • Deltas
    • Introduction to Deltas
    • List monthly deltas of an entity
      GET
    • List monthly deltas of a meter
      GET
    • List monthly deltas of a virtual meter
      GET
  • Data points to Enectiva
    • Latest data point
      GET
    • Create a new data point
      POST
    • Delete a data point by ID
      DELETE
    • Delete a data point by time
      DELETE
  • Profiles to Enectiva
    • Latest profile
      GET
    • Create a new/update an existing profile
      POST
    • Delete a profile by ID
      DELETE
    • Delete a profile by time range
      DELETE
  • Readings to Enectiva
    • Latest reading
      GET
    • Create a new reading
      POST
    • Delete a reading by ID
      DELETE
    • Delete a reading by time
      DELETE
  • Entities from Enectiva
    • List entities
      GET
    • Entity
      GET
  • Readings from Enectiva
    • List readings of a meter
      GET
  • Meters from Enectiva
    • List meters
    • Meter
  • Received energy invoices
    • Create a new invoice
  1. Readings to Enectiva

Create a new reading

POST
https://api.enectiva.cz//import/readings/{customerId}
Last modified:2025-09-03 20:34:01
This endpoint enables clients to add new readings to Enectiva. Each reading is sent in a separate HTTP request. The client can send the readings with any frequency but there really is no point in sending more than one reading per minute per meter. Sending readings from multiple servers might hit rate limiting limits.
Readings should be sent in chronological order and at constant intervals if possible. Older readings will be accepted, but might not be used by Enectiva.
Each reading is validated against these rules:
time, state and import_id are required fields and must be non-empty
time must conform to format defined in RFC3339, the time will be truncated to whole seconds
import_id is limited to 255 characters, it is case-sensitive, must not contain spaces
state has to be a floating point number; we recommend sending only reasonable number of digits after the decimal point
unit is an optional attribute limited to 50 case-sensitive characters; we recommend sending it when available because it is useful when debugging
sender is a case-sensitive string limited to 255 characters used for debugging and verification
suit is an optional string identifying the series of readings, if not provided default will be used, must not contain spaces
reading must be in the past
Each reading might be flagged as suspicious by the API and not processed further to avoid problems further down the line. The typical cause for flagging is an unexpected unit or a sudden growth of the state (by orders of magnitude). If readings are flagged incorrectly, please let us know.
Readings can be sent for any meter without any prior setup. The client is responsible for keeping the meter IDs unique. The same meter IDs are then used in Enectiva to identify the source of readings. In case multiple series of values are associated with a single meter ID, they can be differentiated with suit field.
For testing integration of a new client, we recommend using dummy meter IDs (e.g. test).
Repeated attempts to insert an identical reading (the same import_id, suit, time and state) result in 409 status code. Client must stop sending the same reading over and over again (and move to the next one), not doing so would result in a stuck import series and potentially rate limiting.
This endpoint requires an import token, not an access token.

Request

Authorization
OAuth 2.0
Authorization Code
Add the parameter
Authorization
to Headers
,whose value is to concatenate the Token after the Bearer.
Example:
Authorization: Bearer ********************
Authorize URL: https://app.enectiva.cz/en/api/dashboard
Token URL: No token URL is provided. Use "Import token" from the Auth URL
or
Path Params

Header Params

Body Params application/vnd.api+json

Example
{
  "data": {
    "id": 1,
    "attributes": {
      "time": "2015-11-18T09:54:23+01:00",
      "state": 123456.78,
      "import_id": "40AABB_007",
      "unit": "kW",
      "suspicious": false,
      "customer_uuid": "11e7e767-6f74-4994-b607-158ff7f7445e",
      "sender": "test_script_01",
      "suit": "default"
    },
    "type": "readings"
  }
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://api.enectiva.cz//import/readings/' \
--header 'Accept: application/vnd.api+json' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/vnd.api+json' \
--data-raw '{
  "data": {
    "id": 1,
    "attributes": {
      "time": "2015-11-18T09:54:23+01:00",
      "state": 123456.78,
      "import_id": "40AABB_007",
      "unit": "kW",
      "suspicious": false,
      "customer_uuid": "11e7e767-6f74-4994-b607-158ff7f7445e",
      "sender": "test_script_01",
      "suit": "default"
    },
    "type": "readings"
  }
}'

Responses

🟢201Created
application/vnd.api+json
Created
Body

Example
{
    "data": {
        "attributes": {
            "customer_uuid": "11e7e767-6f74-4994-b607-158ff7f7445e",
            "import_id": "40AABB_007",
            "sender": "test_script_01",
            "state": 123456.78,
            "suit": "default",
            "suspicious": false,
            "time": "2015-11-18T09:54:23+01:00",
            "unit": "kW"
        },
        "id": 1,
        "type": "readings"
    }
}
🟠400Bad Request
🟠401Unauthorized
🟠406Not Acceptable
🟠409Conflict
🟠415Unsupported Media Type
🟠429Too Many Requests
🔴500Server Error
Modified at 2025-09-03 20:34:01
Previous
Latest reading
Next
Delete a reading by ID
Built with