Errors

Errors

Error responses, HTTP status codes and every error code, with the errors integrators hit most often.

Errors

Both Eliq APIs report errors the same way: an HTTP status plus a JSON body with a stable code. Branch on code, not on description, which can change. The most common errors below come from what integrators actually hit in production.

Error response

The Data Management API returns code, description and request_id. The Insights API returns code and description.

{
  "code": "LOCATION_NOT_FOUND",
  "description": "Location with given id could not be found",
  "request_id": "733d3cf1-8cd6-4f0b-90b8-605b7e965464"
}

HTTP status codes

HTTPMeaningWhat to doRetry
400The request is invalid. The code says what is wrong.Fix the request. Sending it again fails the same way.No
401The token is missing, has expired, or was issued for another API.Get a new token with the right aud, then retry once.Once, with a new token
403The token is valid but not allowed to do this.Check the token scopes with Eliq.No
404The resource does not exist.Check the id, or create the resource first.No
409The request conflicts with the current state.Read the resource, then try again.After reading
429Too many requests.Slow down and retry with exponential backoff. For bulk loads, use Jobs.Yes, with backoff
500Something failed on Eliq’s side.Retry with backoff. If it persists, contact Eliq with the request_id.Yes, with backoff
502, 503, 504Eliq is briefly unavailable.Retry with backoff.Yes, with backoff

Most common errors

These are the errors integrators run into most often in production, most frequent first. Most of them are avoided by caching reads, refreshing tokens in time, and only sending data that has changed.

RequestHTTPCodesWhat to do
PUT /integration/api/v1/meters/{meter_id}400METER_FUEL_CANNOT_BE_UPDATED, METER_TYPE_CANNOT_BE_UPDATED, METER_CANNOT_BE_MOVED, METER_MODEL_INVALIDFuel, type and location cannot change on an existing meter. Send a meter only when it changes, not on every sync.
GET /v3/locations/{location_id}/euc400Energy Usage Categories codesThe location lacks data or profile answers. See Data requirements, and cache the result instead of asking on every view.
GET /v3/users/{user_id}, /v3/clients, /v3/locations401noneThe user token has expired. Refresh it before the next call.
GET /v3/locations/{location_id}/advice429TOO_MANY_REQUESTSBack off. Advice changes slowly, so cache it.
POST /integration/api/v1/meters/{meter_id}/energy/highres/{resolution}429TOO_MANY_REQUESTSSend fewer, larger uploads, or use Jobs for bulk loads.
GET /v3/locations/{location_id}/similarhomes (also /report and /consumption)400Similar Homes codesThe home profile is too thin, or there are too few comparable homes for the period.
GET /v3/locations/{location_id}/homeprofile/image404noneNo image is stored. Treat it as empty.
GET /v3/locations/{location_id}/marketprice/prices404noneNo prices for the location. Check that spot_price_region_id is set.
POST /integration/api/v1/meters/{meter_id}/priceformulas429 and 400TOO_MANY_REQUESTS and price formula codesPost a formula only when the tariff changes.
GET /v3/locations/{location_id}/euc500INTERNAL_ERRORRetry later with backoff.

Error codes

Every code the APIs can return, grouped by area. The list for the Data Management API is generated from the Eliq platform code.

Insights API

CodeHTTPMeaning
NOT_ENOUGH_DATA_POINTS400Energy Usage Categories: not enough data for the requested period
DAILY_RESOLUTION_OR_BETTER_REQUIRED_FOR_CUSTOM_PERIOD400Energy Usage Categories: a custom period needs daily or hourly data
NOT_SUPPORTED_PROFILE_TYPE400Energy Usage Categories: the location profile type is missing or not supported
HOUSE_TYPE_REQUIRED_FOR_EUC400Energy Usage Categories: set house_type on the home profile
NOT_ENOUGH_HOME_PROFILE_OPTIONS_SET400Energy Usage Categories: answer the questions tagged required_for_euc_to_work
BUSINESS_TYPE_REQUIRED_FOR_EUC400Energy Usage Categories: set the business type
NOT_ENOUGH_BUSINESS_PROFILE_OPTIONS_SET400Energy Usage Categories: set all required business profile options
EUC_NOT_SUPPORTED_FOR_BUSINESS_TYPE400Energy Usage Categories: not available for this business type
SOLAR_PANELS_ARE_NOT_SUPPORTED_IN_EUC400Energy Usage Categories: not available for homes with solar panels
NO_CONSUMPTION_DATA_FOR_SOLAR_LOCATION400Energy Usage Categories: solar is selected but Eliq has no consumption data for the location
NO_CATEGORIES_IDENTIFIED400Energy Usage Categories: no categories could be identified for the location
HOME_PROFILE_INSUFFICIENT_FOR_SIMILAR_HOMES400Similar Homes: the home profile is not sufficient
NOT_ENOUGH_SIMILAR_HOMES_CONTRIBUTORS400Similar Homes: not enough comparable homes for the period
NO_MATCHING_SIMILAR_HOMES_GROUP400Similar Homes: no group matches the home profile; check that it is set correctly
NO_PRICE_INFORMATION400Similar Homes: no price information for the location in the period
MISSING_FROM400The from parameter is missing
MISSING_TO400The to parameter is missing
MISSING_RESOLUTION400The resolution parameter is missing
INVALID_RESOLUTION400The resolution is not supported for this endpoint
MISSING_FUEL400The fuel parameter is missing
INVALID_FUEL400The fuel is not supported
MISSING_UNIT400The unit parameter is missing
INVALID_UNIT400The unit is not supported
INVALID_PARAMETER400A parameter is invalid; the description names it
LOCATION_NOT_FOUND404The location does not exist

