List devices
const url = 'http://localhost:3000/api/v1/devices?limit=20&offset=0&cursor=eyJpZCI6IjEyMzQifQ%3D%3D&status=ONLINE&environment=production®ion=us-west&search=edge-01&architecture=amd64&appVersion=1.2.3';const options = {method: 'GET', headers: {'X-API-Key': '<X-API-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'http://localhost:3000/api/v1/devices?limit=20&offset=0&cursor=eyJpZCI6IjEyMzQifQ%3D%3D&status=ONLINE&environment=production®ion=us-west&search=edge-01&architecture=amd64&appVersion=1.2.3' \ --header 'X-API-Key: <X-API-Key>'Retrieves a paginated list of devices with optional filtering by status and labels.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
20Maximum number of devices to return
Example
0Number of devices to skip for pagination
Example
eyJpZCI6IjEyMzQifQ==Cursor for cursor-based pagination (alternative to offset)
Example
ONLINEFilter by device status
Filter by device labels (JSON object)
object
Example
{ "environment": "production", "region": "us-west"}Example
edge-01Free-text search — matches device name, clientId, and Margo self-reported device ID (case-insensitive substring)
Example
arm64Filter by CPU architecture as reported in capabilities.cpu.architecture
Example
1.2.3Filter devices that have at least one non-removed deployment of a specific application version
Responses
Section titled “Responses”List of devices retrieved successfully
object
Array of device objects
object
Unique device identifier (UUID)
Client-provided device identifier
Human-readable device name
Current device status
Device capabilities as reported during onboarding
object
Key-value labels for device organization and filtering
object
Timestamp of last communication from device
Timestamp when device was registered
Timestamp of last device update
Margo self-reported DeviceId (properties.id from the device capabilities manifest). Unique per organization among non-deleted devices — null if this device has never reported capabilities, or if it collided with another device already holding the same value (FM-1043) and its write was rejected.
Latest reported CPU usage percentage (FM-770, from VictoriaMetrics). Null if the device has never reported telemetry.
Latest reported memory usage percentage (FM-770, from VictoriaMetrics). Null if the device has never reported telemetry.
Latest reported disk usage percentage (FM-770, from VictoriaMetrics). Null if the device has never reported telemetry.
Count of non-removed deployment instances currently targeting this device (FM-770). Always a real count, independent of telemetry availability.
Total number of devices matching the filter criteria
Indicates if there are more devices available
Cursor for fetching the next page of results
Example
{ "data": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "clientId": "edge-device-001", "name": "Production Edge Gateway 1", "status": "ONLINE", "capabilities": { "cpu": { "cores": 4, "architecture": "arm64" }, "memory": { "total": 8192 }, "containers": { "runtime": "containerd" } }, "labels": { "environment": "production", "region": "us-west", "tier": "edge" }, "lastSeenAt": "2024-01-15T10:30:00Z", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-15T10:30:00Z", "reportedDeviceId": "wm-uc20-m3000-ax4b14pc7500001", "cpuUsagePercent": 42.5, "memoryUsagePercent": 67.2, "diskUsagePercent": 55.1, "runningWorkloadCount": 3 } ], "total": 150, "hasMore": true, "nextCursor": "eyJpZCI6IjEyMzQifQ=="}Unauthorized - Invalid or missing authentication
Forbidden - Insufficient permissions