> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/navixy-api/user-api/resources/tracking/tracker/commands.md).

# Commands

Reusable commands defined on a tracker, sent to the device or to a URL on demand.

A command is a reusable action defined on one tracker and run when someone asks for it. Two kinds exist. A **hardware** command sends a protocol string straight to the device, to reboot its firmware or toggle a relay. An **HTTP** command sends a POST request with a JSON body to any URL, optionally carrying live device values in the payload.

Commands are stored per tracker and executed from the [Commands block](/docs/user/guide/devices-and-settings/object-management/commands.md) in the interface or through `command/execute`.

{% hint style="info" %}
Commands are for manual, on-demand actions on a single tracker. For automated, rule-based sending across many devices, use [IoT Logic](https://navixy.com/docs/iot-logic-api/) with the **Device action** or **Webhook** nodes.
{% endhint %}

{% hint style="warning" %}
Hardware command strings are device-specific. Always check the device manufacturer's documentation for valid values, because an incorrect string can have unintended effects on the device.
{% endhint %}

## Command object

The `config` object takes one of two shapes, chosen by `type`:

## The TrackerCommand object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"components":{"schemas":{"TrackerCommand":{"type":"object","description":"A reusable command defined on a tracker. The shape of `config` follows `type`: a `hardware` command sends a protocol string to the device, an `http` command sends a POST request to a URL.","properties":{"id":{"type":"integer","description":"Command ID, assigned by the server. Read-only."},"name":{"type":"string","description":"Human-readable label shown in the Commands block."},"type":{"type":"string","description":"Which kind of command this is.","enum":["hardware","http"]},"config":{"description":"Configuration for the command, shaped by `type`.","oneOf":[{"type":"object","title":"Hardware","description":"Sent when `type` is `hardware`.","properties":{"command":{"type":"string","description":"The exact protocol-level string sent to the device. Valid values are device-specific; consult the manufacturer's documentation, because an incorrect string can have unintended effects.\n\nMay contain a single `<>` placeholder, whose value the caller supplies as `param` on execute."},"reliable":{"type":"boolean","description":"When `true` the platform waits for the device to acknowledge delivery before marking the command sent."}}},{"type":"object","title":"HTTP","description":"Sent when `type` is `http`.","properties":{"url":{"type":"string","description":"Endpoint that receives the POST request."},"headers":{"type":"array","description":"Headers to send. May be empty.","items":{"type":"object","properties":{"key":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value."}}}},"body":{"type":"string","description":"JSON payload for the POST body. `{{attribute_name}}` placeholders are replaced with live device values at execution time.\n\nMay also contain a single `<>` placeholder, which is a different mechanism: its value is supplied per call as `param` on execute rather than read from the device."}}}]}}}}}}
```

In an HTTP command's `body`, `{{attribute_name}}` placeholders are replaced with the device's current values at the moment the command runs.

## Dynamic command values

A hardware command's `command` string, or an HTTP command's `body`, can carry a single `<>` placeholder in place of a fixed value. The caller supplies the substitution in `param` when running the command, and the Navixy platform replaces `<>` before sending. This lets one stored command cover a family of calls, such as a relay command whose channel number changes per use.

It is a different mechanism from the `{{attribute_name}}` placeholders above: those read live device values, while `<>` takes a value from the caller.

* A configuration may contain **at most one** `<>` placeholder. Create and update reject one with more.
* `param` is **required when the configuration contains a placeholder, and rejected when it does not.** Either mismatch returns error 7. A blank value counts as absent.
* `param` accepts up to 500 printable characters.

## API actions

API base path: `/tracker/command`. One call, `batch_get_commands`, sits at the tracker root instead.

Operations that list no errors of their own return only the [general error codes](/docs/navixy-api/general/errors.md#error-codes).

***

*Required sub-user rights:* `tracker_update`.

## Create a command

> Define a reusable command on a tracker. Commands are stored per tracker and executed on demand.\
> \
> A tracker holds \*\*at most 10 commands\*\*, and an eleventh is rejected. Commands cannot be created on a clone device.\
> \
> A configuration may contain \*\*at most one \`<>\` placeholder\*\*, and one with more than one is rejected. See the dynamic values note on execute.\
> \
> For automated, rule-based command sending across many devices, use IoT Logic's device action or webhook nodes instead; this family is for manual, single-tracker actions.\
> \
> Requires the \`tracker\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"schemas":{"TrackerCommand":{"type":"object","description":"A reusable command defined on a tracker. The shape of `config` follows `type`: a `hardware` command sends a protocol string to the device, an `http` command sends a POST request to a URL.","properties":{"id":{"type":"integer","description":"Command ID, assigned by the server. Read-only."},"name":{"type":"string","description":"Human-readable label shown in the Commands block."},"type":{"type":"string","description":"Which kind of command this is.","enum":["hardware","http"]},"config":{"description":"Configuration for the command, shaped by `type`.","oneOf":[{"type":"object","title":"Hardware","description":"Sent when `type` is `hardware`.","properties":{"command":{"type":"string","description":"The exact protocol-level string sent to the device. Valid values are device-specific; consult the manufacturer's documentation, because an incorrect string can have unintended effects.\n\nMay contain a single `<>` placeholder, whose value the caller supplies as `param` on execute."},"reliable":{"type":"boolean","description":"When `true` the platform waits for the device to acknowledge delivery before marking the command sent."}}},{"type":"object","title":"HTTP","description":"Sent when `type` is `http`.","properties":{"url":{"type":"string","description":"Endpoint that receives the POST request."},"headers":{"type":"array","description":"Headers to send. May be empty.","items":{"type":"object","properties":{"key":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value."}}}},"body":{"type":"string","description":"JSON payload for the POST body. `{{attribute_name}}` placeholders are replaced with live device values at execution time.\n\nMay also contain a single `<>` placeholder, which is a different mechanism: its value is supplied per call as `param` on execute rather than read from the device."}}}]}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/command/create":{"post":{"tags":["Trackers"],"summary":"Create a command","description":"Define a reusable command on a tracker. Commands are stored per tracker and executed on demand.\n\nA tracker holds **at most 10 commands**, and an eleventh is rejected. Commands cannot be created on a clone device.\n\nA configuration may contain **at most one `<>` placeholder**, and one with more than one is rejected. See the dynamic values note on execute.\n\nFor automated, rule-based command sending across many devices, use IoT Logic's device action or webhook nodes instead; this family is for manual, single-tracker actions.\n\nRequires the `tracker_update` right.","operationId":"trackerCommandCreate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker, also known as the object ID. Must belong to the current account and not be blocked."},"command":{"allOf":[{"$ref":"#/components/schemas/TrackerCommand"}],"description":"The command to create, without `id`."}},"required":["tracker_id","command"]}}}},"responses":{"200":{"description":"The created command","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"id":{"type":"integer","description":"ID of the new command."}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 201: the command or the tracker does not exist.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - The command or the tracker does not exist.

***

*Required sub-user rights:* `tracker_update`.

## Update a command

> Replace an existing command. \*\*The whole object must be sent, including its \`id\`\*\*; there is no partial update.\
> \
> As with create, the configuration may contain \*\*at most one \`<>\` placeholder\*\*, and one with more than one is rejected.\
> \
> Requires the \`tracker\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"schemas":{"TrackerCommand":{"type":"object","description":"A reusable command defined on a tracker. The shape of `config` follows `type`: a `hardware` command sends a protocol string to the device, an `http` command sends a POST request to a URL.","properties":{"id":{"type":"integer","description":"Command ID, assigned by the server. Read-only."},"name":{"type":"string","description":"Human-readable label shown in the Commands block."},"type":{"type":"string","description":"Which kind of command this is.","enum":["hardware","http"]},"config":{"description":"Configuration for the command, shaped by `type`.","oneOf":[{"type":"object","title":"Hardware","description":"Sent when `type` is `hardware`.","properties":{"command":{"type":"string","description":"The exact protocol-level string sent to the device. Valid values are device-specific; consult the manufacturer's documentation, because an incorrect string can have unintended effects.\n\nMay contain a single `<>` placeholder, whose value the caller supplies as `param` on execute."},"reliable":{"type":"boolean","description":"When `true` the platform waits for the device to acknowledge delivery before marking the command sent."}}},{"type":"object","title":"HTTP","description":"Sent when `type` is `http`.","properties":{"url":{"type":"string","description":"Endpoint that receives the POST request."},"headers":{"type":"array","description":"Headers to send. May be empty.","items":{"type":"object","properties":{"key":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value."}}}},"body":{"type":"string","description":"JSON payload for the POST body. `{{attribute_name}}` placeholders are replaced with live device values at execution time.\n\nMay also contain a single `<>` placeholder, which is a different mechanism: its value is supplied per call as `param` on execute rather than read from the device."}}}]}}}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/command/update":{"post":{"tags":["Trackers"],"summary":"Update a command","description":"Replace an existing command. **The whole object must be sent, including its `id`**; there is no partial update.\n\nAs with create, the configuration may contain **at most one `<>` placeholder**, and one with more than one is rejected.\n\nRequires the `tracker_update` right.","operationId":"trackerCommandUpdate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker, also known as the object ID. Must belong to the current account and not be blocked."},"command":{"allOf":[{"$ref":"#/components/schemas/TrackerCommand"}],"description":"The full command object, including `id`."}},"required":["tracker_id","command"]}}}},"responses":{"200":{"description":"The command was updated","$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 201: the command or the tracker does not exist.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - The command or the tracker does not exist.

***

*Required sub-user rights:* `tracker_configure`, `tracker_set_output`.

If the command's configuration contains a `<>` placeholder, pass its value in `param`. See [Dynamic command values](#dynamic-command-values).

## Execute a command

> Run a stored command immediately. A \`hardware\` command sends its string to the device; an \`http\` command dispatches the POST request with live attribute values substituted into the body.\
> \
> \*\*Dynamic values.\*\* Where the command's configuration contains a \`<>\` placeholder, the value that replaces it is supplied here as \`param\`, and the substitution happens before the command is sent. \`param\` is \*\*required when the configuration contains a placeholder, and rejected when it does not\*\*: either mismatch returns error 7. A blank \`param\` counts as absent.\
> \
> Requires the \`tracker\_configure\` and \`tracker\_set\_output\` rights.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/command/execute":{"post":{"tags":["Trackers"],"summary":"Execute a command","description":"Run a stored command immediately. A `hardware` command sends its string to the device; an `http` command dispatches the POST request with live attribute values substituted into the body.\n\n**Dynamic values.** Where the command's configuration contains a `<>` placeholder, the value that replaces it is supplied here as `param`, and the substitution happens before the command is sent. `param` is **required when the configuration contains a placeholder, and rejected when it does not**: either mismatch returns error 7. A blank `param` counts as absent.\n\nRequires the `tracker_configure` and `tracker_set_output` rights.","operationId":"trackerCommandExecute","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker, also known as the object ID. Must belong to the current account and not be blocked."},"command_id":{"type":"integer","description":"ID of the command to run.","minimum":1},"param":{"type":"string","description":"Value that replaces the `<>` placeholder in the command configuration. Required if the configuration contains one, rejected if it does not. Up to 500 printable characters.","maxLength":500}},"required":["tracker_id","command_id"]}}}},"responses":{"200":{"description":"The command was executed","$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 201: the command or the tracker does not exist.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - The command or the tracker does not exist.

***

*Required sub-user rights:* `tracker_update`.

## Delete a command

> Remove a stored command from a tracker.\
> \
> Requires the \`tracker\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/command/delete":{"post":{"tags":["Trackers"],"summary":"Delete a command","description":"Remove a stored command from a tracker.\n\nRequires the `tracker_update` right.","operationId":"trackerCommandDelete","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker, also known as the object ID. Must belong to the current account and not be blocked."},"command_id":{"type":"integer","description":"ID of the command to delete.","minimum":1}},"required":["tracker_id","command_id"]}}}},"responses":{"200":{"description":"The command was deleted","$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 201: the command or the tracker does not exist.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - The command or the tracker does not exist.

***

## Read commands for several trackers

> Get the stored commands for the given trackers, grouped by tracker ID. Available to demo accounts.\
> \
> Omitting \`trackers\` returns commands for every tracker the account can reach. Trackers with no commands come back as empty arrays.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"schemas":{"TrackerCommand":{"type":"object","description":"A reusable command defined on a tracker. The shape of `config` follows `type`: a `hardware` command sends a protocol string to the device, an `http` command sends a POST request to a URL.","properties":{"id":{"type":"integer","description":"Command ID, assigned by the server. Read-only."},"name":{"type":"string","description":"Human-readable label shown in the Commands block."},"type":{"type":"string","description":"Which kind of command this is.","enum":["hardware","http"]},"config":{"description":"Configuration for the command, shaped by `type`.","oneOf":[{"type":"object","title":"Hardware","description":"Sent when `type` is `hardware`.","properties":{"command":{"type":"string","description":"The exact protocol-level string sent to the device. Valid values are device-specific; consult the manufacturer's documentation, because an incorrect string can have unintended effects.\n\nMay contain a single `<>` placeholder, whose value the caller supplies as `param` on execute."},"reliable":{"type":"boolean","description":"When `true` the platform waits for the device to acknowledge delivery before marking the command sent."}}},{"type":"object","title":"HTTP","description":"Sent when `type` is `http`.","properties":{"url":{"type":"string","description":"Endpoint that receives the POST request."},"headers":{"type":"array","description":"Headers to send. May be empty.","items":{"type":"object","properties":{"key":{"type":"string","description":"Header name."},"value":{"type":"string","description":"Header value."}}}},"body":{"type":"string","description":"JSON payload for the POST body. `{{attribute_name}}` placeholders are replaced with live device values at execution time.\n\nMay also contain a single `<>` placeholder, which is a different mechanism: its value is supplied per call as `param` on execute rather than read from the device."}}}]}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/batch_get_commands":{"post":{"tags":["Trackers"],"summary":"Read commands for several trackers","description":"Get the stored commands for the given trackers, grouped by tracker ID. Available to demo accounts.\n\nOmitting `trackers` returns commands for every tracker the account can reach. Trackers with no commands come back as empty arrays.","operationId":"trackerBatchGetCommands","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"trackers":{"type":"array","description":"Optional. Tracker IDs. Omit for every accessible tracker.","items":{"type":"integer"}}}}}}},"responses":{"200":{"description":"Commands per tracker","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"result":{"type":"object","description":"Command lists keyed by tracker ID.","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/TrackerCommand"}}}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/navixy-api/user-api/resources/tracking/tracker/commands.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
