---
title: "Dispatch Payload Control Command"
method: POST
path: "/openapi/v2.0/manage/api/v1/projects/{uuid}/payload-commands"
tags: ["Real-time Control/Payload Control/Camera Control"]
---

# Dispatch Payload Control Command

`POST /openapi/v2.0/manage/api/v1/projects/{uuid}/payload-commands`

## Request

- Base URL: `https://41b04hdzmc.apifox.cn` (the document declares no server; this is the origin it was published from)
- URL: `https://41b04hdzmc.apifox.cn/openapi/v2.0/manage/api/v1/projects/{uuid}/payload-commands`
- Auth: none required

Dispatch control commands to specified aircraft's payload (gimbal / camera / speaker, and other airborne payloads) in project, e.g. gimbal pitch / photo / video / lens switch / zoom, etc. Caller must hold the aircraft's payload control authority to execute commands.

## Path parameters

- `uuid` string, required

## Headers

- `x-user-token` string, required
- `X-Request-Id` string, uuid
- `X-Project-Uuid` string, required

## Request body

- object
  - `device_sn` string, required: Target Aircraft SN
  - `device_cmd_method` string, required: Payload command method name. The server validates the method against a supported command whitelist; methods not in the whitelist will be rejected. Common values: camera_photo_take (Take Photo), camera_recording_start (Start Recording), camera_recording_stop (Stop Recording), gimbal_reset (Gimbal Reset), camera_focal_length_set (Focal Length Setting), camera_aim (Camera Aim Target), camera_screen_split (Screen Split Switch), etc.
  - `device_cmd_data` union: Command parameters; structure determined by device_cmd_method (defined by device thing model). Commands without additional parameters may omit this field or pass {} > This documentation only lists the data structure of commonly used commands. The complete supported list is subject to the server-side whitelist. For unlisted methods (e.g. camera_screen_split, camera_screen_drag, clean_fog, etc.), refer to the device thing model definition. Fields for each method: | method | field | type | description | |--------|-------|------|-------------| | camera_look_at | payload_index | string | Target payload index | | camera_look_at | locked | boolean | true=lock gimbal heading, false=don't lock | | camera_look_at | longitude | number | Target longitude | | camera_look_at | latitude | number | Target latitude | | camera_look_at | height | number (optional) | Target altitude | | camera_aim | camera_index | string | Camera index | | camera_aim | camera_type | string | Camera type | | camera_aim | locked | boolean | true=lock gimbal heading, false=don't lock | | camera_aim | x | number | Normalized screen coordinate x, range 0~1 | | camera_aim | y | number | Normalized screen coordinate y, range 0~1 | | camera_focal_length_set | camera_index | string | Camera index | | camera_focal_length_set | camera_type | string | Camera type | | camera_focal_length_set | focal_length | number | Focal length value (mm) | | camera_photo_take | camera_index | string | Camera index | | camera_recording_start | camera_index | string (optional) | Camera index, either or both | | camera_recording_start | payload_index | string (optional) | Payload index, either or both | | camera_recording_stop | camera_index | string | Camera index | | camera_mode_switch | camera_index | string | Camera index | | camera_mode_switch | camera_mode | number | Camera mode: 0=photo, 1=video | | ir_metering_mode_set | payload_index | string | Payload index | | ir_metering_mode_set | mode | string | IR metering mode | | ir_metering_point_set | payload_index | string | Payload index | | ir_metering_point_set | x | number | Normalized screen coordinate x | | ir_metering_point_set | y | number | Normalized screen coordinate y | | ir_metering_area_set | payload_index | string | Payload index | | ir_metering_area_set | x | number | Area top-left x | | ir_metering_area_set | y | number | Area top-left y | | ir_metering_area_set | width | number | Area width | | ir_metering_area_set | height | number | Area height | | photo_storage_set | payload_index | string | Payload index | | photo_storage_set | photo_storage_settings | string[] | Storage locations array, values: current/wide/zoom/ir/vision | | video_storage_set | payload_index | string | Payload index | | video_storage_set | video_storage_settings | string[] | Storage locations array, values: current/wide/zoom/ir/vision |
    - object: Camera look at map point
      - `payload_index` string, required: Target payload index
      - `locked` boolean, required: true=lock gimbal heading, false=don't lock
      - `longitude` number, required: Target longitude
      - `latitude` number, required: Target latitude
      - `height` number: Target altitude (optional)
    - object: Double-tap screen point aim
      - `camera_index` string, required: Camera index
      - `camera_type` string, required: Camera type
      - `locked` boolean, required: true=lock gimbal heading, false=don't lock
      - `x` number, required: Normalized screen coordinate x, range 0~1
      - `y` number, required: Normalized screen coordinate y, range 0~1
    - object: Set camera focal length
      - `camera_index` string, required: Camera index
      - `camera_type` string, required: Camera type
      - `focal_length` number, required: Focal length value (mm)
    - object: Camera single shot
      - `camera_index` string, required: Camera index
    - object: Start recording
      - `camera_index` string: Camera index (optional, either or both with payload_index)
      - `payload_index` string: Payload index (optional, either or both with camera_index)
    - object: Stop recording
      - `camera_index` string, required: Camera index
    - object: Switch camera mode
      - `camera_index` string, required: Camera index
      - `camera_mode` 0 | 1, required: Camera mode: 0=photo, 1=video
    - object: IR metering mode setting
      - `payload_index` string, required: Payload index
      - `mode` string, required: IR metering mode
    - object: IR metering point setting
      - `payload_index` string, required: Payload index
      - `x` number, required: Normalized screen coordinate x
      - `y` number, required: Normalized screen coordinate y
    - object: IR metering area setting
      - `payload_index` string, required: Payload index
      - `x` number, required: Area top-left x
      - `y` number, required: Area top-left y
      - `width` number, required: Area width
      - `height` number, required: Area height
    - object: Photo storage location setting
      - `payload_index` string, required: Payload index
      - `photo_storage_settings` string[], required: Photo storage locations array
    - object: Video storage location setting
      - `payload_index` string, required: Payload index
      - `video_storage_settings` string[], required: Video storage locations array
  - `need_user_verify` boolean: Whether to Require User Identity Re-Verification (sensitive operation scenarios), default false
  - `uuid` string, uuid: Request Idempotency Key (UUID v4 Format)

## Response `200`

Operation Successful

- object
  - `data` unknown

## Other responses

- `400`: Business Parameter Error — body contains code (non-zero)/message
- `500`: Internal Service Error

---

[API](https://skmtc.dev/dji/apis/flighthub-2-openapi-v2-0-on-premises.md) - [All operations](https://skmtc.dev/dji/apis/flighthub-2-openapi-v2-0-on-premises/llms.txt) - [OpenAPI document](https://skmtc.dev/dji/apis/flighthub-2-openapi-v2-0-on-premises/revisions/e4544b7809ea?raw)
