Skip to content

Quickstart

Three steps: create a key, list your systems, read the latest telemetry for one of them. Ten minutes, no SDK required.

  1. Sign in to fleet-manager and open Settings -> API keys.
  2. Choose Create key. Give it a name you will recognise later (the name is shown in the key list and nowhere else), and optionally a description and an expiry date.
  3. Tick the scopes the integration needs. For this quickstart, systems:read and telemetry:read are enough. See Authentication and scopes for the full list.
  4. Copy the key.

The key looks like this:

cp_live_Ab3xK9pQ2vNmR7sT4uW1yZ0cD6eF8gH5jL3nP7qS9tU

The key is shown once. It is stored as a SHA-256 hash, so nobody at Clayton Power can show it to you again. If you lose it, create a new key and revoke the old one.

The card is only available to company administrators. If you do not see it, ask an administrator of your company to create the key for you.

Terminal window
curl -sS https://api.claytonpower.com/api/v1/external/systems \
-H "X-API-Key: $CP_API_KEY"
{
"items": [
{
"serialNumber": "1234567890",
"name": "Van 12",
"family": "LPS",
"status": "active",
"productName": "LPS II 3000",
"capacityKwh": 3.2,
"vehicleRegistration": "AB12345",
"division": { "id": "0f2b7c1e-4a1d-4c53-9f0e-8b2d1a6c5e77", "name": "North" },
"dataAvailableFrom": "2026-03-01T00:00:00Z"
}
],
"page": 1,
"pageSize": 50,
"totalCount": 137
}

The list is paginated: pass page and pageSize (maximum 200). totalCount is the number of systems across all pages. Only your company’s systems are ever returned.

Note serialNumber - it is the handle for every other endpoint - and dataAvailableFrom, the earliest timestamp with data for that system.

Terminal window
curl -sS https://api.claytonpower.com/api/v1/external/systems/1234567890/telemetry/latest \
-H "X-API-Key: $CP_API_KEY"
{
"serialNumber": "1234567890",
"connectivity": { "status": "online", "lastSeenAt": "2026-09-17T09:41:12Z" },
"stateOfCharge": { "percent": 87.5, "measuredAt": "2026-09-17T09:41:00Z" },
"fault": null,
"latestInterval": {
"start": "2026-09-17T09:30:00Z",
"durationMinutes": 15,
"input": { "mainsKwh": 0.42, "solarKwh": 0.11, "vehicleKwh": 0.0, "totalKwh": 0.53 },
"output": { "consumptionKwh": 0.37 },
"peakOutputW": 1180
}
}

latestInterval is the most recent completed 15-minute bucket, not the one currently filling, and it can be null. stateOfCharge is minute-fresh. The difference matters - see Freshness and lag.

An API key is a bearer credential: anyone holding it can read everything the key’s scopes allow, for your whole company.

  • Store it in a secret manager or an environment variable, never in source control.
  • Use it from your backend. A key in a browser or a mobile app is a published key.
  • Give each integration its own key, so you can revoke one without breaking the others.
  • Revoke a key the moment it is no longer needed. Revocation takes effect immediately.