Skip to main content
GET
Returns the live runtime snapshot of a device. Same field shape as GET /v1/devices/{id} for runtime fields, just curated (no settings, no metadata, lighter payload — designed for polling at a few-second cadence). The recording_state object is forwarded verbatim from the device’s most recent heartbeat. Whether the device is currently reachable is not returned as a server field; derive it client-side from last_heartbeat_at (Date.now() - last_heartbeat_at < 15 * 60 * 1000 is the convention).
id
string
required
The device’s unique identifier (e.g., dev_abc123).

Response Fields

recording_state (jsonb passthrough)

Fields the device reports — all optional. The device may not report every field on every heartbeat, so clients should default missing values defensively.

Notes on shape

This endpoint returns the same field names as GET /v1/devices/{id} for everything in the runtime snapshot. The two endpoints differ only in what they omit:
  • GET /v1/devices/{id} includes the full device entity — status, model, firmware_version, serial_number, settings (with hierarchical config resolved), mac_address, metadata, etc.
  • GET /v1/devices/{id}/state includes only the runtime snapshot — cheaper to poll, no settings resolution cost.
Use /state for live UI polling (1–10 s cadence). Use /devices/{id} once per session for device identity + configuration.