Deprecated preset management actions — will be removed in 6 months
SetPreset (9), GetPresets (10) and RemovePreset (12) are deprecated and will be removed
in 6 months. Migrate integrations before removal.
These actions remain callable during the transition. Other actions, including GotoPreset (11),
GotoHomePosition (1) and SetHomePosition (2), are not deprecated by this notice.
| Legacy action | Replacement |
|---|---|
| 9 SetPreset | POST /v1/cameras/{cameraId}/ptz/presets to create at the current position; POST /v1/cameras/{cameraId}/ptz/presets/{presetId}/redefine to overwrite a registered preset. |
| 10 GetPresets | GET /v1/cameras/{cameraId}/ptz/presets for Cloud records and unregistered native slots. |
| 12 RemovePreset | DELETE /v1/cameras/{cameraId}/ptz/presets/{presetId} for a Cloud record; DELETE /v1/cameras/{cameraId}/ptz/presets/native/{presetToken} for an unregistered slot. |
The replacement is not a body-format alias: use the Cloud _id as presetId and the numbered camera
slot as presetToken. Create accepts {"name":"Entrance"} and allocates a slot; it does not accept
PresetToken/PresetName. To keep an existing native numbered slot, first register it with
POST /v1/cameras/{cameraId}/ptz/presets/native/{presetToken}/register and {"name":"Entrance"}.
GET returns an array with source/status/_id/presetToken rather than the legacy response envelope.
Deletion returns 204 without a body and handles patrol references. UNKNOWN Cloud presets require
{"confirmed":true}. Read the replacement operation descriptions for unconfirmed outcomes and errors.
The management API accepts numbered slots only: it does not replace camera-native HOME positioning.
Sends one PTZ (Pan-Tilt-Zoom) command to an organization camera. Set action to the command number
and provide its parameters in meta.
The command is dispatched asynchronously to the edge device; the response is held open until the
edge replies (up to 15 seconds). Successful responses return {} for ack-only actions, or PTZ
fields (status, presets, preset, test) for actions that produce payload data.
Axis ranges: pan/tilt are normalized to [-1, 1]; zoom velocity/delta are signed [-1, 1]; zoom
absolute position is [0, 1]. PresetToken is HOME or a numbered token 1..10.
action → required meta (a mismatch returns HTTP 400 with a per-action reason):
| action | name | meta |
|---|---|---|
| 0 | PtzMove | { speed:{x,y,z}, timeout, zoomTimeout? } |
| 1 | GotoHomePosition | — |
| 2 | SetHomePosition | — |
| 3 | GetStatus | — (returns status) |
| 4 | PtzStop | — |
| 5 | ContinuousMove | { Velocity:{x,y,z}, Timeout } |
| 6 | AbsoluteMove | { Position:{x,y,z}, Speed:{x,y,z} } |
| 7 | RelativeMove | { Translation:{x,y,z}, Speed:{x,y,z} } |
| 8 | StopMove | { PanTilt:boolean, Zoom:boolean } |
| 9 | SetPreset — DEPRECATED, removal soon | { PresetToken, PresetName } |
| 10 | GetPresets — DEPRECATED, removal soon | — (returns presets) |
| 11 | GotoPreset | { PresetToken, Speed?:{x,y,z} } |
| 12 | RemovePreset — DEPRECATED, removal soon | { PresetToken } |
| 13 | PtzTest | — (non-destructive probe, returns test) |
driver is an optional override (Onvif=0, Vivotek=1, Uniview=2, Vivotek2=3, Axis=4, Hanwha=5).
Omit it to let the edge resolve the driver automatically. Not every brand supports every action —
HTTP 501 is the expected response for unsupported operations (e.g. absolute move on Hanwha); run
PtzTest first to discover per-camera capabilities.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