Common to all Data Management requests

CodeHTTPMeaning
NOT_ALLOWED_TO_PERFORM_REQUEST403Not allowed to perform request
INTERNAL_ERROR500Internal server error. If problem remains, please contact support
INPUT_MISSING400Request input is missing. This may be caused by incorrect format of input.
RESOURCE_LOCK_TIMEOUT400Attempt to update a resource that is already being updated by another process
DATASOURCE_OPERATION_FAILED500Datasource operation failed. If problem remains, please contact support
DATE_RANGE_MISSING400Missing parameters 'from' and 'to'. This may be caused by incorrect date format, please refer to documentation
FROM_MISSING400From date is missing. This may be caused by incorrect date format, please refer to documentation
TO_MISSING400To date is missing. This may be caused by incorrect date format, please refer to documentation
DATE_RANGE_INVALID400Date range is invalid i.e. 'from' date is after 'to' date
DATE_RANGE_LIMIT_EXCEEDED400Maximum range between 'from' and 'to' exceeded. Please refer to documentation
CLIENT_CONVERSION_RATE_NOT_FOUND400No m3 to Wh conversion rate is configured for the client. Send energy_wh instead, or contact support to configure the rate
JOB_IS_CANCELLED400Job is already canceled
JOB_IS_COMPLETED400Job is already completed
JOB_STATE_CANNOT_BE_CHANGED400Job state cannot be changed
FAILED_TO_IDENTIFY_JOB_STATE400Failed to identify job state
JOB_NOT_FOUND404Could not find job
JOB_MUST_NOT_BE_NULL400Job must not be null
JOB_MISSING_OPERATION400Job operation is missing
JOB_INVALID_OPERATION400Job operation is invalid
JOB_MISSING_ENTITY400Job entity is missing
JOB_INVALID_ENTITY400Job entity is invalid
JOB_MISSING_REFERENCE400Job reference is missing
JOB_INVALID_REFERENCE400Job reference is invalid
JOB_MISSING_FILE_FORMAT400Job file format is missing
JOB_INVALID_FILE_FORMAT400Job file format is invalid
JOB_REFERENCE_ALREADY_EXIST400Job reference already exists

Locations, meters and users

