Eliq Data Management API

The Eliq Data Management API ingests and manages customer, location, and meter data inside the Eliq system. Clients use it to provision users and locations, post energy consumption readings, attach metadata such as tariffs and dwelling information, and keep the dataset that powers the Insights API up to date.

Operations 78

GET /client-details/available-languages Gets available languages for the users #
POST /jobs/{entity}/{operation} Create job based on entity and operation and provided file #
GET /jobs/{jobId}/cancel Cancel job before it is finished by job id #
GET /jobs Get jobs based on job state, id or name reference. #
GET /jobs/{jobId} Get Job details by job id #
GET /jobs/{jobId}/failures Get errors and details from job. #
GET /jobs/{jobId}/content Get Job content - the .ndjson file provided as the input when the Job was created. #
GET /jobs/{jobId}/result Get Job result. Export include result object containing exported details. #
GET /jobs/{jobId}/result/{page} Get Job result. Export include result object containing exported details. #
GET /locations/{locationId}/priceformulas Get location price formulas #
POST /locations/{locationId}/priceformulas Create or updates a location price formula #
DELETE /locations/{locationId}/priceformulas Delete specific location price formula #
DELETE /locations/{locationId}/priceformulas/all Delete location all price formulas #
POST /locations/{locationId}/profile/type Set location profile type #
GET /locations/{locationId}/profile/type Get location profile type #
POST /locations/{locationId}/profile Set location profile values #
GET /locations/{locationId}/profile Get location profile #
PATCH /locations/{locationId}/profile/{id} Patch location profile value #
DELETE /locations/{locationId}/profile/{id} Delete location profile #
PUT /locations/{id} Creates or updates location #
DELETE /locations/{id} Deletes location #
GET /locations/{id} Gets location #
GET /locations Gets multiple locations #
GET /locations/{id}/meters Gets location meters #
GET /locations/{locationId}/homeprofile Get a location home profile #
PUT /locations/{locationId}/homeprofile Create a home profile for location #
DELETE /locations/{locationId}/homeprofile Delete all location home profile elements #
POST /locations/{locationId}/homeprofile Update a property of location home profile #
GET /meters/{meterId}/priceformulas Get price formulas for a meter by meter external reference. #
POST /meters/{meterId}/priceformulas Add or update a price formula for a meter by meter external reference. #
DELETE /meters/{meterId}/priceformulas/{fromDate} Delete a price formulas for a meter by meter external reference and older than specified date. #
DELETE /meters/{meterId}/priceformulas/all Delete all price formulas for a meter specified by meter external reference. #
PUT /meters/{id} Creates or updates a meter. #
GET /meters/{id} Gets a meter by provided meter external reference. #
DELETE /meters/{id} Deletes a meter by provided meter external reference. #
GET /meters Gets a list of meters based on the provided query parameters. #
POST /meters/{id}/energy/day Creates or updates daily energy data for a meter. #
DELETE /meters/{id}/energy/day Deletes the daily energy data for a meter. #
GET /meters/{id}/energy/day Gets the stored daily energy data for a meter within a specified timespan. #
POST /meters/{id}/energy/highres/{resolution} Creates or updates high resolution (hourly or higher) energy data for a meter. #
DELETE /meters/{id}/energy/highres/{resolution} Deletes the high resolution (hourly or higher) energy data for a meter. #
GET /meters/{id}/energy/highres/{resolution} Gets the stored high resolution (hour or higher) energy data for a meter within a specified timespan. #
DELETE /meters/{id}/energy/{resolution} Deletes the high resolution (hourly or higher) energy data for a meter. #
POST /meters/{id}/reads Creates or updates meter reads for a meter. #
GET /meters/{id}/reads Gets the stored meter reads for a meter within a specified timespan. #
DELETE /meters/{id}/reads Deletes the stored meter reads for a meter within a specified timespan. #
POST /meters/{id}/energy/period Creates or updates periodic (monthly or higher) energy data for a meter. #
GET /meters/{id}/energy/period Gets the stored periodic (monthly or higher) energy data for a meter within a specified timespan. #
DELETE /meters/{id}/energy/period Deletes the stored periodic (monthly or higher) energy data for a meter within a specified timespan. #
POST /meters/{id}/max-demand/{resolution} Creates or updates max demand (peak power) data for a meter with a specified resolution. #
GET /meters/{id}/max-demand/{resolution} Gets the stored max demand (peak power) data for a meter with a specified resolution within a specified time frame. #
DELETE /meters/{id}/max-demand/{resolution} Deletes the max demand (peak power) data for a meter with a specified resolution within a specified time frame. #
DELETE /meters/{id}/max-demand/limits/{resolution} Deletes the max demand (peak power) limits for a meter with a specified resolution and unit. #
POST /meters/{id}/max-demand/limits/{resolution} Creates or updates the max demand (peak power) limits for a meter with a specified resolution and unit. #
GET /meters/{id}/max-demand/limits/{resolution} Gets the max demand (peak power) limits for a meter with a specified resolution and unit. #
PUT /portfolio/accounts/{id} Create or update portfolio account #
DELETE /portfolio/accounts/{id} Delete a portfolio account #
GET /portfolio/accounts/{id} Get portfolio account #
GET /portfolio/accounts/name/{name} Get portfolio account, by name #
GET /portfolio/accounts Get all portfolio accounts #
POST /portfolio/accounts/{accountId}/groups Create (update not allowed) portfolio group #
GET /portfolio/accounts/{accountId}/groups Get all groups on porfolio account #
DELETE /portfolio/accounts/{accountId}/groups/{id} Delete group on portfolio account #
GET /portfolio/accounts/{accountId}/groups/{id} Get group on portfolio account #
PUT /portfolio/accounts/{accountId}/locations/{id} Create or update portfolio location #
DELETE /portfolio/accounts/{accountId}/locations/{id} Remove location from portfolio account #
GET /portfolio/accounts/{accountId}/locations/{id} Get location on portfolio account #
GET /portfolio/accounts/{accountId}/locations Get all locations on porfolio account #
PUT /portfolio/accounts/{accountId}/users/{id} Create or update portfolio user #
DELETE /portfolio/accounts/{accountId}/users/{id} Delete user on portfolio account #
GET /portfolio/accounts/{accountId}/users/{id} Get user on portfolio account #
GET /portfolio/accounts/{accountId}/users Get all user on porfolio account #
PUT /users/{id} Creates or updates user #
DELETE /users/{id} Deletes user #
GET /users/{id} Gets user #
GET /users Gets multiple users #
POST /users/{id}/notification Sends notifications to user #
GET /users/{id}/locations Gets user locations #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/data-management"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

