ampr docs

Chargers

Register and manage charge points

GET /chargers List chargers

Parameters

Name In Type Required Description
page query integer
per_page query integer
status query ChargerStatus
  • pending
  • online
  • offline
location_id query string
vendor query string

Responses

200 Charger list

PropertyTypeRequiredDescription
dataarray<Charger>
PropertyTypeRequiredDescription
idstringrequired
serialstringrequired
vendorstringrequired
modelstringrequired
firmware_versionstringnullable
statusChargerStatus
  • pending
  • online
  • offline
requiredpending: registered but charger hasn't connected yet (claim expires in 48h) online: charger has an active WebSocket connection offline: charger was previously connected but is currently disconnected
location_idstringnullable
tariff_idstringnullableOptional charger-level tariff. Tariff resolution at session start is charger → location → org default; the first non-null wins. If all three are null, the session produces an `unbillable` CDR.
claim_expires_atstringnullableformat: date-timeWhen the pending claim expires (null if charger is active/offline)
socketsarray<Socket>required
PropertyTypeRequiredDescription
idstringrequired
connector_idintegerrequiredPhysical connector number on the charger (1, 2, etc.)
typeenum
  • Type1
  • Type2
  • CCS1
  • CCS2
  • CHAdeMO
  • Other
required
statusConnectorStatus
  • Available
  • Preparing
  • Charging
  • SuspendedEV
  • SuspendedEVSE
  • Finishing
  • Faulted
  • Unavailable
required
current_session_idstringnullable
created_atstringformat: date-timerequired
paginationPagination
PropertyTypeRequiredDescription
totalintegerrequired
pageintegerrequired
per_pageintegerrequired
has_morebooleanrequired

401 Missing or invalid API key application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

Request example

curl -X GET "https://api.ampr.dev/v1/chargers" \
  -H "Authorization: Bearer $AMPR_API_KEY"
Note
This endpoint requires an API key. Send it as a Bearer token in the Authorization header.

POST /chargers Register a new charger

Request body

PropertyTypeRequiredDescription
serialstringrequired
vendorstringrequired
modelstringrequired
location_idstringnullable
tariff_idstringnullableOptional charger-level tariff binding. Must belong to the same org.

Responses

201 Charger created

PropertyTypeRequiredDescription
dataCharger
PropertyTypeRequiredDescription
idstringrequired
serialstringrequired
vendorstringrequired
modelstringrequired
firmware_versionstringnullable
statusChargerStatus
  • pending
  • online
  • offline
requiredpending: registered but charger hasn't connected yet (claim expires in 48h) online: charger has an active WebSocket connection offline: charger was previously connected but is currently disconnected
location_idstringnullable
tariff_idstringnullableOptional charger-level tariff. Tariff resolution at session start is charger → location → org default; the first non-null wins. If all three are null, the session produces an `unbillable` CDR.
claim_expires_atstringnullableformat: date-timeWhen the pending claim expires (null if charger is active/offline)
socketsarray<Socket>required
PropertyTypeRequiredDescription
idstringrequired
connector_idintegerrequiredPhysical connector number on the charger (1, 2, etc.)
typeenum
  • Type1
  • Type2
  • CCS1
  • CCS2
  • CHAdeMO
  • Other
required
statusConnectorStatus
  • Available
  • Preparing
  • Charging
  • SuspendedEV
  • SuspendedEVSE
  • Finishing
  • Faulted
  • Unavailable
required
current_session_idstringnullable
created_atstringformat: date-timerequired

401 Missing or invalid API key application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

409 Resource conflict (e.g., duplicate serial, active session) application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

422 Request understood but cannot be processed (e.g., invalid state) application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

Request example

curl -X POST "https://api.ampr.dev/v1/chargers" \
  -H "Authorization: Bearer $AMPR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "serial": "string",
    "vendor": "string",
    "model": "string",
    "location_id": "string",
    "tariff_id": "trf_example"
  }'
Note
This endpoint requires an API key. Send it as a Bearer token in the Authorization header.

GET /chargers/stats Fleet stats rollup

Organization-scoped point-in-time fleet aggregate (chargers and sockets by status, active session count, and energy delivered today) for dashboard KPI tiles. Produced by a small fixed set of bounded grouped-COUNT/SUM queries — it does not paginate the fleet or read per-charger live state.

Responses

200 Fleet stats aggregate

PropertyTypeRequiredDescription
dataFleetStatsrequiredPoint-in-time organization-scoped fleet aggregate for dashboard KPI tiles. Every known status key is always present (defaulting to 0) so the shape is stable regardless of which statuses currently have rows.
PropertyTypeRequiredDescription
chargersobjectrequired
PropertyTypeRequiredDescription
totalintegerrequired
by_statusobjectrequired
PropertyTypeRequiredDescription
pendingintegerrequired
onlineintegerrequired
offlineintegerrequired
socketsobjectrequired
PropertyTypeRequiredDescription
totalintegerrequired
by_statusobjectrequired
PropertyTypeRequiredDescription
Availableintegerrequired
Preparingintegerrequired
Chargingintegerrequired
SuspendedEVintegerrequired
SuspendedEVSEintegerrequired
Finishingintegerrequired
Faultedintegerrequired
Unavailableintegerrequired
sessionsobjectrequired
PropertyTypeRequiredDescription
activeintegerrequiredCount of the organization's sessions currently in the active state
energyobjectrequired
PropertyTypeRequiredDescription
today_whintegerrequiredSummed total_energy_wh of the org's sessions completed since the start of the current UTC day