CodeHTTPMeaning
LOCATION_NOT_FOUND404Location with given id could not be found
LOCATION_ID_MISMATCH400Parameter 'id' does not match 'id' provided in the URI
LOCATION_ID_MISSING400Parameter 'id' must not be null or empty
LOCATION_USER_ID_MISSING400Parameter 'user_id' must not be null or empty
LOCATION_ADDRESS_MISSING400Parameter 'address' must not be null
LOCATION_ADDRESS_POSTAL_CODE_OR_CITY_MISSING400Parameter 'address.postal_code' or 'address.city' must be provided if 'geo' is not provided
LOCATION_ADDRESS_COUNTRY_CODE_MISSING400Parameter 'address.country_code' must not be null or empty
LOCATION_USER_NOT_FOUND400User with given 'user_id' could not be found
LOCATION_CANNOT_BE_MOVED400A location with the same id already exists for another user. A location cannot be moved between users.
LOCATION_ADDRESS_COUNTRY_CODE_INVALID400Parameter 'address.country_code' is invalid
LOCATION_GEO_LATITUDE_MISSING400Parameter 'geo.latitude' must not be null
LOCATION_GEO_LATITUDE_INVALID400Parameter 'geo.latitude' is invalid. It must be in the range between -90 and 90
LOCATION_GEO_LONGITUDE_MISSING400Parameter 'geo.longitude' must not be null
LOCATION_GEO_LONGITUDE_INVALID400Parameter 'geo.longitude' is invalid. It must be in the range between -180 and 180
LOCATION_SPOT_PRICE_REGION_NOT_FOUND400Spot price region with given 'spot_price_region_id' could not be found.
EXCESSIVE_REQUESTS_FOR_THE_SAME_LOCATION400Too many requests to add the same location were created, please try again later.
MULTIPLE_LOCATIONS_FOUND_WITH_SAME_ID500Multiple locations were found with the same id
METER_NOT_FOUND404Meter with given id could not be found
METER_ID_MISMATCH400Parameter 'id' does not match 'id' provided in the URI
METER_ID_MISSING400Parameter 'id' must not be null or empty
METER_MODEL_DOES_NOT_SUPPORT_READS400Meter associated with provided id does not support meter reads.
METER_MODEL_INVALID400Invalid meter model
METER_MODEL_MISSING400Parameter 'model' must not be null or empty
METER_SUPPLY_START_DATE_MISSING400Parameter 'supply_start_date' must not be null or empty. This may be caused by incorrect date format, please refer to documentation
METER_LOCATION_ID_MISSING400Parameter 'location_id' must not be null or empty
METER_FUEL_MISSING400Parameter 'fuel' must not be null or empty
METER_FUEL_INVALID400Invalid meter fuel. Must be one of 'elec', 'gas' or 'district_heating'
METER_FUEL_CANNOT_BE_UPDATED400Fuel type for Meter cannot be updated
METER_TYPE_MISSING400Parameter 'type' must not be null or empty
METER_TYPE_INVALID400Invalid meter type. Must be one of 'import', 'export', 'consumption' or 'production'
METER_TYPE_CANNOT_BE_UPDATED400Direction type for Meter cannot be updated
METER_LOCATION_NOT_FOUND400Location with given 'location_id' could not be found
METER_CANNOT_BE_MOVED400A meter with the same id already exists for another location. A meter cannot be moved between users.
CATEGORY_PERCENTAGE_IS_INVALID400Category percentage is invalid
CATEGORY_CLIENT_IS_INVALID400Category is invalid
CATEGORY_PERCENTAGE_CLIENT_SHOULD_BE_NULL400Category percentage should be null
CATEGORY_CLIENT_CANNOT_BE_NULL400Category cannot be null
GAS_CANNOT_BE_EXPORTED400Gas cannot be exported
EXPORT_DUPLICATE_FOUND400Duplicate Meter, Direction: Export, already exist
IMPORT_DUPLICATE_FOUND400Duplicate Meter, Direction: Import, already exist
ELEC_EXPORT_DUPLICATE_FOUND400Duplicate Meter, Fuel: Elec, Direction: Export, already exist
ELEC_IMPORT_DUPLICATE_FOUND400Duplicate Meter, Fuel: Elec, Direction: Import, already exist
EXCESSIVE_REQUESTS_FOR_THE_SAME_METER400Too many requests to add the same meter were created, please try again later.
MULTIPLE_METERS_FOUND_WITH_SAME_ID500Multiple meters found with the same id
METER_TYPE_MUST_BE_IMPORT_FOR_DISTRICT_HEATING400Direction type must be 'import' for district heating meters
METER_CUSTOM_NOT_SUPPORTED400The provided custom properties are not supported
USER_NOT_FOUND404User with given id could not be found
USER_NOT_FOUND_BY_EMAIL404User with given email could not be found
MULTIPLE_USERS_FOUND_WITH_SAME_EMAIL404More than one user was found with the same email
USER_ID_MISMATCH400Parameter 'id' does not match 'id' provided in the URI
USER_ID_MISSING400Parameter 'id' must not be null or empty
USER_EMAIL_INVALID400Email is invalid
USER_PHONE_INVALID400Phone number is invalid
USER_EMAIL_DUPLICATE400A user with the provided email already exist
EXCESSIVE_REQUESTS_FOR_THE_SAME_USER400Too many requests to add the same User were created, please try again later.
USER_LANGUAGE_CODE_INVALID400Language code is invalid
USER_LANGUAGE_CODE_MISSING400Language code is missing
USER_TIME_ZONE_MISSING400Time zone is missing
USER_TIME_ZONE_INVALID400Time zone is invalid
USER_CUSTOM_NOT_SUPPORTED400The provided custom properties are not supported

Energy data and meter reads

