Enode Developers



Keep track of updates and new API versions. More on versioning here.

  • Beta Release of Batteries and Meters


    Introducing two new hardware categories: `batteries` and `meters`.

    New BatteriesAPI Endpoints (Beta):

    New EndpointDescription
    GET /batteriesList all available batteries
    GET /batteries/{batteryId}Fetch detailed information about a specific battery
    GET /users/{userId}/batteriesList of batteries associated with a user
    POST /batteries/{batteryId}/operation-modeSet the operation mode for a specific battery
    GET /batteries/actions/{vendorActionId}Retrieve info about a specific battery action
    POST /batteries/actions/{vendorActionId}/cancelCancel a specific battery action
    POST /batteries/{batteryId}/refresh-hintInitiate a manual refresh for battery data
    GET /health/batteriesList the supported battery vendors and their current status.

    New MetersAPI Endpoints (Beta):

    New EndpointDescription
    GET /metersList all available meters
    GET /meters/{meterId}Fetch detailed information about a specific meter
    GET /users/{userId}/metersList of meters associated with a user
    POST /meters/{meterId}/refresh-hintInitiate a manual refresh for meter data
    GET /health/metersList the supported meter vendors and their current status.

    These new hardware categories are currently in beta. Developers are encouraged to provide feedback and report any issues. Refer to the API referenceAPI for in-depth details and integration steps.

  • New intervention endpoints


    Introducing endpoints to fetch detailed localized information for interventions.

    The response contains general information as well as more detailed information about the resolution of the intervention. The resolution description is Markdown formatted and is available in language-localized versions.

    Please refer to our updated Intervention guide and API referenceAPI for more detailed information.

    Copy linkNew endpoints:

    New endpointDescription
    GET /interventionsReturns a list of all known interventions
    GET /interventions/{interventionId}Returns a single intervention
  • Support for multiple webhooks


    Clients can now register and manage multiple webhooks.

    Deprecated endpoints:

    Deprecated EndpointDescription
    PUT /webhooks/firehoseReplaced by POST /webhooks for creating a webhook and PATCH /webhooks/{webhookId} for updating a webhook
    DELETE /webhooks/firehoseReplaced by DELETE /webhooks/{webhookId}
    POST /webhooks/firehose/testReplaced by POST /webhooks/{webhookId}/test

    New endpoints:

    New EndpointDescription
    POST /webhooksCreate a new webhook
    PATCH /webhooks/{webhookId}Update an existing webhook
    GET /webhooks/{webhookId}Fetch a webhook
    GET /webhooksList all webhooks (paginated)
    DELETE /webhooks/{webhookId}Delete a webhook
    POST /webhooks/{webhookId}/testTrigger a enode:firehose:test payload to be sent to the webhook. This will reset your webhook to a healthy state on success.

    Old firehose webhook is still accessible through the deprecated endpoints as well as the new endpoints. Use GET /webhooks to receive its id to start using the new endpoints.

  • Statistics endpoints interval selection bug fix


    Fixed a bug where some end dates were mistakenly "rounded up" to the next hour/day/year, resulting in extraneous data being included in the response.

    • Affected endpoints: /users/{userId}/statistics/charging, /statistics/charging, /users/{userId}/statistics/production and /statistics/production.
    • Before, for DAY resolution, an end date of 2023-08-03T00:00:00Z was rounded up to 2023-08-04T00:00:00Z.
    • Before, for MONTH resolution, an end date of 2023-08-01T00:00:00Z was rounded up to 2023-09-01T00:00:00Z.
    • Now, the end date is not rounded up. The same applies for all other resolutions.
    • To keep backwards compatibility, the old rounding behavior will still be used if the start time is equal to the end time.
  • Version 2023-08-01


    Clients can now list all their vehicles, chargers and other assets using paginated resources.

    1. Breaking Changes


    /vehiclesList all client vehicles, paginated.
    /chargersList all client chargers, paginated.
    /hvacsList all client HVAC units, paginated.
    /invertersList all client inverters, paginated.
    /meRemoved. Moved to /users/{userId}.
    /charging-locations/*Removed. Replaced by /locations.


    • Remove Enode-User-Id header. Requests with this header will fail.

    Hierarchy Changes:

    • Introduced /users as the top level for user-related resources due to change in authentication strategy.

    Other Changes:

    • Began renaming chargingLocationId to locationId across endpoints. Remove it entirely from Temperature Schedule.
    • Remove field from all asset types. Instead, you can now use <assets>/{assetId}/refresh-hint to initiate an accelerated data refresh, ie: /vehicles/{vehicleId}/refresh-hint.
    • /statistics/charging
      • Fields smartSession and nonSmartCostSum have been removed.
      • For non-smart charging, estimatedSavings is set to null.
    • /statistics/charging/sessions
      • Fields smartSession and smartStats.nonSmartCostSum have been removed.
      • The smartStats object has been removed.
      • The fields estimatedSavings and nonSmartPrice now appear at top level.
      • For non-smart charging sessions, estimatedSavings is set to null.
    • Legacy user access tokens are no longer supported on client-scoped resources. If your existing integration calls Enode with per-user access tokens, you should switch to using client credentialsAPI as part of upgrading to 2023-08-01.

    2. Removed Endpoints

    GET /meGET /users/{userId}
    DELETE /me/vendors/{vendor}DELETE /users/{userId}/vendor/{vendor}
    GET /schedulesGET /users/{userId}/schedules
    POST /schedulesPOST /users/{userId}/schedules

    3. New Endpoints

    New EndpointDescription
    GET /usersList all client users (paginated)
    GET /users/{userId}/vendor/{vendor}Vendor details
    GET /users/{userId}/vehiclesList all user vehicles (paginated)
    GET /users/{userId}/chargersList all user chargers (paginated)
    GET /users/{userId}/hvacsList all user HVAC units (paginated)
    GET /users/{userId}/invertersList all user inverters (paginated)
    /users/{userId}/statistics/*All statistic endpoints are moved behind /users/{userId}/
    GET /users/{userId}/schedulesList all user schedules (paginated)
    POST /users/{userId}/schedulesCreate a schedule for the user
    POST <assets>/{assetId}/refresh-hintInitiate an accelerated data refresh.

    4. Pagination

    We have introduced cursor-based pagination for all endpoints that return a list of resources. Reference: Pagination StrategyAPI

    Pass 2023-08-01 as your version header to use this new version.

  • Version 2023-05-01


    Temperature Schedules now support changing device modes. This allows access to the Permanent Hold and Follow Schedule endpoints through temperature schedules.

    EndpointChange description
    /schedules/{scheduleId} and /scheduleschargeableId and entityId have been replaced with targetId.
    /schedules/{scheduleId} and /scheduleschargeableType and entityType have been replaced with targetId.
    /schedules/{scheduleId} and /schedulesTemperature schedule: defaultTarget is replaced with defaultTargetState. Inside the rules array, both target and targetTemperature have been replaced with targetState.
    PUT /schedules/{scheduleId}Temperature Schedule: The object schema for the target state has been changed. The API now expects an object with at least a holdType, and possibly mode, coolSetpoint, and heatSetpoint. The holdType determines the kind of action sent to the device. Check out the Using Schedules guide for examples of valid objects.
    GET /schedules/{scheduleId}/statusThe externalStart object has been renamed to smartOverride.

    Pass 2023-05-01 as your version header to use this new version.

  • Version 2023-04-15


    A new version of the Vehicle Smart Charging Plan API has been released, which adds new failure conditions.

    EndpointChange description
    GET /vehicles/{vehicleId}/smart-charging-plans/{smartChargingPlanId}CHARGE_INTERRUPTED and FINISHED_EARLY have been added to the failureCondition enum. Review your code to ensure that it can handle these new failure conditions. This change should not affect any existing functionality. CHARGE_INTERRUPTED indicates that the charging process was interrupted before completion, while FINISHED_EARLY indicates that the charging process was completed more than 90 minutes earlier than planned.

    Pass 2023-04-15 as your version header to use this new version.

  • Improved Fidelity of OpenAPI Specification


    One OpenAPI Specification per API Version

    Going forward, we'll publish a separate specification file for each breaking change we release. As a result, each of the specifications will be simpler, as they don't have to include another version's schema. In addition, resource names such as Vehicle_2023_02_01 become just Vehicle. The new specifications are available through our API. To see a specific version, replace the latest argument with a version like 2023-05-01.

  • Version 2023-04-01


    A new version with breaking changes to smart charging. This version simplifies considerations further.

    EndpointChange description
    GET /vehicles/{vehicleId}/smart-charging-statusisSmartChargeCapable, singleUser, needsSignificantCharge, wontStopExistingChargingSession, hasChargeAboveThreshold and likelyToGenerateSavings considerations have been removed from the consideration object
    GET /vehicles/{vehicleId}/smart-charging-statusConsideration recentlyAtChargingLocation has been renamed to atChargingLocation in the Vehicle Smart Charging StatusAPI API
    GET /vehicles/{vehicleId}/smart-charging-statusA new state, FULLY_CHARGED, has been added to the state enum. FULLY_CHARGED, will replace CONSIDERING when the vehicle does not need to be charged. This can be due to the vehicle having reached its charging limit or the battery being close to 100% charged. The vehicle will transition back into CONSIDERING once we detect that the vehicle has been used and needs to be charged.
    PUT /vehicles/{vehicleId}/smart-charging-policyThe logic for checking if the vehicle is capable of smart charging and if the user is a single user has been moved to the Update Vehicle Smart Charging PolicyAPI API. If the vehicle is not capable of smart charging or the user is not a single user, smart charging will not be turned on, and a 400 Bad Request will be returned.

    Pass 2023-04-01 as your version header to use this new version.

  • Made spec more compatible with openapi-generator


    Removed invalid default property in VehicleFieldParameter

    Fixed a bug in the OpenAPI spec where the default value of VehicleFieldParameter was located inside items instead of next to it, causing openapitools/openapi-generator to fail. The intended default for fields was ["capabilities", "smartChargingPolicy"]. It's not necessary to specify these fields since they are always returned.

  • Power delivery states and richer action failure reasons


    This update brings new features to our vehicles and chargers APIs. The new fields will be available across all versions.

    • Introducing chargeState.powerDeliveryState. This field represents the current power delivery state between a vehicle and a charger. For more information, see Get VehicleAPI.

    • Introducing failureReason. This field provides more information about why was a given action not executed successfully. For more information, see Get Charge ActionAPI.

  • Changes to smart charging considerations


    Changes made to simplify smart charging considering phase.

    • Instead of staying in the considering phase in cases where you should charge right away, we will make a plan to start now. This is particularly important when there are very little savings. The charging behavior will remain the same as before; the only difference is that we are giving users a plan.
    • As a result of this change, wontStopExistingChargingSession and likelyToGenerateSavings are now deprecated will always return true.
    • Locations no longer have to be fresh in order to receive a smart charge plan.
  • Version 2023-03-01


    The first version with breaking changes. This API version removes deprecated functionality and fields that have accumulated before Enode launched versioning.

    EndpointChange description
    POST /chargers/{chargerId}/charging, POST /vehicles/{vehicleId}/charging and /schedulesThe fields chargeableId, chargeableType, entityId, and entityType have been replaced with targetId and targetType
    /schedules/{scheduleId} and /scheduleschargeableType and entityType have been replaced with targetId.
    /vehicles/{vehicleId}/external-start and /vehicles/{vehicleId}/external-startThe External Start APIs for VehiclesAPI and ChargersAPI have been renamed to Smart override, which better reflects their intended use.
    POST /hvacs/{hvacId}/temperatureThe Set Temperature endpoint for HVACs has been replaced by the Set Permanent HoldAPI and Follow ScheduleAPI endpoints. The latter offer increased control over the underlying hardware, like the ability to change the thermostat's mode.
    /hvacs/{hvacId}Responses no longer contain targetTemperature
    GET /statistics/chargingThe vehicleId request body parameter to Get Charging StatisticsAPI has been replaced with id and type in order to support different types of hardware.
    /webhooksThe user:charge-action:updated webhook event has been renamed to user:vendor-action:updated.
    GET /vehicles and GET /vehicles/{vehicleId}The chargeState.isChargingReasons response field on the Vehicle APIAPI has been removed.
    GET /vehicles and GET /vehicles/{vehicleId}The information.id response field on the Vehicle APIAPI has been removed. Use information.vin instead.

    Pass 2023-03-01 as your version header to use this new version.

  • Vendor types are now returned for linked vendors


    This update brings a small quality of life improvement for re-linking vendors. The update is available across all versions.

    • vendorType is now returned in the response from the MeAPI endpoint. This makes it easier to re-link vendors in a isValid = false state since vendorType is required when calling link endpoint. For more information see MeAPI.
  • New smart charging features


    This update brings a few new features to our smart charging APIs. The updates will be available across all versions.

    • Altered the hasChargeAboveThreshold smart charge consideration such that vehicles stop charging ScheduleAPI immediately, regardless of battery level. Previously the smart charging algorithm would wait until a vehicle reached 20% before issuing a stop command.
  • Version 2023-02-01


    The first calendar version for Enode API. No breaking changes have been made. Existing clients are pinned to version 2023-02-01, and will use this version by default if no version header is sent.

    • Version 2023-02-01 is the same as before and has no breaking changes.

    • API endpoints now accept an Enode-Version header. To prepare for future API versions you can optionally start sending Enode-Version=2023-02-01.

    • Note: New clients will be pinned to the latest stable version at the time of creation.