- Update an EVSE
Update an EVSE. Only the EVSE's location may be changed via this endpoint; all other fields are read-only.
A 400 is returned when the request body fails validation (for example a non-numeric, non-finite or out-of-range coordinate), with the offending fields listed under field_errors.
- Mock serverhttps://developers.ev.energy/_mock/ev.energy-api-v2/evses/{evse_id}
- Live API for both production and sandbox requests.https://api.ev.energy/v2/evses/{evse_id}
- Staging server for internal testing only.https://api-staging.ev.energy/v2/evses/{evse_id}
curl -i -X PATCH \
'https://developers.ev.energy/_mock/ev.energy-api-v2/evses/evse01HSH04KDEWF6Z4DB2J77J74K5?expand=user' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'EvEnergy-Version: 2' \
-d '{
"location": {
"latitude": 51.5074,
"longitude": -0.1278
}
}'EVSE updated successfully.
Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.
The number of requests remaining until this client's rate limit is reached.
Unique identifier for the given EVSE.
A unique identifier for the chargepoint. The format varies by manufacturer and model.
An expandable reference to the most recent status log for this EVSE. This can be requested or expanded to get the most accurate information we have on the device's current status.
Inferring reachability: v2 deliberately does not expose a discrete online/offline state on the EVSE resource — the boundary is fuzzy and prone to misuse. To decide whether an EVSE is currently reachable, expand latest_status_log (or fetch it separately) and compare its sampled_at timestamp against your own staleness threshold (for example: a charger silent for more than 15 minutes is likely unreachable).
An expandable reference to the CT clamp associated with this EVSE. Will be null if no CT clamp is installed.
Lock mode of the EVSE. UNLOCKED allows free charging, SMART only allows charging within smart-charging hours, LOCKED blocks all charging.
The geographic location of the EVSE as a latitude/longitude point.
Why smart charging needs it: the location tells ev.energy which electricity grid the charger sits on, which drives the core smart-charging decisions:
- Carbon optimisation — selects the local carbon-intensity feed so charging is shifted to the lowest-carbon periods.
- Timezone — resolves the charger's timezone so time-of-day charging schedules and tariff windows are applied in local time.
- Programs and solar — determines the eligible grid/demand-response programs and the relevant solar forecast.
Without an accurate location the scheduler cannot reliably optimise charging for cost and carbon.
When it is set: during commissioning, where the supplied postcode/address is geocoded to a latitude/longitude (or, for app-linked chargers, copied from the owner's home location). It can be corrected later via PATCH. Null when the location has not yet been determined.
{ "latitude": 51.5074, "longitude": -0.1278 }
The most recently recorded stage of the EVSE's onboarding lifecycle. Null when no stage has been recorded for it yet, which is normal for a charger that has only just been created.
{ "id": "evse01HSH04KDEWF6Z4DB2J77J74K5", "url": "https://api.ev.energy/v2/evses/evse01HSH04KDEWF6Z4DB2J77J74K5", "cpid": "SHIR100001", "model": "https://api.ev.energy/v2/evse_models/emod01HS9A004X5TB5JCMHENB5Z446", "user": "https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735", "latest_status_log": "https://api.ev.energy/v2/evse/evse01HSH04KDEWF6Z4DB2J77J74K5/status_logs/2024-01-01T11:11:11.1111Z/", "ct_clamp": "https://api.ev.energy/v2/ct_clamps/ctcl01HSH04KDEWF6Z4DB2J77J74K5", "lock_mode": "UNLOCKED", "location": { "latitude": 51.5074, "longitude": -0.1278 }, "lifecycle_state": "COMMISSIONED", "charging_sub_sessions": "https://api.ev.energy/charging_sub_sessions/?evse_id=evse01HSH04KDEWF6Z4DB2J77J74K5" }