eliq-data-management-api-openapi.json Raw ↑
{
  "openapi": "3.0.1",
  "info": {
    "title": "Eliq Data Management API",
    "description": "\r\n# API Reference\r\n\r\nThe Eliq data management API is organized around REST. The API accepts JSON-encoded request bodies, returns JSON-encoded responses and uses standard HTTP response codes. The URLs are all resource oriented around Eliq's three main entities; User, Location and Meter\r\n\r\n# Errors\r\n\r\nEliq Integration API uses standard HTTP response codes to indicate success or failure of a request. Codes with 2xx indicate success, 4xx indicate error due to invalid input, and 5xx indicates an error in Eliq Integration API.\r\n\r\n## Status codes\r\n\r\n*Status code* | *Description*\r\n--- | ---\r\n200 - OK | Everything worked as expected.\r\n201 - Created | Resource created.\r\n202 - Accepted | Successful request, and will be handled later. A reference id will be available in the response body.\r\n204 - No Content | Successful request. Used in successful delete requests\r\n400 - Bad Request | Request input data is invalid.\r\n401 - Unauthorized | Access token invalid for the given request. Eg. access token expired.\r\n404 - Not Found | Requested resource not found\r\n500, 502, 503, 504 | Something wrong with Eliq Integration API\r\n\r\n## Error body\r\n\r\nEliq Integration API returns an error response body on failures to provide additional information on the error. Please find the error body and description below.\r\n\r\n```json\r\n{\r\n    \"code\":\"< ERROR CODE >\",\r\n    \"description\":\"< DESCRIPTION OF ERROR >\",\r\n    \"request_id\":\"16a3ae43-ca5f-455e-9aef-f93679bedc8d\"\r\n}\r\n```\r\n\r\n*Field* | *Type* | *Description*\r\n--- | --- | ---\r\ncode | String | Error code. Possible error codes per request can be found in each request section. Error codes do not change, and can be used to tie actions to.\r\ndescription | String | A description of the error for developers\r\nrequest_id | String | Identifier of the request. Passed when in contact with support\r\n\r\n## Request ID\r\n\r\nEach API request has an associated request id. You can find this value in the response headers, under X-Request-Id. The request id can be used in communication with Eliq support.\r\n            ",
    "contact": {
      "name": "Support",
      "email": "support_b2b@eliq.com"
    },
    "version": "1.5.2"
  },
  "paths": {
    "/client-details/available-languages": {
      "get": {
        "tags": [
          "Client details"
        ],
        "summary": "Gets available languages for the users",
        "operationId": "get-availablelanguages",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "examples": {
                  "Mutiple available languages": {
                    "value": [
                      "nl-BE",
                      "en-GB",
                      "fr-FR",
                      "de-DE"
                    ]
                  },
                  "Single available language": {
                    "value": [
                      "en-GB"
                    ]
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "examples": {
                  "Mutiple available languages": {
                    "value": [
                      "nl-BE",
                      "en-GB",
                      "fr-FR",
                      "de-DE"
                    ]
                  },
                  "Single available language": {
                    "value": [
                      "en-GB"
                    ]
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Internal server error. If problem remains, please contact support": {
                    "value": {
                      "code": "INTERNAL_ERROR",
                      "description": "Internal server error. If problem remains, please contact support",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/jobs/{entity}/{operation}": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Create job based on entity and operation and provided file",
        "operationId": "create-job",
        "parameters": [
          {
            "name": "entity",
            "in": "path",
            "description": "Name of feature that will handle file.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "user"
          },
          {
            "name": "operation",
            "in": "path",
            "description": "Name of process used to identify if process will be upsert, delete or export data.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "upsert"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobEntry"
                },
                "examples": {
                  "Upsert Job": {
                    "value": {
                      "id": "f4e2b270-8099-493a-b733-824ce7e99fa2",
                      "reference": "job-reference-1",
                      "created_at_timestamp": "2026-09-06T22:06:51.2799367Z",
                      "state_updated_at_timestamp": "2026-09-06T22:06:51.2799394Z",
                      "entity": "user",
                      "operation": "upsert",
                      "state": "completed",
                      "number_of_rows": 10,
                      "number_of_successful_rows": 10,
                      "number_of_failed_rows": 0,
                      "file_format": "ndjson",
                      "type": "import"
                    }
                  },
                  "Export Job": {
                    "value": {
                      "id": "bf5e31a5-4b70-41fb-b0f6-a8372142befc",
                      "reference": "job-reference-2",
                      "created_at_timestamp": "2026-09-06T22:06:51.2800022Z",
                      "state_updated_at_timestamp": "2026-09-06T22:06:51.2800026Z",
                      "entity": "user",
                      "operation": "export",
                      "state": "completed",
                      "number_of_rows": 10,
                      "number_of_successful_rows": 10,
                      "number_of_failed_rows": 0,
                      "file_format": "ndjson",
                      "type": "export"
                    }
                  },
                  "Delete Job": {
                    "value": {
                      "id": "1a55f2f4-38f5-4ed0-99cb-6a389c405d1c",
                      "reference": "job-reference-3",
                      "created_at_timestamp": "2026-09-06T22:06:51.2800188Z",
                      "state_updated_at_timestamp": "2026-09-06T22:06:51.280019Z",
                      "entity": "user",
                      "operation": "delete",
                      "state": "completed",
                      "number_of_rows": 10,
                      "number_of_successful_rows": 10,
                      "number_of_failed_rows": 0,
                      "file_format": "ndjson",
                      "type": "import"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "No file provided. Make sure the name in content-disposition is set to 'content' and that a filename is set": {
                    "value": {
                      "code": "JOB_FILE_MISSING",
                      "description": "No file provided. Make sure the name in content-disposition is set to 'content' and that a filename is set",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "The provided file is too large": {
                    "value": {
                      "code": "JOB_FILE_TOO_LARGE",
                      "description": "The provided file is too large",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "No format provided for the file (file extension). Please refer to documentation for supported file formats": {
                    "value": {
                      "code": "JOB_FILE_FORMAT_MISSING",
                      "description": "No format provided for the file (file extension). Please refer to documentation for supported file formats",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "The file format provided is invalid. Please refer to documentation for supported file formats": {
                    "value": {
                      "code": "JOB_FILE_FORMAT_INVALID",
                      "description": "The file format provided is invalid. Please refer to documentation for supported file formats",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "No filename provided (a.k.a. 'reference'). Please refer to documentation for filename limitations": {
                    "value": {
                      "code": "JOB_FILE_NAME_MISSING",
                      "description": "No filename provided (a.k.a. 'reference'). Please refer to documentation for filename limitations",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "The name of the file is invalid (a.k.a. 'reference'). Please refer to documentation for filename limitations": {
                    "value": {
                      "code": "JOB_FILE_NAME_INVALID",
                      "description": "The name of the file is invalid (a.k.a. 'reference'). Please refer to documentation for filename limitations",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "A job is already associated with the provided file name (a.k.a. 'reference').": {
                    "value": {
                      "code": "JOB_REFERENCE_ALREADY_EXISTS",
                      "description": "A job is already associated with the provided file name (a.k.a. 'reference').",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "The provided entity is invalid. This may be due to that it is not yet supported": {
                    "value": {
                      "code": "JOB_ENTITY_INVALID",
                      "description": "The provided entity is invalid. This may be due to that it is not yet supported",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "The provided operation for entity is invalid. This may be due to that it is not yet supported": {
                    "value": {
                      "code": "JOB_OPERATION_INVALID",
                      "description": "The provided operation for entity is invalid. This may be due to that it is not yet supported",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Job with specified id could not be found": {
                    "value": {
                      "code": "JOB_NOT_FOUND",
                      "description": "Job with specified id could not be found",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Internal server error. If problem remains, please contact support": {
                    "value": {
                      "code": "INTERNAL_ERROR",
                      "description": "Internal server error. If problem remains, please contact support",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/jobs/{jobId}/cancel": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Cancel job before it is finished by job id",
        "operationId": "cancel-job",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "Job Id - Guid",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "69510063-ae87-ef11-8474-000d3a3a3c76"
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "Job cancelled": {
                    "value": "69510063-ae87-ef11-8474-000d3a3a3c76"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Job is already canceled": {
                    "value": {
                      "code": "JOB_IS_CANCELLED",
                      "description": "Job is already canceled",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "Job is already completed": {
                    "value": {
                      "code": "JOB_IS_COMPLETED",
                      "description": "Job is already completed",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "Job state cannot be changed": {
                    "value": {
                      "code": "JOB_STATE_CANNOT_BE_CHANGED",
                      "description": "Job state cannot be changed",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "Failed to identify job state": {
                    "value": {
                      "code": "FAILED_TO_IDENTIFY_JOB_STATE",
                      "description": "Failed to identify job state",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Internal server error. If problem remains, please contact support": {
                    "value": {
                      "code": "INTERNAL_ERROR",
                      "description": "Internal server error. If problem remains, please contact support",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/jobs": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get jobs based on job state, id or name reference.",
        "operationId": "get-jobs",
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Reference given to job when creating it",
            "schema": {
              "type": "string"
            },
            "example": "file-1"
          },
          {
            "name": "state",
            "in": "query",
            "description": "State of job",
            "schema": {
              "type": "string"
            },
            "example": "received"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum count of jobs to return, (max: 500)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            },
            "example": 400
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobEntry"
                  }
                },
                "examples": {
                  "Get Jobs example": {
                    "value": [
                      {
                        "id": "69510063-ae87-ef11-8474-000d3a3a3c76",
                        "reference": "job-reference-1",
                        "created_at_timestamp": "2024-01-01T12:00:00Z",
                        "state_updated_at_timestamp": "2024-01-01T13:00:00Z",
                        "entity": "test",
                        "operation": "upsert",
                        "state": "queued",
                        "number_of_rows": 10,
                        "number_of_successful_rows": 10,
                        "number_of_failed_rows": 0,
                        "file_format": "ndjson",
                        "type": "import"
                      },
                      {
                        "id": "d11191ef-57db-49d4-88b1-db918b674b2b",
                        "reference": "job-reference-2",
                        "created_at_timestamp": "2024-01-01T12:00:00Z",
                        "state_updated_at_timestamp": "2024-01-01T13:00:00Z",
                        "entity": "test",
                        "operation": "upsert",
                        "state": "canceled",
                        "number_of_rows": 10,
                        "number_of_successful_rows": 10,
                        "number_of_failed_rows": 0,
                        "file_format": "ndjson",
                        "type": "import"
                      },
                      {
                        "id": "2ce5e42f-4e16-41dc-9366-379937f56aa2",
                        "reference": "job-reference-3",
                        "created_at_timestamp": "2024-01-01T12:00:00Z",
                        "state_updated_at_timestamp": "2024-01-01T13:00:00Z",
                        "entity": "test",
                        "operation": "upsert",
                        "state": "completed",
                        "number_of_rows": 10,
                        "number_of_successful_rows": 10,
                        "number_of_failed_rows": 0,
                        "file_format": "ndjson",
                        "type": "import"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Job with specified id could not be found": {
                    "value": {
                      "code": "JOB_NOT_FOUND",
                      "description": "Job with specified id could not be found",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Internal server error. If problem remains, please contact support": {
                    "value": {
                      "code": "INTERNAL_ERROR",
                      "description": "Internal server error. If problem remains, please contact support",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/jobs/{jobId}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get Job details by job id",
        "operationId": "get-job",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "Job Id - Guid",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "69510063-ae87-ef11-8474-000d3a3a3c76"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobEntry"
                },
                "examples": {
                  "Get Job example": {
                    "value": {
                      "id": "69510063-ae87-ef11-8474-000d3a3a3c76",
                      "reference": "job-reference-1",
                      "created_at_timestamp": "2024-01-01T12:00:00Z",
                      "state_updated_at_timestamp": "2024-01-01T13:00:00Z",
                      "entity": "test",
                      "operation": "upsert",
                      "state": "completed",
                      "number_of_rows": 10,
                      "number_of_successful_rows": 10,
                      "number_of_failed_rows": 0,
                      "file_format": "ndjson",
                      "type": "import"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Job with specified id could not be found": {
                    "value": {
                      "code": "JOB_NOT_FOUND",
                      "description": "Job with specified id could not be found",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  },
                  "The job result is not found. This may be due to that the result has been removed. Please refer to documentation for result lifetime.": {
                    "value": {
                      "code": "JOB_RESULT_NOT_FOUND",
                      "description": "The job result is not found. This may be due to that the result has been removed. Please refer to documentation for result lifetime.",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Internal server error. If problem remains, please contact support": {
                    "value": {
                      "code": "INTERNAL_ERROR",
                      "description": "Internal server error. If problem remains, please contact support",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/jobs/{jobId}/failures": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get errors and details from job.",
        "operationId": "get-job-failures",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "Job Id - Guid",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "69510063-ae87-ef11-8474-000d3a3a3c76"
          },
          {
            "name": "after_row_number",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobFailedRow"
                  }
                },
                "examples": {
                  "Get Job Failures example": {
                    "value": [
                      {
                        "row_number": 1,
                        "error_code": "Error message 1",
                        "error_description": "Error details 1"
                      }
                    ]
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Job with specified id could not be found": {
                    "value": {
                      "code": "JOB_NOT_FOUND",
                      "description": "Job with specified id could not be found",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Internal server error. If problem remains, please contact support": {
                    "value": {
                      "code": "INTERNAL_ERROR",
                      "description": "Internal server error. If problem remains, please contact support",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/jobs/{jobId}/content": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get Job content - the .ndjson file provided as the input when the Job was created.",
        "operationId": "get-job-content",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "Job Id - Guid",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "69510063-ae87-ef11-8474-000d3a3a3c76"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "Energy High Resolution Upsert": {
                    "value": "{\"meter_id\":\"example-electricity-meter\",\"values\":[{\"interval_start\":\"2025-09-01T00:00:00Z\",\"energy_wh\":638},{\"interval_start\":\"2025-09-01T01:00:00Z\",\"energy_wh\":757}]}"
                  },
                  "Location Upsert": {
                    "value": "{\"user_id\":\"example-user-id-1\",\"id\":\"example-location-id-1\",\"address\":{\"country_code\":\"SE\",\"postal_code\":\"41537\",\"street_address\":\"Address\",\"city\":\"Gothenburg\"}}"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Job with specified id could not be found": {
                    "value": {
                      "code": "JOB_NOT_FOUND",
                      "description": "Job with specified id could not be found",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                },
                "examples": {
                  "Internal server error. If problem remains, please contact support": {
                    "value": {
                      "code": "INTERNAL_ERROR",
                      "description": "Internal server error. If problem remains, please contact support",
                      "request_id": "65e2ea86-470f-4363-9295-35d6b473981a"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/jobs/{jobId}/result": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get Job result. Export include result object containing exported details.",
        "operationId": "get-job-result",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "Job Id - Guid",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "69510063-ae87-ef11-8474-000d3a3a3c76"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
       

# --- truncated at 32 KB (519 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eliq/refs/heads/main/openapi/eliq-data-management-api-openapi.json