CodeHTTPMeaning
ENERGY_SEQUENCE_LENGTH_LIMIT_EXCEEDED400Maximum limit of element per request exceeded. Please refer to documentation for more information
ENERGY_ELEMENT_DATE_MISSING400Element in sequence missing parameter 'date'. This may be caused by incorrect date format, please refer to documentation
ENERGY_ELEMENT_ENERGY_WH_AND_ENERGY_M3_MISSING400Element in sequence must have either parameter 'energy_wh' or 'energy_m3'
ENERGY_ELEMENT_BOTH_ENERGY_WH_AND_ENERGY_M3_SET400Element in sequence must have either parameter 'energy_wh' or 'energy_m3' but not both
ENERGY_ELEMENT_ENERGY_M3_ON_UNSUPPORTED_FUEL_METER400Element in sequence has 'energy_m3' but the meter's fuel does not support it. 'energy_wh' is supported
ENERGY_SEQUENCE_CONTAINS_DUPLICATE_ELEMENTS400Energy elements in sequence must be unique
ENERGY_ELEMENT_ENERGY_WH_INVALID400Parameters 'energy_wh' and 'energy_m3' must not be negative
ENERGY_ELEMENT_CONTAINS_DUPLICATE_REGISTERS400Registers in 'registers[]' must be unique
ENERGY_ELEMENT_REGISTER_ID_MISSING400Parameter 'registers[].id' must not be null or empty
ENERGY_ELEMENT_REGISTER_ENERGY_WH_INVALID400Parameters 'registers[].energy_wh' and 'registers[].energy_m3' must not be negative
ENERGY_ELEMENT_REGISTER_ENERGY_WH_MISSING400Parameter 'registers[].energy_wh' must not be null
ENERGY_ELEMENT_REGISTER_ENERGY_WH_AND_ENERGY_M3_MISSING400Element in sequence must have either parameter 'registers[].energy_wh' or 'registers[].energy_m3'
ENERGY_ELEMENT_REGISTER_BOTH_ENERGY_WH_AND_ENERGY_M3_SET400Element in sequence must have either parameter 'registers[].energy_wh' or 'registers[].energy_m3' but not both
REGISTERS_ENERGY_WH_SUM_NOT_MATCH_DATA_ENERGY_WH400Parameter 'registers' elements 'energy_wh' sum have to be identical to parameter 'energy_wh'
ENERGY_DAILY_DATE_IS_OUTSIDE_METER_SUPPLY_DATE_RANGE400Parameter 'date' cannot be outside range of meter SupplyStartDate -> SupplyEndDate range
RESOLUTION_MISSING400Resolution must not be null or empty
RESOLUTION_INVALID400Invalid resolution. Must be one of: [hour, 30min, 15min, 10min, 6min]
ENERGY_ELEMENT_INTERVAL_START_MISSING400Parameter 'interval_start' must not be null. This may be caused by incorrect datetime format, please refer to documentation
ENERGY_ELEMENT_INTERVAL_START_DATE_INVALID_FOR_RESOLUTION400Parameter 'interval_start' must align with given resolution (eg. 'xx:00:00' for hourly, 'xx:00:00' and 'xx:30:00' for 30min). Please refer to documentation for more information
GAP_IN_ENERGY_DATE_INTERVAL400Gap not matching resolution size between 'interval_start' dates have been found.
ENERGY_INTERVAL_START_DATE_IS_OUTSIDE_METER_SUPPLY_DATE_RANGE400Parameter 'interval_start' must be between meter SupplyStartDate and SupplyEndDate dates.
ENERGY_MONTHLY_DATA_MUST_NOT_BE_NULL400Request body 'energyMonthlyData' must not be null or empty
SEQUENCE_MUST_NOT_CONTAIN_DUPLICATE_DATES400Sequence contains duplicate date ranges
ENERGY_WH_OR_ENERGY_M3_MUST_NOT_BE_NULL400Either 'energy_wh' or 'energy_m3' must be provided
ENERGY_WH_AND_ENERGY_M3_MUST_NOT_BE_PROVIDED_TOGETHER400'energy_wh' and 'energy_m3' cannot be provided together
ENERGY_M3_MUST_NOT_BE_ADDED_ON_UNSUPPORTED_FUEL_METER400'energy_m3' cannot be used on a meter whose fuel type does not support it
FROM_MISSING400Parameter 'from' is missing or invalid
TO_MISSING400Parameter 'to' is missing or invalid
DATE_RANGE_INVALID400Date range is invalid i.e. 'to' date is not after 'from' date
REGISTERS_ENERGY_MUST_NOT_BE_NULL400Parameter 'registers[].energy_wh' must not be null
REGISTERS_ID_CANNOT_BE_NULL400Parameter 'registers[].id' must not be null or empty
REGISTERS_CANNOT_HAVE_SAME_ID400Registers contain duplicate 'id' values
READ_SEQUENCE_LENGTH_LIMIT_EXCEEDED400Maximum limit of element per request exceeded. Please refer to documentation for more information
READ_ELEMENT_DATE_MISSING400Element in sequence missing parameter 'date'. This may be caused by incorrect date format, please refer to documentation
READ_ELEMENT_REGISTERS_MISSING400Element in sequence missing parameter 'registers'
READ_SEQUENCE_CONTAINS_DUPLICATE_ELEMENTS400Energy elements in sequence must be unique
READ_ELEMENT_CONTAINS_DUPLICATE_REGISTERS400Registers in 'registers[]' must be unique
READ_ELEMENT_REGISTER_ID_MISSING400Parameter 'registers[].id' must not be null or empty
READ_ELEMENT_REGISTER_INDEX_INVALID400Parameter 'registers[].index' must not be negative
READ_ELEMENT_REGISTER_INDEX_MISSING400Parameter 'registers[].index' must not be null
READ_ELEMENT_QUALITY_MISSING400Parameter 'quality' must not be null
READ_ELEMENT_QUALITY_INVALID400Parameter 'quality' invalid. Should be one of 'normal' or 'estimated'
READ_ELEMENT_SOURCE_MISSING400Parameter 'source' must not be null
READ_ELEMENT_SOURCE_INVALID400Parameter 'source' invalid. Should be one of 'customer', 'utility', 'smr' or 'system'
READ_ELEMENT_STATUS_MISSING400Parameter 'status' must not be null
READ_ELEMENT_STATUS_INVALID400Parameter 'status' invalid. Should be one of 'accepted' or 'pending'
READ_ELEMENT_UNIT_MISSING400Parameter 'unit' must not be null
READ_ELEMENT_UNIT_INVALID400Parameter 'unit' invalid. Should be 'kwh' or 'm3'
READ_ELEMENT_UNIT_M3_ON_UNSUPPORTED_FUEL_METER400Parameter 'unit' has value 'm3' but the meter's fuel does not support it. 'kwh' is supported

