DJI Services Reply

Purpose

This page documents the query semantics and response fields for DJI downlink command execution results.

Endpoint

  • Developer query entry: GET /api/v1/open/downlink/commands/{commandId}
  • Command results are exposed through the status-query endpoint; you do not call the device-side reply channel directly.

Authentication

The query endpoint uses Open Platform signature authentication (API ID / API Key / signature).

Path Parameters

NameTypeRequiredDescription
commandIdstring(uuid)yesCommand acceptance identifier; globally unique UUID

Query Parameters

None.

Request Body

The query endpoint has no request body.

Responses

Status-query response (aligned with OpenAPI DownlinkCommandStatusResponse):
FieldTypeDescription
command_idstring(uuid)Command acceptance identifier; globally unique UUID
statusstringACCEPTED / DELIVERED / SUCCEEDED / FAILED / TIMED_OUT / UNMATCHED_RESPONSE
vendorstringVendor identifier; fixed dji
device_idstringDevice ID
failure_codestringFailure code (returned on failure)
failure_reasonstringFailure reason (returned on failure)
response_codestringDevice-side response code
response_messagestringDevice-side response message
vendor_responseobjectRaw vendor-extended response fields
accepted_atstring(date-time)Platform acceptance time
delivered_atstring(date-time)Platform delivery time
completed_atstring(date-time)Command completion time
response_received_atstring(date-time)Time the reply was received
updated_atstring(date-time)Last update time
Example response:
{
  "command_id": "100e2826-e45b-50cb-b41f-e8df6d20bea2",
  "status": "FAILED",
  "vendor": "dji",
  "device_id": "drone-001",
  "failure_code": "DEVICE_EXECUTION_FAILED",
  "failure_reason": "camera busy",
  "response_code": "5001",
  "response_message": "camera busy",
  "vendor_response": {"detail":"busy"},
  "accepted_at": "2026-04-22T12:00:00Z",
  "completed_at": "2026-04-22T12:00:03Z",
  "updated_at": "2026-04-22T12:00:03Z"
}

Example

package main

import "net/http"

func main() {
  req, _ := http.NewRequest(http.MethodGet, "https://dev.utmos.dev/api/v1/open/downlink/commands/100e2826-e45b-50cb-b41f-e8df6d20bea2", nil)
  req.Header.Set("X-Api-Id", "YOUR_API_ID")
  req.Header.Set("X-Api-Timestamp", "YOUR_UNIX_SECONDS")
  req.Header.Set("X-Api-Signature", "YOUR_SIGNATURE")
  _, _ = http.DefaultClient.Do(req)
}