DEVELOPER RESOURCES
Neovo Manager REST API
Connect your platform to Neovo Manager. Explore device information, monitor live status, and integrate remote control into your workflow.
No matching sections. Try another API, field, or error code.
Getting Started
Obtain a Provider Key, query the device list, then use deviceId to retrieve device information or send commands.
Authentication
All APIs require the header X-Provider-Key. Contact your AG Neovo technical representative to obtain a Provider Key.
X-Provider-Key: YOUR_PROVIDER_KEY
http://localhost. A production API URL is not provided. The examples below use https://YOUR_API_HOST as a placeholder.API Directory
| Method | Function | Path |
|---|---|---|
| GET | Device List | /api/partner/devices |
| GET | Device Details | /api/partner/devices/{deviceId} |
| GET | Live Device Status | /api/partner/devices/{deviceId}/status |
| POST | Send a Control Command | /api/partner/devices/{deviceId}/commands |
Rate Limits
The source specification lists the following limit for each API: 30 requests / 60 seconds. Exceeding the limit returns HTTP 429. Control commands are not forwarded to the device when rate-limited. The source does not specify how the limit is scoped.
Notes on the Source Specification
The control API description states that both successful and failed responses include requestId / commandId, but the original HTTP 429 example contains only message. Both are retained below; confirm the actual behavior with your technical representative.
The params type is listed as object, but its original example is []. This reference retains that example. The response type for muteStatus is string / null, while setMute accepts a boolean in the request.
Device List
List devices within the provider’s authorized scope, with search, filters, and pagination.
List devices within the provider's authorized scope.
/api/partner/devicesRequest Parameters
| Location | Name | Type | Required | Description | Example |
|---|---|---|---|---|---|
| query | keyword | string | No | Fuzzy search by device name/serial number. | "NVW-100" |
| query | organizationId | integer | No | Restrict the query to a specific organization ID. | 123 |
| query | onlineStatus | string | No | Filter by online status; accepts only "online" or "offline". | "online" |
| query | modelName | string | No | Filter by device model. | "NVW-100" |
| query | page | integer | No | Page number, starting from 1. | 1 |
| query | pageSize | integer | No | Items per page, max 100. | 20 |
| header | X-Provider-Key | string | Yes (authentication) | Provider Key supplied by AG Neovo. | "{YOUR_PROVIDER_KEY}" |
Optional GET Request Body Listed in the Source
The source lists both query parameters and a request body. Both are retained here; confirm the intended integration method with your technical representative.
| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
keyword | string | Not specified | Must not be greater than 255 characters. | "vmqeopfuudtdsufvyvddq" |
organizationId | integer | Not specified | 17 | |
onlineStatus | string | Not specified | Allowed values: [ "online", "offline" ] | "offline" |
modelName | string | Not specified | Must not be greater than 255 characters. | "qeopfuudtdsufvyvddqam" |
page | integer | Not specified | Must be at least 1. | 46 |
pageSize | integer | Not specified | Must be at least 1. Must not be greater than 100. | 8 |
Request Example
Illustrative cURL example. Replace YOUR_API_HOST and YOUR_PROVIDER_KEY with your values.
curl -X GET 'https://YOUR_API_HOST/api/partner/devices?onlineStatus=online&page=1&pageSize=20' \ -H 'X-Provider-Key: YOUR_PROVIDER_KEY'
Success Response · HTTP 200
{
"error_code": 200,
"error_msg": "Success",
"devices": [
{
"deviceId": "NVW100-0001",
"modelName": "NVW-100",
"onlineStatus": "online",
"organizationId": 123
}
],
"total": 1,
"page": 1,
"pageSize": 20
}View Success Response Fields
| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 200 |
error_msg | string | Not specified | — | "Success" |
devices | array | Not specified | — | [
{
"deviceId": "NVW100-0001",
"modelName": "NVW-100",
"onlineStatus": "online",
"organizationId": 123
}
] |
devices[].deviceId | string | Not specified | — | "NVW100-0001" |
devices[].modelName | string | Not specified | — | "NVW-100" |
devices[].onlineStatus | string | Not specified | — | "online" |
devices[].organizationId | integer | Not specified | — | 123 |
total | integer | Not specified | — | 1 |
page | integer | Not specified | — | 1 |
pageSize | integer | Not specified | — | 20 |
Error Response · HTTP 400
Use the error codes below to identify the cause.
| error_code | Condition | error_msg |
|---|---|---|
| 90101 | Missing API key | Provider key required |
| 90102 | Invalid API key | Invalid provider key |
| 90113 | organizationId out of authorized scope | organizationId out of provider scope |
90101 · Missing API key
{
"error_code": 90101,
"error_msg": "Provider key required",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90101 |
error_msg | string | Not specified | — | "Provider key required" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90102 · Invalid API key
{
"error_code": 90102,
"error_msg": "Invalid provider key",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90102 |
error_msg | string | Not specified | — | "Invalid provider key" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90113 · organizationId out of authorized scope
{
"error_code": 90113,
"error_msg": "organizationId out of provider scope",
"error_details": null,
"additional_data": []
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90113 |
error_msg | string | Not specified | — | "organizationId out of provider scope" |
error_details | string / null | Not specified | — | null |
additional_data | array | Not specified | — | [] |
Error Response · HTTP 429
Rate limit exceeded (30 requests / 60 seconds)
| error_code | Condition | error_msg |
|---|---|---|
| — | Rate limit exceeded (30 requests / 60 seconds) | Too Many Attempts. |
429 · Full Response Example and Fields
{
"message": "Too Many Attempts."
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
message | string | Not specified | — | "Too Many Attempts." |
¹ “Not specified” means the source schema does not list the field as required. It does not mean the field can be omitted in every situation. Required params depend on the command.
Device Details
Retrieve basic information for a single device by its serial number.
Get detail of a single device.
/api/partner/devices/{deviceId}Request Parameters
| Location | Name | Type | Required | Description | Example |
|---|---|---|---|---|---|
| path | deviceId | string | Yes | Device serial number. | "NVW100-0001" |
| header | X-Provider-Key | string | Yes (authentication) | Provider Key supplied by AG Neovo. | "{YOUR_PROVIDER_KEY}" |
Request Example
Illustrative cURL example. Replace YOUR_API_HOST and YOUR_PROVIDER_KEY with your values.
curl -X GET 'https://YOUR_API_HOST/api/partner/devices/NVW100-0001' \ -H 'X-Provider-Key: YOUR_PROVIDER_KEY'
Success Response · HTTP 200
{
"error_code": 200,
"error_msg": "Success",
"deviceId": "NVW100-0001",
"modelName": "NVW-100",
"onlineStatus": "online",
"organizationId": 123
}View Success Response Fields
| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 200 |
error_msg | string | Not specified | — | "Success" |
deviceId | string | Not specified | — | "NVW100-0001" |
modelName | string | Not specified | — | "NVW-100" |
onlineStatus | string | Not specified | — | "online" |
organizationId | integer | Not specified | — | 123 |
Error Response · HTTP 400
Use the error codes below to identify the cause.
| error_code | Condition | error_msg |
|---|---|---|
| 90101 | Missing API key | Provider key required |
| 90102 | Invalid API key | Invalid provider key |
| 90114 | Device not found | Device not found |
| 90103 | Device out of authorized scope | Device not in provider scope |
90101 · Missing API key
{
"error_code": 90101,
"error_msg": "Provider key required",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90101 |
error_msg | string | Not specified | — | "Provider key required" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90102 · Invalid API key
{
"error_code": 90102,
"error_msg": "Invalid provider key",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90102 |
error_msg | string | Not specified | — | "Invalid provider key" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90114 · Device not found
{
"error_code": 90114,
"error_msg": "Device not found",
"error_details": null,
"additional_data": []
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90114 |
error_msg | string | Not specified | — | "Device not found" |
error_details | string / null | Not specified | — | null |
additional_data | array | Not specified | — | [] |
90103 · Device out of authorized scope
{
"error_code": 90103,
"error_msg": "Device not in provider scope",
"error_details": null,
"additional_data": []
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90103 |
error_msg | string | Not specified | — | "Device not in provider scope" |
error_details | string / null | Not specified | — | null |
additional_data | array | Not specified | — | [] |
Error Response · HTTP 429
Rate limit exceeded (30 requests / 60 seconds)
| error_code | Condition | error_msg |
|---|---|---|
| — | Rate limit exceeded (30 requests / 60 seconds) | Too Many Attempts. |
429 · Full Response Example and Fields
{
"message": "Too Many Attempts."
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
message | string | Not specified | — | "Too Many Attempts." |
¹ “Not specified” means the source schema does not list the field as required. It does not mean the field can be omitted in every situation. Required params depend on the command.
Live Device Status
Read the power, volume, input source, and mute status of a single device.
Get live status of a single device (power/volume/input source, etc.).
/api/partner/devices/{deviceId}/statusRequest Parameters
| Location | Name | Type | Required | Description | Example |
|---|---|---|---|---|---|
| path | deviceId | string | Yes | Device serial number. | "NVW100-0001" |
| header | X-Provider-Key | string | Yes (authentication) | Provider Key supplied by AG Neovo. | "{YOUR_PROVIDER_KEY}" |
Request Example
Illustrative cURL example. Replace YOUR_API_HOST and YOUR_PROVIDER_KEY with your values.
curl -X GET 'https://YOUR_API_HOST/api/partner/devices/NVW100-0001/status' \ -H 'X-Provider-Key: YOUR_PROVIDER_KEY'
Success Response · HTTP 200
{
"error_code": 200,
"error_msg": "Success",
"powerStatus": "on",
"volume": 50,
"currentSource": "HDMI1",
"muteStatus": null
}View Success Response Fields
| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 200 |
error_msg | string | Not specified | — | "Success" |
powerStatus | string | Not specified | — | "on" |
volume | integer | Not specified | — | 50 |
currentSource | string | Not specified | — | "HDMI1" |
muteStatus | string / null | Not specified | — | null |
Error Response · HTTP 400
Use the error codes below to identify the cause.
| error_code | Condition | error_msg |
|---|---|---|
| 90101 | Missing API key | Provider key required |
| 90102 | Invalid API key | Invalid provider key |
| 90114 | Device not found | Device not found |
| 90103 | Device out of authorized scope | Device not in provider scope |
90101 · Missing API key
{
"error_code": 90101,
"error_msg": "Provider key required",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90101 |
error_msg | string | Not specified | — | "Provider key required" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90102 · Invalid API key
{
"error_code": 90102,
"error_msg": "Invalid provider key",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90102 |
error_msg | string | Not specified | — | "Invalid provider key" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90114 · Device not found
{
"error_code": 90114,
"error_msg": "Device not found",
"error_details": null,
"additional_data": []
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90114 |
error_msg | string | Not specified | — | "Device not found" |
error_details | string / null | Not specified | — | null |
additional_data | array | Not specified | — | [] |
90103 · Device out of authorized scope
{
"error_code": 90103,
"error_msg": "Device not in provider scope",
"error_details": null,
"additional_data": []
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90103 |
error_msg | string | Not specified | — | "Device not in provider scope" |
error_details | string / null | Not specified | — | null |
additional_data | array | Not specified | — | [] |
Error Response · HTTP 429
Rate limit exceeded (30 requests / 60 seconds)
| error_code | Condition | error_msg |
|---|---|---|
| — | Rate limit exceeded (30 requests / 60 seconds) | Too Many Attempts. |
429 · Full Response Example and Fields
{
"message": "Too Many Attempts."
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
message | string | Not specified | — | "Too Many Attempts." |
¹ “Not specified” means the source schema does not list the field as required. It does not mean the field can be omitted in every situation. Required params depend on the command.
Send a Control Command
Control a single device’s power, volume, mute setting, input source, or reboot it.
Send a control command to a single device (power/volume/mute/input source/reboot).
/api/partner/devices/{deviceId}/commandsThe response always includes requestId/commandId for tracing, on every success and failure path (including validation errors).
Request Parameters
| Location | Name | Type | Required | Description | Example |
|---|---|---|---|---|---|
| path | deviceId | string | Yes | Device serial number. | "NVW100-0001" |
| header | X-Provider-Key | string | Yes (authentication) | Provider Key supplied by AG Neovo. | "{YOUR_PROVIDER_KEY}" |
JSON Request Body · Required
| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
command | string | Required | Command type. Allowed values: powerOn, powerOff, setVolume, setMute, setInputSource, reboot (see DeviceCommandService::SUPPORTED_COMMANDS). | "powerOn" |
params | object | Not specified | Command parameters; which fields are required depends on the command type. | [] |
params.volume | integer | Not specified | Volume level 0-100, used when command=setVolume. | 50 |
params.source | string | Not specified | Input source name, used when command=setInputSource. | "HDMI1" |
params.mute | boolean | Not specified | Mute on/off, used when command=setMute. | true |
Command Quick Reference
| command | Purpose | params |
|---|---|---|
powerOn | Power on | Not specified |
powerOff | Power off | Not specified |
setVolume | Set volume | {"volume": 50} · Range: 0–100 |
setMute | Set mute | {"mute": true} |
setInputSource | Change input source | {"source": "HDMI1"} |
reboot | Reboot | Not specified |
This quick reference is based on the original field descriptions. Supported input source values depend on the device’s capabilities.
Request Example
Illustrative cURL example. Replace YOUR_API_HOST and YOUR_PROVIDER_KEY with your values.
curl -X POST 'https://YOUR_API_HOST/api/partner/devices/NVW100-0001/commands' \
-H 'X-Provider-Key: YOUR_PROVIDER_KEY' \
-H 'Content-Type: application/json' \
-d '{"command":"setVolume","params":{"volume":50}}'Success Response · HTTP 200
{
"error_code": 200,
"error_msg": "Success",
"responseStatus": 200,
"responseMsg": "OK",
"retried": false,
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}View Success Response Fields
| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 200 |
error_msg | string | Not specified | — | "Success" |
responseStatus | integer | Not specified | — | 200 |
responseMsg | string | Not specified | — | "OK" |
retried | boolean | Not specified | — | false |
requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
Error Response · HTTP 400
Use the error codes below to identify the cause.
| error_code | Condition | error_msg |
|---|---|---|
| 2 | Validation failed | Invalid Format |
| 90101 | Missing API key | Provider key required |
| 90102 | Invalid API key | Invalid provider key |
| 90114 | Device not found | Device not found |
| 90103 | Device out of authorized scope | Device not in provider scope |
| 90104 | Unsupported device model (non-NSD series) | Model not controllable: LFD-5500 |
| 90105 | Device has never been paired | Device not paired |
| 90106 | Device offline | Device offline |
| 90107 | Device IP address unknown | Device address unknown |
| 90108 | Unsupported command | Unsupported command: foo |
| 90109 | Missing or out-of-range command parameter | Missing or invalid parameter: volume |
| 90110 | Device failed to execute the command | Device command failed |
| 90111 | Timed out waiting for device response | Device command timeout |
| 90112 | Bridge service unreachable | Bridge service unreachable |
2 · Validation failed
{
"error_code": 2,
"error_msg": "Invalid Format",
"error_details": {
"validator_error": {
"command": [
"The selected command is invalid."
]
}
},
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 2 |
error_msg | string | Not specified | — | "Invalid Format" |
error_details | object | Not specified | — | — |
error_details.validator_error | object | Not specified | — | — |
error_details.validator_error.command | array | Not specified | — | [
"The selected command is invalid."
] |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90101 · Missing API key
{
"error_code": 90101,
"error_msg": "Provider key required",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90101 |
error_msg | string | Not specified | — | "Provider key required" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90102 · Invalid API key
{
"error_code": 90102,
"error_msg": "Invalid provider key",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90102 |
error_msg | string | Not specified | — | "Invalid provider key" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90114 · Device not found
{
"error_code": 90114,
"error_msg": "Device not found",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90114 |
error_msg | string | Not specified | — | "Device not found" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90103 · Device out of authorized scope
{
"error_code": 90103,
"error_msg": "Device not in provider scope",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90103 |
error_msg | string | Not specified | — | "Device not in provider scope" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90104 · Unsupported device model (non-NSD series)
{
"error_code": 90104,
"error_msg": "Model not controllable: LFD-5500",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90104 |
error_msg | string | Not specified | — | "Model not controllable: LFD-5500" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90105 · Device has never been paired
{
"error_code": 90105,
"error_msg": "Device not paired",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90105 |
error_msg | string | Not specified | — | "Device not paired" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90106 · Device offline
{
"error_code": 90106,
"error_msg": "Device offline",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90106 |
error_msg | string | Not specified | — | "Device offline" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90107 · Device IP address unknown
{
"error_code": 90107,
"error_msg": "Device address unknown",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90107 |
error_msg | string | Not specified | — | "Device address unknown" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90108 · Unsupported command
{
"error_code": 90108,
"error_msg": "Unsupported command: foo",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90108 |
error_msg | string | Not specified | — | "Unsupported command: foo" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90109 · Missing or out-of-range command parameter
{
"error_code": 90109,
"error_msg": "Missing or invalid parameter: volume",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90109 |
error_msg | string | Not specified | — | "Missing or invalid parameter: volume" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90110 · Device failed to execute the command
{
"error_code": 90110,
"error_msg": "Device command failed",
"error_details": {
"responseMsg": "missing link"
},
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90110 |
error_msg | string | Not specified | — | "Device command failed" |
error_details | object | Not specified | — | — |
error_details.responseMsg | string | Not specified | — | "missing link" |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90111 · Timed out waiting for device response
{
"error_code": 90111,
"error_msg": "Device command timeout",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90111 |
error_msg | string | Not specified | — | "Device command timeout" |
error_details | string / null | Not specified | — | null |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
90112 · Bridge service unreachable
{
"error_code": 90112,
"error_msg": "Bridge service unreachable",
"error_details": {
"reason": "Connection timed out"
},
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
error_code | integer | Not specified | — | 90112 |
error_msg | string | Not specified | — | "Bridge service unreachable" |
error_details | object | Not specified | — | — |
error_details.reason | string | Not specified | — | "Connection timed out" |
additional_data | object | Not specified | — | — |
additional_data.requestId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
additional_data.commandId | string | Not specified | — | "b3cecfb9-1234-4a5e-8b6c-000000000000" |
Error Response · HTTP 429
Rate limit exceeded (30 requests / 60 seconds); the command is not forwarded to the device
| error_code | Condition | error_msg |
|---|---|---|
| — | Rate limit exceeded (30 requests / 60 seconds); the command is not forwarded to the device | Too Many Attempts. |
429 · Full Response Example and Fields
{
"message": "Too Many Attempts."
}| Field | Type | Required¹ | Description / Constraints | Original Example |
|---|---|---|---|---|
message | string | Not specified | — | "Too Many Attempts." |
¹ “Not specified” means the source schema does not list the field as required. It does not mean the field can be omitted in every situation. Required params depend on the command.
View the Complete OpenAPI Specification (English Translation)
{
"openapi": "3.0.3",
"info": {
"title": "Laravel API Documentation",
"description": "",
"version": "1.0.0"
},
"servers": [
{
"url": "http://localhost"
}
],
"tags": [
{
"name": "CMS Partner Open API",
"description": ""
}
],
"components": {
"securitySchemes": {
"default": {
"type": "apiKey",
"name": "X-Provider-Key",
"in": "header",
"description": "The Provider Key is supplied by AG Neovo. Contact your technical representative to obtain it."
}
}
},
"security": [
{
"default": []
}
],
"paths": {
"/api/partner/devices": {
"get": {
"summary": "List devices within the provider's authorized scope.",
"operationId": "listDevicesWithinTheProvidersAuthorizedScope",
"description": "",
"parameters": [
{
"in": "query",
"name": "keyword",
"description": "Fuzzy search by device name/serial number.",
"example": "NVW-100",
"required": false,
"schema": {
"type": "string",
"description": "Fuzzy search by device name/serial number.",
"example": "NVW-100"
}
},
{
"in": "query",
"name": "organizationId",
"description": "Restrict the query to a specific organization ID.",
"example": 123,
"required": false,
"schema": {
"type": "integer",
"description": "Restrict the query to a specific organization ID.",
"example": 123
}
},
{
"in": "query",
"name": "onlineStatus",
"description": "Filter by online status; accepts only \"online\" or \"offline\".",
"example": "online",
"required": false,
"schema": {
"type": "string",
"description": "Filter by online status; accepts only \"online\" or \"offline\".",
"example": "online"
}
},
{
"in": "query",
"name": "modelName",
"description": "Filter by device model.",
"example": "NVW-100",
"required": false,
"schema": {
"type": "string",
"description": "Filter by device model.",
"example": "NVW-100"
}
},
{
"in": "query",
"name": "page",
"description": "Page number, starting from 1.",
"example": 1,
"required": false,
"schema": {
"type": "integer",
"description": "Page number, starting from 1.",
"example": 1
}
},
{
"in": "query",
"name": "pageSize",
"description": "Items per page, max 100.",
"example": 20,
"required": false,
"schema": {
"type": "integer",
"description": "Items per page, max 100.",
"example": 20
}
},
{
"in": "header",
"name": "X-Provider-Key",
"description": "",
"example": "{YOUR_PROVIDER_KEY}",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {
"error_code": 200,
"error_msg": "Success",
"devices": [
{
"deviceId": "NVW100-0001",
"modelName": "NVW-100",
"onlineStatus": "online",
"organizationId": 123
}
],
"total": 1,
"page": 1,
"pageSize": 20
},
"properties": {
"error_code": {
"type": "integer",
"example": 200
},
"error_msg": {
"type": "string",
"example": "Success"
},
"devices": {
"type": "array",
"example": [
{
"deviceId": "NVW100-0001",
"modelName": "NVW-100",
"onlineStatus": "online",
"organizationId": 123
}
],
"items": {
"type": "object",
"properties": {
"deviceId": {
"type": "string",
"example": "NVW100-0001"
},
"modelName": {
"type": "string",
"example": "NVW-100"
},
"onlineStatus": {
"type": "string",
"example": "online"
},
"organizationId": {
"type": "integer",
"example": 123
}
}
}
},
"total": {
"type": "integer",
"example": 1
},
"page": {
"type": "integer",
"example": 1
},
"pageSize": {
"type": "integer",
"example": 20
}
}
}
}
}
},
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"description": "Missing API key",
"type": "object",
"example": {
"error_code": 90101,
"error_msg": "Provider key required",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90101
},
"error_msg": {
"type": "string",
"example": "Provider key required"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Invalid API key",
"type": "object",
"example": {
"error_code": 90102,
"error_msg": "Invalid provider key",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90102
},
"error_msg": {
"type": "string",
"example": "Invalid provider key"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "organizationId out of authorized scope",
"type": "object",
"example": {
"error_code": 90113,
"error_msg": "organizationId out of provider scope",
"error_details": null,
"additional_data": []
},
"properties": {
"error_code": {
"type": "integer",
"example": 90113
},
"error_msg": {
"type": "string",
"example": "organizationId out of provider scope"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "array",
"example": []
}
}
}
]
}
}
}
},
"429": {
"description": "Rate limit exceeded (30 requests / 60 seconds)",
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {
"message": "Too Many Attempts."
},
"properties": {
"message": {
"type": "string",
"example": "Too Many Attempts."
}
}
}
}
}
}
},
"tags": [
"CMS Partner Open API"
],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"keyword": {
"type": "string",
"description": "Must not be greater than 255 characters.",
"example": "vmqeopfuudtdsufvyvddq"
},
"organizationId": {
"type": "integer",
"description": "",
"example": 17
},
"onlineStatus": {
"type": "string",
"description": "",
"example": "offline",
"enum": [
"online",
"offline"
]
},
"modelName": {
"type": "string",
"description": "Must not be greater than 255 characters.",
"example": "qeopfuudtdsufvyvddqam"
},
"page": {
"type": "integer",
"description": "Must be at least 1.",
"example": 46
},
"pageSize": {
"type": "integer",
"description": "Must be at least 1. Must not be greater than 100.",
"example": 8
}
}
}
}
}
}
}
},
"/api/partner/devices/{deviceId}": {
"get": {
"summary": "Get detail of a single device.",
"operationId": "getDetailOfASingleDevice",
"description": "",
"parameters": [
{
"in": "header",
"name": "X-Provider-Key",
"description": "",
"example": "{YOUR_PROVIDER_KEY}",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {
"error_code": 200,
"error_msg": "Success",
"deviceId": "NVW100-0001",
"modelName": "NVW-100",
"onlineStatus": "online",
"organizationId": 123
},
"properties": {
"error_code": {
"type": "integer",
"example": 200
},
"error_msg": {
"type": "string",
"example": "Success"
},
"deviceId": {
"type": "string",
"example": "NVW100-0001"
},
"modelName": {
"type": "string",
"example": "NVW-100"
},
"onlineStatus": {
"type": "string",
"example": "online"
},
"organizationId": {
"type": "integer",
"example": 123
}
}
}
}
}
},
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"description": "Missing API key",
"type": "object",
"example": {
"error_code": 90101,
"error_msg": "Provider key required",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90101
},
"error_msg": {
"type": "string",
"example": "Provider key required"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Invalid API key",
"type": "object",
"example": {
"error_code": 90102,
"error_msg": "Invalid provider key",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90102
},
"error_msg": {
"type": "string",
"example": "Invalid provider key"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Device not found",
"type": "object",
"example": {
"error_code": 90114,
"error_msg": "Device not found",
"error_details": null,
"additional_data": []
},
"properties": {
"error_code": {
"type": "integer",
"example": 90114
},
"error_msg": {
"type": "string",
"example": "Device not found"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "array",
"example": []
}
}
},
{
"description": "Device out of authorized scope",
"type": "object",
"example": {
"error_code": 90103,
"error_msg": "Device not in provider scope",
"error_details": null,
"additional_data": []
},
"properties": {
"error_code": {
"type": "integer",
"example": 90103
},
"error_msg": {
"type": "string",
"example": "Device not in provider scope"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "array",
"example": []
}
}
}
]
}
}
}
},
"429": {
"description": "Rate limit exceeded (30 requests / 60 seconds)",
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {
"message": "Too Many Attempts."
},
"properties": {
"message": {
"type": "string",
"example": "Too Many Attempts."
}
}
}
}
}
}
},
"tags": [
"CMS Partner Open API"
]
},
"parameters": [
{
"in": "path",
"name": "deviceId",
"description": "Device serial number.",
"example": "NVW100-0001",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"/api/partner/devices/{deviceId}/status": {
"get": {
"summary": "Get live status of a single device (power/volume/input source, etc.).",
"operationId": "getLiveStatusOfASingleDevicepowervolumeinputSourceEtc",
"description": "",
"parameters": [
{
"in": "header",
"name": "X-Provider-Key",
"description": "",
"example": "{YOUR_PROVIDER_KEY}",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {
"error_code": 200,
"error_msg": "Success",
"powerStatus": "on",
"volume": 50,
"currentSource": "HDMI1",
"muteStatus": null
},
"properties": {
"error_code": {
"type": "integer",
"example": 200
},
"error_msg": {
"type": "string",
"example": "Success"
},
"powerStatus": {
"type": "string",
"example": "on"
},
"volume": {
"type": "integer",
"example": 50
},
"currentSource": {
"type": "string",
"example": "HDMI1"
},
"muteStatus": {
"type": "string",
"example": null,
"nullable": true
}
}
}
}
}
},
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"description": "Missing API key",
"type": "object",
"example": {
"error_code": 90101,
"error_msg": "Provider key required",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90101
},
"error_msg": {
"type": "string",
"example": "Provider key required"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Invalid API key",
"type": "object",
"example": {
"error_code": 90102,
"error_msg": "Invalid provider key",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90102
},
"error_msg": {
"type": "string",
"example": "Invalid provider key"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Device not found",
"type": "object",
"example": {
"error_code": 90114,
"error_msg": "Device not found",
"error_details": null,
"additional_data": []
},
"properties": {
"error_code": {
"type": "integer",
"example": 90114
},
"error_msg": {
"type": "string",
"example": "Device not found"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "array",
"example": []
}
}
},
{
"description": "Device out of authorized scope",
"type": "object",
"example": {
"error_code": 90103,
"error_msg": "Device not in provider scope",
"error_details": null,
"additional_data": []
},
"properties": {
"error_code": {
"type": "integer",
"example": 90103
},
"error_msg": {
"type": "string",
"example": "Device not in provider scope"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "array",
"example": []
}
}
}
]
}
}
}
},
"429": {
"description": "Rate limit exceeded (30 requests / 60 seconds)",
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {
"message": "Too Many Attempts."
},
"properties": {
"message": {
"type": "string",
"example": "Too Many Attempts."
}
}
}
}
}
}
},
"tags": [
"CMS Partner Open API"
]
},
"parameters": [
{
"in": "path",
"name": "deviceId",
"description": "Device serial number.",
"example": "NVW100-0001",
"required": true,
"schema": {
"type": "string"
}
}
]
},
"/api/partner/devices/{deviceId}/commands": {
"post": {
"summary": "Send a control command to a single device (power/volume/mute/input source/reboot).",
"operationId": "sendAControlCommandToASingleDevicepowervolumemuteinputSourcereboot",
"description": "The response always includes requestId/commandId for tracing, on every\nsuccess and failure path (including validation errors).",
"parameters": [
{
"in": "header",
"name": "X-Provider-Key",
"description": "",
"example": "{YOUR_PROVIDER_KEY}",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {
"error_code": 200,
"error_msg": "Success",
"responseStatus": 200,
"responseMsg": "OK",
"retried": false,
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"properties": {
"error_code": {
"type": "integer",
"example": 200
},
"error_msg": {
"type": "string",
"example": "Success"
},
"responseStatus": {
"type": "integer",
"example": 200
},
"responseMsg": {
"type": "string",
"example": "OK"
},
"retried": {
"type": "boolean",
"example": false
},
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
}
},
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"description": "Validation failed",
"type": "object",
"example": {
"error_code": 2,
"error_msg": "Invalid Format",
"error_details": {
"validator_error": {
"command": [
"The selected command is invalid."
]
}
},
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 2
},
"error_msg": {
"type": "string",
"example": "Invalid Format"
},
"error_details": {
"type": "object",
"properties": {
"validator_error": {
"type": "object",
"properties": {
"command": {
"type": "array",
"example": [
"The selected command is invalid."
],
"items": {
"type": "string"
}
}
}
}
}
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Missing API key",
"type": "object",
"example": {
"error_code": 90101,
"error_msg": "Provider key required",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90101
},
"error_msg": {
"type": "string",
"example": "Provider key required"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Invalid API key",
"type": "object",
"example": {
"error_code": 90102,
"error_msg": "Invalid provider key",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90102
},
"error_msg": {
"type": "string",
"example": "Invalid provider key"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Device not found",
"type": "object",
"example": {
"error_code": 90114,
"error_msg": "Device not found",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90114
},
"error_msg": {
"type": "string",
"example": "Device not found"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Device out of authorized scope",
"type": "object",
"example": {
"error_code": 90103,
"error_msg": "Device not in provider scope",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90103
},
"error_msg": {
"type": "string",
"example": "Device not in provider scope"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Unsupported device model (non-NSD series)",
"type": "object",
"example": {
"error_code": 90104,
"error_msg": "Model not controllable: LFD-5500",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90104
},
"error_msg": {
"type": "string",
"example": "Model not controllable: LFD-5500"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Device has never been paired",
"type": "object",
"example": {
"error_code": 90105,
"error_msg": "Device not paired",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90105
},
"error_msg": {
"type": "string",
"example": "Device not paired"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Device offline",
"type": "object",
"example": {
"error_code": 90106,
"error_msg": "Device offline",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90106
},
"error_msg": {
"type": "string",
"example": "Device offline"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Device IP address unknown",
"type": "object",
"example": {
"error_code": 90107,
"error_msg": "Device address unknown",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90107
},
"error_msg": {
"type": "string",
"example": "Device address unknown"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Unsupported command",
"type": "object",
"example": {
"error_code": 90108,
"error_msg": "Unsupported command: foo",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90108
},
"error_msg": {
"type": "string",
"example": "Unsupported command: foo"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Missing or out-of-range command parameter",
"type": "object",
"example": {
"error_code": 90109,
"error_msg": "Missing or invalid parameter: volume",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90109
},
"error_msg": {
"type": "string",
"example": "Missing or invalid parameter: volume"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Device failed to execute the command",
"type": "object",
"example": {
"error_code": 90110,
"error_msg": "Device command failed",
"error_details": {
"responseMsg": "missing link"
},
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90110
},
"error_msg": {
"type": "string",
"example": "Device command failed"
},
"error_details": {
"type": "object",
"properties": {
"responseMsg": {
"type": "string",
"example": "missing link"
}
}
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Timed out waiting for device response",
"type": "object",
"example": {
"error_code": 90111,
"error_msg": "Device command timeout",
"error_details": null,
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90111
},
"error_msg": {
"type": "string",
"example": "Device command timeout"
},
"error_details": {
"type": "string",
"example": null,
"nullable": true
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
},
{
"description": "Bridge service unreachable",
"type": "object",
"example": {
"error_code": 90112,
"error_msg": "Bridge service unreachable",
"error_details": {
"reason": "Connection timed out"
},
"additional_data": {
"requestId": "b3cecfb9-1234-4a5e-8b6c-000000000000",
"commandId": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
},
"properties": {
"error_code": {
"type": "integer",
"example": 90112
},
"error_msg": {
"type": "string",
"example": "Bridge service unreachable"
},
"error_details": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"example": "Connection timed out"
}
}
},
"additional_data": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
},
"commandId": {
"type": "string",
"example": "b3cecfb9-1234-4a5e-8b6c-000000000000"
}
}
}
}
}
]
}
}
}
},
"429": {
"description": "Rate limit exceeded (30 requests / 60 seconds); the command is not forwarded to the device",
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {
"message": "Too Many Attempts."
},
"properties": {
"message": {
"type": "string",
"example": "Too Many Attempts."
}
}
}
}
}
}
},
"tags": [
"CMS Partner Open API"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "Command type. Allowed values: powerOn, powerOff, setVolume, setMute, setInputSource, reboot (see DeviceCommandService::SUPPORTED_COMMANDS).",
"example": "powerOn"
},
"params": {
"type": "object",
"description": "Command parameters; which fields are required depends on the command type.",
"example": [],
"properties": {
"volume": {
"type": "integer",
"description": "Volume level 0-100, used when command=setVolume.",
"example": 50
},
"source": {
"type": "string",
"description": "Input source name, used when command=setInputSource.",
"example": "HDMI1"
},
"mute": {
"type": "boolean",
"description": "Mute on/off, used when command=setMute.",
"example": true
}
}
}
},
"required": [
"command"
]
}
}
}
}
},
"parameters": [
{
"in": "path",
"name": "deviceId",
"description": "Device serial number.",
"example": "NVW100-0001",
"required": true,
"schema": {
"type": "string"
}
}
]
}
}
}Request a Neovo Manager Provider Key
Available exclusively for All-in-One Digital Signage Displays (NSD & DS Series).
Connect your CMS or management platform with Neovo Manager through the AG Neovo Partner Open API.
Submit your integration request and our team will review your intended use, supported device scope and access requirements. If approved, we will provide the information needed to begin integration.

NeoV™ Optical Glass Screen
Anti-Burn-in™ Technology