Price formulas

CodeHTTPMeaning
PRICE_FORMULA_NOT_FOUND404Price formula for the given 'meter_id' and 'from' date was not found.
PRICE_FORMULA_CURRENCY_CODE_INVALID400Parameter 'currency_code' invalid
PRICE_FORMULA_CURRENCY_CODE_MISSING400Parameter 'currency_code' must not be null or empty
PRICE_FORMULA_MUST_NOT_BE_NULL400Price formula cannot be null or empty
PRICE_FORMULA_METER_NOT_FOUND400Meter with the given 'meter_id' could not be found. Meter was either deleted or not imported.
PRICE_FORMULA_TO_DATE_MISSING400Parameter 'to' must not be null or empty. This may be caused by incorrect format of input.
PRICE_FORMULA_FROM_DATE_MISSING400Parameter 'from' must not be null or empty. This may be caused by incorrect format of input.
PRICE_FORMULA_FROM_DATE_INVALID400Parameter 'from' must not be in the same date or after parameter 'to'.
PRICE_FORMULA_ELEMENTS_MISSING400Parameter 'elements' must not be null or empty.
PRICE_FORMULA_FUEL_MISSING400Parameter 'fuel' must not be null
PRICE_FORMULA_FUEL_INVALID400Parameter 'fuel' invalid
PRICE_FORMULA_DIRECTION_MISSING400Parameter 'direction' must not be null
PRICE_FORMULA_DIRECTION_INVALID400Parameter 'direction' invalid
PRICE_FORMULA_TARIFF_ID_MISSING400Parameter 'tariff_id' must not be null
PRICE_FORMULA_TARIFF_ID_INVALID400Parameter 'tariff_id' invalid. Must be 100 characters or less
PRICE_FORMULA_TYPE_MISSING400Parameter 'type' must not be null
PRICE_FORMULA_TYPE_INVALID400Parameter 'type' invalid. Must be one of: ['import', 'export']
PRICE_FORMULA_PRICE_MULTIPLIER_INVALID400Parameter 'price_multiplier' invalid. Must be greater than 0 and less than 1000
INVALID_PRICE_FORMULA_SOURCE400Invalid parameter source. Only 'client' or 'user' is valid.
PRICE_FORMULA_ALREADY_ADDED_BY_SOURCE_CLIENT400Price formula already added by source 'client'. Cannot add price formula by source 'user' if price formula by source 'Client' is already added.
INVALID_PRICE_FORMULA_ENERGY_UNIT400Parameter 'energy_unit' invalid. Only 'kwh' or 'm3' is valid.
PRICE_FORMULA_DUPLICATES_FOUND400Found multiple price formulas starting from the same 'from' date.
PRICE_FORMULA_FROM_DATE_IS_OVERLAP_EXISTING_PRICE_FORMULA400Parameter 'from' cannot overlap with already existing price formula.
PRICE_FORMULA_TO_DATE_IS_OVERLAP_EXISTING_PRICE_FORMULA400Parameter 'to' cannot overlap with already existing price formula.
PRICE_FORMULA_FROM_DATE_OUTSIDE_DEVICE_SUPPLY_DATE_RANGE400Parameter 'from' cannot be outside device supply date range (start -> end dates).
PRICE_FORMULA_ELEMENT_NAME_MISSING400Parameter 'element[].name' must not be null or empty.
PRICE_FORMULA_ELEMENT_CHARGE_INVALID400Parameter 'elements[].unit_rate' must be null for 'elements[].type = charge'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_INVALID400Parameter 'elements[].charge' must be null for 'elements[].type = unit_rate'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_MISSING400Parameter 'elements[].unit_rate' must not be null or empty for 'elements[].type = unit_rate'.
PRICE_FORMULA_ELEMENT_CHARGE_MISSING400Parameter 'elements[].charge' must not be null or empty for 'elements[].type = charge'.
PRICE_FORMULA_ELEMENT_TYPE_INVALID400Parameters 'elements[].type' is invalid. Must be one of: ['charge', 'unit_rate']
PRICE_FORMULA_ELEMENT_TYPE_MISSING400Parameters 'elements[].type' cannot be null or empty.
PRICE_FORMULA_ELEMENT_CHARGE_RESOLUTION_MISSING400Parameter 'elements[].charge.resolution' must not be null or empty for 'elements[].type = charge'.
PRICE_FORMULA_ELEMENT_CHARGE_RESOLUTION_INVALID400Parameter 'elements[].charge.resolution' is invalid. Must be one of ['day', 'month'].
PRICE_FORMULA_ELEMENT_CHARGE_VALUE_MISSING400Parameter 'elements[].charge.charge' must not be null for 'elements[].type = charge'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TYPE_MISSING400Parameters 'elements[].unit_rate.type' cannot be null or empty.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TYPE_INVALID400Parameters 'elements[].unit_rate.type' is invalid. Must be one of: ['fixed', 'tou', 'nordpool', 'block']
PRICE_FORMULA_ELEMENT_UNIT_RATE_VALUE_FOR_TYPE_FIXED_INVALID400Parameters 'elements[].unit_rate.[tou,nordpool,block]' must be null for 'elements[].unit_rate.type = fixed'
PRICE_FORMULA_ELEMENT_UNIT_RATE_VALUE_FOR_TYPE_NORDPOOL_INVALID400Parameters 'elements[].unit_rate.[tou,fix,block]' must be null for 'elements[].unit_rate.type = nordpool'
PRICE_FORMULA_ELEMENT_UNIT_RATE_VALUE_FOR_TYPE_BLOCK_INVALID400Parameters 'elements[].unit_rate.[tou,fix,norpool]' must be null for 'elements[].unit_rate.type = block'
PRICE_FORMULA_ELEMENT_UNIT_RATE_VALUE_FOR_TYPE_TOU_INVALID400Parameters 'elements[].unit_rate.[block,fix,norpool]' must be null for 'elements[].unit_rate.type = tou'
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_MISSING400Parameters 'elements[].unit_rate.block' must not be null for 'elements[].unit_rate.type = block'
PRICE_FORMULA_ELEMENT_UNIT_RATE_FIXED_MISSING400Parameters 'elements[].unit_rate.fixed' must not be null for 'elements[].unit_rate.type = fixed'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_NORDPOOL_MISSING400Parameters 'elements[].unit_rate.nordpool' must not be null for 'elements[].unit_rate.type = nordpool'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TOU_MISSING400Parameters 'elements[].unit_rate.tou' must not be null for 'elements[].unit_rate.type = tou'
PRICE_FORMULA_UNIT_RATE_WEEKDAYS_VALUES_MISSING400Parameters 'elements[].unit_rate.weekdays' must not be empty'
PRICE_FORMULA_UNIT_RATE_WEEKDAYS_VALUES_INVALID400Parameters 'elements[].unit_rate.weekdays' values must only contain valid weekdays like 'Monday', 'Tuesday', 'Wednesday', etc.'
PRICE_FORMULA_UNIT_RATE_WEEKDAYS_VALUES_CONTAINS_DUPLICATES400Parameters 'elements[].unit_rate.weekdays' values must not contain any duplicates'
PRICE_FORMULA_ELEMENT_UNIT_RATE_FIXED_VALUE_MISSING400Parameters 'elements[].unit_rate.fixed.unit_rate' must not be null
PRICE_FORMULA_ELEMENT_UNIT_RATE_FIXED_VALUE_INVALID400Parameters 'elements[].unit_rate.fixed.unit_rate' must not be equal to 0 for 'elements[].unit_rate.type = fixed'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_SPOT_PRICE_MULTIPLIER_INVALID400Parameter 'elements[].unit_rate.spot_price.multiplier' must not be less than 0 for 'elements[].unit_rate.type = spot_price'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TOU_REGISTER_ID_MISSING400Parameters 'elements[].unit_rate.tou.register_id' must not be null for 'elements[].unit_rate.type = tou'.
CodeHTTPMeaning
PRICE_FORMULA_ELEMENT_UNIT_RATE_TOU_VALUE_MISSING400Parameters 'elements[].unit_rate.tou.unit_rate' must not be null for 'elements[].unit_rate.type = tou'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TOU_VALUE_INVALID400Parameters 'elements[].unit_rate.tou.unit_rate' must not be null, or equal to 0 for 'elements[].unit_rate.type = tou'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_VALUE_TOU_INTERVALS_MISSING400Parameters 'elements[].unit_rate.tou.intervals[]' must not be empty or null for 'elements[].unit_rate.type = tou'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TOU_INTERVALS_FROM_MINUTE_INVALID400Parameters 'elements[].unit_rate.tou.intervals[].from_minute' cannot be more than 1440 for 'elements[].unit_rate.type = tou'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TOU_INTERVALS_TO_MINUTE_INVALID400Parameters 'elements[].unit_rate.tou.intervals[].to_minute' cannot be more than 1440 for 'elements[].unit_rate.type = tou'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TOU_INTERVALS_TO_MINUTE_MISSING400Parameters 'elements[].unit_rate.tou.intervals[].to_minute' cannot be null for 'elements[].unit_rate.type = tou'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_TOU_INTERVALS_FROM_MINUTE_MISSING400Parameters 'elements[].unit_rate.tou.intervals[].from_minute' cannot be null or less than 0 for 'elements[].unit_rate.type = tou'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_REGISTER_ID_MISSING400Parameters 'elements[].unit_rate.block.register_id' must not be null or empty for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_VALUE_INVALID400Parameters 'elements[].unit_rate.block.unit_rate' must not be equal to 0 for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_FROM_KWH_INVALID400Parameters 'elements[].unit_rate.block.from_kwh' cannot be equal or bigger 'elements[].unit_rate.block.to_kwh' for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_FROM_KWH_MISSING400Parameters 'elements[].unit_rate.block.from_kwh' cannot be null for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_TO_KWH_MISSING400Parameters 'elements[].unit_rate.block.to_kwh' cannot be null for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_BLOCK_RESOLUTION_TYPE_INVALID400Parameters 'elements[].unit_rate.block.resolution' is invalid. Only valid values are 'day' and 'year' for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_BLOCK_RESOLUTION_TYPE_MISSING400Parameters 'elements[].unit_rate.block.resolution' cannot be null or empty for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_NORDPOOL_REGION_MISSING400Parameters 'elements[].unit_rate.nordpool.region' must not be null for 'elements[].unit_rate.type = nordpool'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_NORDPOOL_REGION_INVALID400Parameters 'elements[].unit_rate.nordpool.region' is invalid for 'elements[].unit_rate.type = nordpool'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_NORDPOOL_MULTIPLIER_INVALID400Parameters 'elements[].unit_rate.nordpool.multiplier' must not be equal or less than 0 for 'elements[].unit_rate.type = nordpool'.
PRICE_FORMULA_ELEMENT_NORDPOOL_RESOLUTION_TYPE_INVALID400Parameters 'elements[].unit_rate.nordpool.resolution' is invalid. Only valid value is 'hour'.
PRICE_FORMULA_ELEMENT_NORDPOOL_RESOLUTION_TYPE_MISSING400Parameters 'elements[].unit_rate.nordpool.resolution' cannot be null or empty.
PRICE_FORMULA_DEVICE_ID_MISSING400Parameter 'meter_id' must not be null or empty.
PRICE_FORMULA_ELEMENT_MISSING400Parameter 'element' must not be null or empty.
PRICE_FORMULA_ELEMENT_UNIT_RATE_VALUE_FOR_TYPE_SPOT_PRICE_INVALID400Parameters 'elements[].unit_rate.[tou,fix,block,nordpool]' must be null for 'elements[].unit_rate.type = spot_price'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_FROM_M3_INVALID400Parameters 'elements[].unit_rate.block.from_m3' is invalid for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_FROM_M3_MISSING400Parameters 'elements[].unit_rate.block.from_m3' cannot be null for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_BLOCK_TO_M3_MISSING400Parameters 'elements[].unit_rate.block.to_m3' cannot be null for 'elements[].unit_rate.type = block'.
PRICE_FORMULA_ELEMENT_UNIT_RATE_NORDPOOL_RESOLUTION_MISSING400Parameters 'elements[].unit_rate.nordpool.resolution' must not be null for 'elements[].unit_rate.type = nordpool'.
PRICE_FORMULA_UNIT_RATE_VALUE_TOU_INTERVALS_INCLUDED_WITH_SKIP_INTERVALS400Parameters 'elements[].unit_rate.tou.intervals[]' cannot be provided together with skip intervals.
PRICE_FORMULA_LOCATION_INVALID400Location for the price formula is invalid.
PRICE_FORMULA_UNIT_RATE_BLOCK_FROM_TO_KWH_NOT_ALLOWED_ENERGY_UNIT_M3400Parameters 'elements[].unit_rate.block.from_kwh/to_kwh' not allowed when energy unit is m3.
PRICE_FORMULA_UNIT_RATE_BLOCK_FROM_TO_M3_NOT_ALLOWED_ENERGY_UNIT_KWH400Parameters 'elements[].unit_rate.block.from_m3/to_m3' not allowed when energy unit is kwh.
PRICE_FORMULA_CHARGE_CAPACITY_TARIFF_MISSING400Parameter 'elements[].charge.capacity_tariff' must not be null.
PRICE_FORMULA_CHARGE_CAPACITY_TARIFF_CALCULATION_TYPE_MISSING400Parameter 'elements[].charge.capacity_tariff.calculation_type' must not be null.
PRICE_FORMULA_HAVE_DATE_RANGE_GAP_WITH_PREVIOUS_PRICE_FORMULA400Price formula has a date range gap with the previous price formula.
PRICE_FORMULA_HAVE_DATE_RANGE_GAP_WITH_NEXT_PRICE_FORMULA400Price formula has a date range gap with the next price formula.
PRICE_FORMULA_UNIT_RATE_SPOT_PRICE_MISSING400Parameters 'elements[].unit_rate.spot_price' must not be null for 'elements[].unit_rate.type = spot_price'.
PRICE_FORMULA_UNIT_RATE_SPOT_PRICE_REGION_MISSING400Parameters 'elements[].unit_rate.spot_price.region' must not be null for 'elements[].unit_rate.type = spot_price'.
PRICE_FORMULA_UNIT_RATE_SPOT_PRICE_REGION_INVALID400Parameters 'elements[].unit_rate.spot_price.region' is invalid for 'elements[].unit_rate.type = spot_price'.
PRICE_FORMULA_UNIT_RATE_SPOT_PRICE_RESOLUTION_MISSING400Parameters 'elements[].unit_rate.spot_price.resolution' must not be null for 'elements[].unit_rate.type = spot_price'.
MISSING_PRICE_FORMULA_CAPACITY_TARIFF_CALCULATION_TYPE400Parameter 'capacity_tariff.calculation_type' must not be null.
PRICE_FORMULA_CHARGE_TYPE_MISSING400Parameter 'elements[].charge.type' must not be null.
INVALID_PRICE_FORMULA_CHARGE_TYPE400Parameter 'elements[].charge.type' is invalid.
MISSING_PRICE_FORMULA_SPOT_PRICE_PROVIDER400Parameter 'elements[].unit_rate.spot_price.provider' must not be null.
MISSING_PRICE_FORMULA_SPOT_PRICE_RESOLUTION400Parameter 'elements[].unit_rate.spot_price.resolution' must not be null.
MISSING_PRICE_FORMULA_SPOT_PRICE_REGION400Parameter 'elements[].unit_rate.spot_price.region' must not be null.
INVALID_PRICE_FORMULA_SPOT_PRICE_RESOLUTION400Parameter 'elements[].unit_rate.spot_price.resolution' is invalid.
INVALID_PRICE_FORMULA_SPOT_PRICE_PROVIDER400Parameter 'elements[].unit_rate.spot_price.provider' is invalid.

