Skip to main content
POST
Send a remote command to a device. Commands are delivered via Bluetooth (through the mobile app) or via heartbeat response (for 4G/WiFi devices).

Authentication

Requires an API key with devices:write scope.

Path Parameters

id
string
required
The device’s unique identifier (e.g., dev_abc123).

Request Body

type
string
required
The command type. One of:
  • start_recording - Start a new recording
  • stop_recording - Stop the current recording
  • trigger_upload - Upload any pending recordings stored on the device
params
object
Optional parameters for the command.
params.max_duration_sec
number
Maximum recording duration in seconds (1-86400). Default: 3600 (1 hour).
params.upload_immediately
boolean
Whether to upload immediately after recording stops. Default: true.
params.metadata
object
Custom metadata to attach to the recording.
idempotency_key
string
Unique key to prevent duplicate command creation.
ttl_seconds
number
Time-to-live for the command in seconds. Command expires if not executed within this time. Default: 300 (5 minutes).

Response

Returns the command object with status set to pending.

Response Fields

Command Lifecycle

Commands go through the following states:

Notes

  • Commands are delivered to devices via Bluetooth (through the mobile app) or WiFi/4G (direct push)
  • If the device is offline, commands will be queued and delivered when the device comes online
  • The grant_token is a signed JWT that authorizes the device to execute the command
  • For BLE-connected devices, the mobile app must relay the command to the device