The sites API lets you model your physical infrastructure. Each site represents a location — a car park, depot, or forecourt — with a defined power capacity. You can link chargers to sites, attach energy assets, and retrieve a live summary of everything connected at that location.
Create a site
POST /api/v1/sites
Display name for the site (e.g. “King Street Depot”).
Full street address of the site.
Maximum available grid power in kilowatts. Smart charging uses this value as the ceiling for load balancing.
Latitude in decimal degrees.
Longitude in decimal degrees.
curl -X POST "https://api.dynamo-csms.com/api/v1/sites" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "King Street Depot",
"address": "14 King Street, Manchester, M2 6AQ",
"max_power_kw": 150,
"lat": 53.4808,
"lng": -2.2426
}'
{
"site_id" : "site_01HZ4K8XVPQR3TY5N6M" ,
"name" : "King Street Depot" ,
"address" : "14 King Street, Manchester, M2 6AQ" ,
"max_power_kw" : 150 ,
"lat" : 53.4808 ,
"lng" : -2.2426 ,
"created_at" : "2024-06-01T09:00:00Z" ,
"charger_count" : 0
}
Unique identifier for the created site.
Display name of the site.
Configured grid power ceiling in kilowatts.
ISO 8601 timestamp of when the site was created.
Number of chargers currently linked to this site.
List sites
GET /api/v1/sites
Returns all sites in your organisation.
Maximum number of sites to return. Max 200.
curl "https://api.dynamo-csms.com/api/v1/sites?limit=10&offset=0" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"sites" : [
{
"site_id" : "site_01HZ4K8XVPQR3TY5N6M" ,
"name" : "King Street Depot" ,
"address" : "14 King Street, Manchester, M2 6AQ" ,
"max_power_kw" : 150 ,
"lat" : 53.4808 ,
"lng" : -2.2426 ,
"charger_count" : 8 ,
"created_at" : "2024-06-01T09:00:00Z"
}
],
"total" : 1 ,
"limit" : 10 ,
"offset" : 0
}
Get a site
GET /api/v1/sites/{site_id}
The unique identifier of the site.
curl "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M" \
-H "Authorization: Bearer YOUR_API_KEY"
Update a site
PATCH /api/v1/sites/{site_id}
All fields are optional. Only the fields you include will be updated.
The unique identifier of the site.
Updated power ceiling. Smart charging rebalances automatically when this changes.
curl -X PATCH "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"max_power_kw": 200}'
Delete a site
DELETE /api/v1/sites/{site_id}
Deleting a site does not delete the chargers linked to it. Chargers are unlinked and remain in your fleet.
The unique identifier of the site.
curl -X DELETE "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M" \
-H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.
Link a charger to a site
POST /api/v1/sites/{site_id}/chargers/{charge_point_id}/link
Associates a charger with a site so it participates in site-level power management and reporting.
The site to link the charger to.
The OCPP identity of the charger.
curl -X POST "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/chargers/CP-001/link" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"site_id" : "site_01HZ4K8XVPQR3TY5N6M" ,
"charge_point_id" : "CP-001" ,
"linked_at" : "2024-06-01T10:15:00Z"
}
Unlink a charger from a site
DELETE /api/v1/sites/{site_id}/chargers/{charge_point_id}
The site to unlink the charger from.
The OCPP identity of the charger.
curl -X DELETE "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/chargers/CP-001" \
-H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.
Get site summary
GET /api/v1/sites/{site_id}/summary
Returns a live overview of the site, including charger statuses and current power draw.
The unique identifier of the site.
curl "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/summary" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"site_id" : "site_01HZ4K8XVPQR3TY5N6M" ,
"name" : "King Street Depot" ,
"max_power_kw" : 150 ,
"current_power_kw" : 87.4 ,
"chargers" : {
"total" : 8 ,
"online" : 7 ,
"charging" : 5 ,
"available" : 2 ,
"faulted" : 1
},
"active_sessions" : 5 ,
"energy_assets" : [
{
"asset_id" : "asset_9XM3T" ,
"type" : "solar" ,
"capacity_kw" : 50 ,
"current_output_kw" : 22.1
}
]
}
Configured power ceiling.
Total power currently being drawn across all chargers at this site.
Total chargers linked to the site.
Chargers with an active OCPP connection.
Chargers with an active charging session.
Chargers ready to accept a session.
Chargers reporting a fault.
Energy assets attached to this site and their current output.
Add an energy asset
POST /api/v1/sites/{site_id}/energy-assets
Attach a solar panel array, battery storage unit, or other energy asset to the site. Assets are factored into smart charging allocation calculations.
The site to add the asset to.
Asset type. Accepted values: solar, battery, wind, generator.
A human-readable label for the asset.
Rated capacity of the asset in kilowatts.
Optional key/value pairs for custom asset data (e.g., manufacturer, model).
curl -X POST "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/energy-assets" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "solar",
"name": "Rooftop PV Array",
"capacity_kw": 50,
"metadata": {
"manufacturer": "SunPower",
"install_date": "2023-03-15"
}
}'
{
"asset_id" : "asset_9XM3T" ,
"site_id" : "site_01HZ4K8XVPQR3TY5N6M" ,
"type" : "solar" ,
"name" : "Rooftop PV Array" ,
"capacity_kw" : 50 ,
"created_at" : "2024-06-01T11:00:00Z"
}
List energy assets
GET /api/v1/sites/{site_id}/energy-assets
The site to list assets for.
curl "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/energy-assets" \
-H "Authorization: Bearer YOUR_API_KEY"
Update an energy asset
PUT /api/v1/sites/{site_id}/energy-assets/{asset_id}
The site the asset belongs to.
The unique identifier of the asset.
Updated metadata key/value pairs.
curl -X PUT "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/energy-assets/asset_9XM3T" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"capacity_kw": 60}'
Delete an energy asset
DELETE /api/v1/sites/{site_id}/energy-assets/{asset_id}
The site the asset belongs to.
The unique identifier of the asset to remove.
curl -X DELETE "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/energy-assets/asset_9XM3T" \
-H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.