Profiles and max demand

CodeHTTPMeaning
LOCATION_ID_MISSING400Parameter 'locationId' must not be null or empty
LOCATION_ID_MISMATCH400Parameter 'location_id' does not match 'locationId' provided in the URI
HOME_PROFILE_MISSING400Home profile must not be null
LOCATION_PROFILE_TYPE_INVALID_OR_MISSING400Location profile type must not be null, and can only be 'residential' or 'business'
LOCATION_PROFILE_MISSING400Location profile must not be null
PROFILE_TYPE_NOT_CONFIGURED400Location profile type is not configured
EXISTING_PROFILE_VALUES_FOUND400Can not change profile type for a configured profile with existing values
PROFILE_CONFIGURATION_NOT_FOUND404Location profile configuration not found
PROFILE_VALUE_NOT_FOUND404Location profile value not found for given id
DUPLICATE_FOUND400Max Demand for the same Meter and Date already exist
MISSING_INPUT404Missing Max Demand Input data
MISSING_UNIT_TYPE400Missing Unit Type
INVALID_MONTHLY_DAY400For Max Demand resolution monthly date have to be first day of the month
INVALID_DATE400Invalid date
NOT_SUPPORTED_UNIT_TYPE400Unit type is not supported
INVALID_FROM_DATE400Invalid From Date
INVALID_TO_DATE400Invalid To Date
MAX_DEMAND_NOT_FOUND404Max demand was not found
METER_ID_MISSING400Meter id is missing
MISSING_RESOLUTION400Missing resolution
NOT_SUPPORTED_RESOLUTION400Not Supported Resolution
MAX_DEMAND_RESOLUTION_NOT_SUPPORTED400Max demand resolution is not supported
MAX_DEMAND_LIMIT_NOT_FOUND404Max demand limit was not found
MIN_VALUE_BIGGER_OR_EQUAL_MAX_VALUE400Min value have to be smaller than Max value
TARGET_VALUE_SMALLER_THAN_MIN_VALUE400Target value cannot be smaller than Min value
TARGET_VALUE_BIGGER_THAN_MAX_VALUE400Target value cannot be bigger than Max Value

Retries and support

  • Retry only 429 and 5xx responses, with exponential backoff and a cap.
  • Never retry a 400 or 404 unchanged; fix the request first.
  • On 401, get a new token once, then retry once.
  • When you contact Eliq about an error, include the request_id, the time and the endpoint.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Updated on: 
Oct 17, 2026