Download OpenAPI specification:
Welcome to the Leapcraft Client API. This API provides RESTful methods to manage devices and fetch telemetry data—either as real-time raw events or processed averages.
The API uses Bearer Token Authentication.
api_key at /auth/client/token to exchange it for a transactional token.Authorization: Bearer <your_token>.| api_key required | string |
curl -X POST https://api.leapcraft.com/v1/auth/client/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "api_key=YOUR_API_KEY"
{- "type": "bearer",
- "token": "9e65a545de443ccbe72c0bbfbe638f2fFJwyr..."
}| limit | integer Default: 100 limit = -1 to get full list |
| page | integer Default: 1 Returned values are the value of limit multiplied by page. The first page is 1 |
curl -X GET "https://api.leapcraft.com/v1/devices?limit=100" \ -H "Authorization: Bearer YOUR_TOKEN"
[- {
- "name": "Conference Room B",
- "physical_id": "D2:C1:AA:FF:3E:09",
- "serial": "LC-2026-X88",
- "topology_id": 149,
- "meta": { },
- "type": "ultralink_modbus"
}
]curl -X GET "https://api.leapcraft.com/v1/devices/testsim00004" \ -H "Authorization: Bearer YOUR_TOKEN"
{- "serial": "LC-2026-X88",
- "meta": { }
}| physical_id required | string |
| type required | string Enum: "latest" "averages" |
| resolution | string Enum: "daily" "weekly" "monthly" Required if type=averages |
| from | string <date-time> Start timestamp. Required if type=averages. |
| to | string <date-time> End timestamp. Required if type=averages. |
curl -X GET "https://api.leapcraft.com/v1/telemetry/testsim00004?type=averages&resolution=daily&from=2021-05-26T00:00:00.000&to=2021-05-27T11:42:58.721" \ -H "Authorization: Bearer YOUR_TOKEN"
{- "physical_id": "D2:C1:AA:FF:3E:09",
- "timestamp": "2026-03-29T15:24:05Z",
- "data": {
- "temperature": 23.1,
- "humidity": 44.5,
- "co2": 550,
- "pm2_5": 4.8,
- "meta": { }
}, - "created_at": "2026-03-29T15:24:07Z"
}curl -X GET "https://api.leapcraft.com/v1/topologies" \ -H "Authorization: Bearer YOUR_TOKEN"
[- {
- "gateway_id": "01231AC7BFB729F0EE",
- "name": null,
- "network_id": 15,
- "created_at": "2022-01-29T05:59:57.000Z",
- "devices": [
- {
- "physical_id": "01231AC7BFB729F0EE",
- "name": "Ambinode Test 10",
- "type": "ambinode",
- "metadata": { }
}
]
}
]| topology_id required | string The gateway ID of the topology |
curl -X GET "https://api.leapcraft.com/v1/topologies/0123245cf74c60d7ee" \ -H "Authorization: Bearer YOUR_TOKEN"
{- "gateway_id": "0123245cf74c60d7ee",
- "created_at": "2020-12-16 13:51:58",
- "name": null,
- "devices": [
- {
- "physical_id": "0123555235565de1ee",
- "topology_id": 9,
- "name": "Airbird Test Office - COZIR"
}
]
}| physical_id | string |
| limit | integer <= 50 Default: 20 |
| offset | integer Default: 0 |
curl -X GET "https://api.leapcraft.com/v1/notifications?limit=20&offset=0" \ -H "Authorization: Bearer YOUR_TOKEN"
[- {
- "id": 4521,
- "physical_id": "0123555235565de1ee",
- "category": "technicalAlert",
- "message": "High CO2 levels detected",
- "created_at": "2021-05-28T17:15:06Z"
}
]| limit | integer Default: 10 Use -1 to gell all items. |
[- {
- "name": "bacnet",
- "description": null,
- "parameters": [
- {
- "name": "Temperature",
- "payload": "p0"
}, - {
- "name": "Outdoor Temp",
- "payload": "p1"
}, - {
- "name": "Intake Temperature",
- "payload": "p2"
}, - {
- "name": "Supply Temperature",
- "payload": "p3"
}, - {
- "name": "Exhaust Temperature",
- "payload": "p4"
}, - {
- "name": "Extract Temperature",
- "payload": "p5"
}, - {
- "name": "Supply Pressure",
- "payload": "p6"
}
]
}
]