SDVoE API operations
The DisplayNet REST server exposes two endpoint types: DisplayNet API commands and SDVoE API commands.
| Endpoint type | Namespace | Covers |
|---|---|---|
| DisplayNet API commands | /api/displaynet/* | Routing, presets, walls, MultiView, tagging, server administration |
| SDVoE API commands | /api/device/*, /api/event, /api/request/* | Device resources and lower-level functionality |
Both endpoint types use the same authentication model, response envelope, and WebSocket. DisplayNet reserves /api/displaynet for its own API commands. It forwards requests on the SDVoE resource paths to the SDVoE API. A client written for the SDVoE REST API works against a DisplayNet server without modification.
DisplayNet API commands maintain state that the SDVoE layer does not track. This includes routing records, device locks, MultiView bookkeeping, and preset contents. If you change the hardware through SDVoE API commands instead, DisplayNet's state can become out of date.
Use an SDVoE API command when DisplayNet does not cover what you need.
Request shape
An SDVoE API command targets a device and names the operation in the op field. Do not send this body to /api/displaynet; use the device path shown here.
POST /api/device/{target} request body{
"op": "start",
"stream_type": "HDMI",
"stream_index": 0
}
| Path | Use |
|---|---|
GET /api/device | List discovered devices |
GET /api/device/{target} | Read one device's hello subset |
GET /api/event | Poll recent events |
GET /api/request/{request_id} | Read the outcome of an asynchronous operation |
Each command page gives the exact op and arguments for that command.
The command pages use type placeholders such as String and Integer. Replace them with actual values; do not send the type names as literal strings. Omit optional fields unless the operation requires them.
DisplayNet additions
Device names
DisplayNet accepts a device name wherever the SDVoE API expects a device ID. You can use the name in the /api/device/{target} path or in a device reference field in the body.
Equivalent device targets
GET /api/device/RokuTV
GET /api/device/6cdffb01f5ba
A name containing spaces is written with underscores. Group keywords such as ALL, ALL_TX and ALL_RX pass through unchanged.
Locked devices
A device locked with lock rejects mutating SDVoE API operations: start, stop, join, leave, switch, unicast, multicast, set, factory and reboot.
403 Forbidden
{
"status": "ERROR",
"request_id": null,
"result": null,
"error": {
"message": "Cannot join on locked device Top Left TV",
"reason": "DEVICE_LOCKED"
}
}
Read operations are still allowed. A lock restricts configuration and routing changes, but it does not affect a link that is already up. This rule applies over HTTP and the REST WebSocket.
Asynchronous operations
An asynchronous POST to /api/device/{target} returns a Location header:
Initial response
HTTP/1.1 201 Created
Location: /api/request/<id>
To check the result, poll that location:
Polling request
GET /api/request/<id>
DisplayNet returns the Location header unchanged and proxies the polling request on the same path.
Unrecognized paths
HTTP 404 response
{
"status": "ERROR",
"request_id": null,
"result": null,
"error": {
"reason": "PROTOCOL",
"message": "Not Found"
}
}
If the Control Server cannot be reached at all, the reply is 502 with reason CONTROL_SERVER_UNREACHABLE.
Command map
The TCI interfaces expose every command. These interfaces are telnet, SSH, and the TCI WebSocket. Only the REST form varies.
| Command | Over REST | Endpoint type |
|---|---|---|
auth | auth | DisplayNet API command |
authkey | authkey_add authkey_list authkey_remove | DisplayNet API command |
cert | cert_* — 5 operations | DisplayNet API command |
claim | claim | DisplayNet API command |
config | config_delete config_get config_set | DisplayNet API command |
connect | connect_* — 11 operations | DisplayNet API command |
deviceswitch | deviceswitch | DisplayNet API command |
devicetag | devicetag_add devicetag_list devicetag_remove | DisplayNet API command |
disconnect | disconnect_* — 20 operations | DisplayNet API command |
display | display_mute display_volume | DisplayNet API command |
edid | POST /api/device/{target} | SDVoE API command |
edid | edid_* — 6 operations | DisplayNet API command |
event | GET /api/event | SDVoE API command |
firmware | firmware_list firmware_updateencoder firmware_updatemcu | DisplayNet API command |
get | GET /api/deviceGET /api/device/{target}POST /api/device/{target} | SDVoE API command |
getinitdata | getinitdata | DisplayNet API command |
help | help | DisplayNet API command |
ip | POST /api/device/{target} | SDVoE API command |
kvm | kvm_* — 64 operations | DisplayNet API command |
kvm config | kvm_config | DisplayNet API command |
kvm desk | kvm_desk | DisplayNet API command |
kvm hid | kvm_hid | DisplayNet API command |
kvm macro | kvm_macro | DisplayNet API command |
kvm streamdeck | kvm_streamdeck | DisplayNet API command |
kvm streamdeck dial | kvm_streamdeck | DisplayNet API command |
kvm workstation | kvm_workstation | DisplayNet API command |
layout | layout_* — 6 operations | DisplayNet API command |
lock | lock | DisplayNet API command |
logging | logging_reset logging_search | DisplayNet API command |
login | login | DisplayNet API command |
logintoken | None, session only | — |
logout | logout | DisplayNet API command |
mode | None, session only | — |
mtv | mtv_* — 6 operations | DisplayNet API command |
overlay | overlay_start overlay_stop | DisplayNet API command |
password | None, session only | — |
preset | preset_* — 10 operations | DisplayNet API command |
property | POST /api/device/{target} | SDVoE API command |
query | query | DisplayNet API command |
reboot | POST /api/device/{target} | SDVoE API command |
release | release | DisplayNet API command |
replace | replace_* — 5 operations | DisplayNet API command |
request | GET /api/request/{request_id} | SDVoE API command |
scaler | POST /api/device/{target} | SDVoE API command |
send | POST /api/device/{target} | SDVoE API command |
server | server_* — 16 operations | DisplayNet API command |
start | POST /api/device/{target} | SDVoE API command |
stop | POST /api/device/{target} | SDVoE API command |
stream | stream_* — 7 operations | DisplayNet API command |
tag | tag_* — 5 operations | DisplayNet API command |
taggroup | taggroup_* — 6 operations | DisplayNet API command |
thumb | thumb_start thumb_stop | DisplayNet API command |
unauth | unauth | DisplayNet API command |
unlock | unlock | DisplayNet API command |
update | POST /api/device/{target} | SDVoE API command |
usb2 | usb2_* — 6 operations | DisplayNet API command |
user | user_* — 7 operations | DisplayNet API command |
version | None | — |
video | POST /api/device/{target} | SDVoE API command |
wall | wall_* — 7 operations | DisplayNet API command |
| Entry | Meaning |
|---|---|
| A DisplayNet API command entry | Names the operation to POST to. The command's own page documents its parameters under REST API. |
| An SDVoE API command entry | The command is forwarded to the Control Server. The command's own page gives the path and body. |
| No REST form | Session commands (mode, logintoken, password) act on a single API session, and REST has no session to act on. Use a TCI interface. |
The command pages mark claim, release, auth, and unauth as SDVoE because they originate in the SDVoE API. Their REST blocks use DisplayNet API operations instead. DisplayNet uses those operations to maintain its own records. Use the endpoint shown in each REST block.
See also
- Sending commands: the two request forms for a DisplayNet API operation
- API Discovery: the live catalog and OpenAPI document
- WebSocket: the event stream at
/api