401 Missing or invalid API key application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

Request example

curl -X GET "https://api.ampr.dev/v1/chargers/stats" \
  -H "Authorization: Bearer $AMPR_API_KEY"
Note
This endpoint requires an API key. Send it as a Bearer token in the Authorization header.

GET /chargers/{charger_id} Get charger details with live state

Parameters

Name In Type Required Description
charger_id path string required

Responses

200 Charger detail

PropertyTypeRequiredDescription
dataCharger
PropertyTypeRequiredDescription
idstringrequired
serialstringrequired
vendorstringrequired
modelstringrequired
firmware_versionstringnullable
statusChargerStatus
  • pending
  • online
  • offline
requiredpending: registered but charger hasn't connected yet (claim expires in 48h) online: charger has an active WebSocket connection offline: charger was previously connected but is currently disconnected
location_idstringnullable
tariff_idstringnullableOptional charger-level tariff. Tariff resolution at session start is charger → location → org default; the first non-null wins. If all three are null, the session produces an `unbillable` CDR.
claim_expires_atstringnullableformat: date-timeWhen the pending claim expires (null if charger is active/offline)
socketsarray<Socket>required
PropertyTypeRequiredDescription
idstringrequired
connector_idintegerrequiredPhysical connector number on the charger (1, 2, etc.)
typeenum
  • Type1
  • Type2
  • CCS1
  • CCS2
  • CHAdeMO
  • Other
required
statusConnectorStatus
  • Available
  • Preparing
  • Charging
  • SuspendedEV
  • SuspendedEVSE
  • Finishing
  • Faulted
  • Unavailable
required
current_session_idstringnullable
created_atstringformat: date-timerequired

401 Missing or invalid API key application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

404 Resource not found application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

Request example

curl -X GET "https://api.ampr.dev/v1/chargers/chg_example" \
  -H "Authorization: Bearer $AMPR_API_KEY"
Note
This endpoint requires an API key. Send it as a Bearer token in the Authorization header.

DELETE /chargers/{charger_id} Decommission a charger

Parameters

Name In Type Required Description
charger_id path string required

Responses

204 Charger decommissioned

401 Missing or invalid API key application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

404 Resource not found application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

409 Resource conflict (e.g., duplicate serial, active session) application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

Request example

curl -X DELETE "https://api.ampr.dev/v1/chargers/chg_example" \
  -H "Authorization: Bearer $AMPR_API_KEY"
Note
This endpoint requires an API key. Send it as a Bearer token in the Authorization header.

PATCH /chargers/{charger_id} Update charger metadata

Parameters

Name In Type Required Description
charger_id path string required

Request body

PropertyTypeRequiredDescription
labelstring
location_idstringnullable
tariff_idstringnullableSet to rebind the charger's tariff; `null` clears the binding (falls back to location/org tariff resolution).

Responses

200 Charger updated

PropertyTypeRequiredDescription
dataCharger
PropertyTypeRequiredDescription
idstringrequired
serialstringrequired
vendorstringrequired
modelstringrequired
firmware_versionstringnullable
statusChargerStatus
  • pending
  • online
  • offline
requiredpending: registered but charger hasn't connected yet (claim expires in 48h) online: charger has an active WebSocket connection offline: charger was previously connected but is currently disconnected
location_idstringnullable
tariff_idstringnullableOptional charger-level tariff. Tariff resolution at session start is charger → location → org default; the first non-null wins. If all three are null, the session produces an `unbillable` CDR.
claim_expires_atstringnullableformat: date-timeWhen the pending claim expires (null if charger is active/offline)
socketsarray<Socket>required
PropertyTypeRequiredDescription
idstringrequired
connector_idintegerrequiredPhysical connector number on the charger (1, 2, etc.)
typeenum
  • Type1
  • Type2
  • CCS1
  • CCS2
  • CHAdeMO
  • Other
required
statusConnectorStatus
  • Available
  • Preparing
  • Charging
  • SuspendedEV
  • SuspendedEVSE
  • Finishing
  • Faulted
  • Unavailable
required
current_session_idstringnullable
created_atstringformat: date-timerequired

401 Missing or invalid API key application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

404 Resource not found application/problem+json

PropertyTypeRequiredDescription
typestringformat: urirequired
titlestringrequired
statusintegerrequired
detailstringnullable
instancestringnullable

Request example

curl -X PATCH "https://api.ampr.dev/v1/chargers/chg_example" \
  -H "Authorization: Bearer $AMPR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "string",
    "location_id": "string",
    "tariff_id": "trf_example"
  }'
Note
This endpoint requires an API key. Send it as a Bearer token in the Authorization header.