POST
/
api
/
v1
/
open
/
downlink
/
commands
cURL
BODY='{"vendor":"dji","device_id":"drone-001","command_type":"camera_photo_take","payload":{"payload_index":"52-0-0"},"idempotency_key":"req-camera-photo-001","timeout_seconds":30}'
TIMESTAMP="$(date +%s)"
NONCE="$(uuidgen)"
SIGNATURE="YOUR_CALCULATED_SIGNATURE"

curl -X POST "https://api.example.com/api/v1/open/downlink/commands" \
  -H "Content-Type: application/json" \
  -H "X-Api-Id: YOUR_API_ID" \
  -H "X-Api-Timestamp: $TIMESTAMP" \
  -H "X-Api-Nonce: $NONCE" \
  -H "X-Api-Signature: $SIGNATURE" \
  -d "$BODY"
{
  "command_id": "100e2826-e45b-50cb-b41f-e8df6d20bea2",
  "status": "ACCEPTED",
  "accepted_at": "2026-04-22T12:00:00Z",
  "request_id": "req-001"
}

Authorizations

X-Api-Signature
string
header
required

HMAC signature; X-Api-Id, X-Api-Timestamp, and X-Api-Nonce are also required.

Headers

X-Api-Id
string
required

API credential ID.

X-Api-Timestamp
string
required

Unix timestamp in seconds.

X-Api-Nonce
string
required

Replay-protection nonce.

X-Api-Signature
string
required

HMAC request signature.

X-Request-Id
string

Optional correlation ID.

Body

application/json
vendor
enum<string>
required

Vendor identifier. Must be enabled in the platform catalog.

Available options:
dji,
px4
Example:

"px4"

device_id
string
required
Example:

"px4-real-1"

command_type
string
required

Vendor command type. Must exist in the command catalog for the selected vendor.

Example:

"nav_takeoff"

payload
object
required
Example:
{
"latitude": 473566000,
"longitude": 85432100,
"altitude": 30
}
idempotency_key
string
required
Example:

"req-px4-takeoff-001"

timeout_seconds
integer
default:30
Required range: 1 <= x <= 300
Example:

30

Response

Idempotent replay of an existing accepted command.

command_id
string<uuid>
required
Example:

"100e2826-e45b-50cb-b41f-e8df6d20bea2"

status
enum<string>
required
Available options:
ACCEPTED
Example:

"ACCEPTED"

accepted_at
string<date-time>
required
Example:

"2026-04-22T12:00:00Z"

request_id
string
required
Example:

"req-001"