Skip to main content

Sending commands

The REST interface includes two endpoint types. Use the DisplayNet API request forms for commands that change DisplayNet state. Use SDVoE API operations for commands that work directly with devices.

Both endpoint types use the same /api base URL, bearer-token authentication, and response envelope. Their paths and request bodies differ. Choose the endpoint type before building the request.

Endpoint typeUse it forRequest paths
DisplayNet API commandsRouting, presets, walls, MultiView, tagging, and other DisplayNet commandsPOST /api/displaynet/<operation> or POST /api/displaynet
SDVoE API commandsDevice resources, stream control, device configuration, events, and asynchronous request polling/api/device/*, /api/event, and /api/request/*

DisplayNet API operation names

An operation name is the command and its subcommand joined with an underscore. A command with no subcommand uses the command name alone.

TCI commandREST operation
preset listpreset_list
preset get <name>preset_get
wall get <name>wall_get
versionversion

DisplayNet request forms

DisplayNet API operations support two request forms. Both use POST and return the same response envelope.

Operation in the URL

Put the operation name in the last URL segment. Put its parameters in the JSON body.

No parameters

For an operation with no parameters, send the request without a body:

POST /api/displaynet/preset_list

With parameters

For an operation with parameters, include them as a JSON body:

POST /api/displaynet/preset_get
Content-Type: application/json

{
"name": "MorningState"
}

This is the form described by the OpenAPI spec, so generated clients and Swagger UI use it.

Operation in the body

Post every DisplayNet API operation to /api/displaynet and put the operation name in the op field.

POST /api/displaynet
{
"op": "preset_get",
"name": "MorningState"
}

The op field selects the DisplayNet API operation. The remaining fields carry its parameters. The JSON shape resembles an SDVoE API request, but the route makes this a DisplayNet API request. Send it to /api/displaynet, not /api/device/<target>. For device-level operations, use the SDVoE API request form.

Do not mix the two

If both the URL and the body name an operation, they must match. The server rejects a mismatch; it does not resolve the two names for you:

{
"status": "ERROR",
"request_id": null,
"result": null,
"error": {
"message": "Body op 'wall_list' conflicts with route op 'preset_list'",
"reason": "ILLEGAL_ARGUMENT"
}
}

Naming the same operation in both places is accepted.

Parameters

Parameters are named fields in the JSON body, using the command's argument names. Each command page documents its parameters under REST API.

A missing required parameter is reported by the command:

{
"status": "ERROR",
"request_id": null,
"result": null,
"error": {
"message": "Missing required parameter 'name'",
"reason": "PRESET API ERROR"
}
}

GET /api/commands returns parameter names for every DisplayNet API operation, with each parameter's type and whether it is optional:

GET /api/commands: preset_get
{
"op": "preset_get",
"command": "preset",
"subcommand": "get",
"aliases": [],
"description": "Get a preset's contents (snapshot or script)",
"parameters": [
{
"name": "name",
"type": "string",
"optional": false,
"rest": false,
"description": ""
}
]
}

A rest parameter captures the remaining input as one value, like a trailing argument in the TCI interface.

Device names

Anywhere a command accepts a device, you can use a DisplayNet device name or device ID. This matches the TCI interface and also applies to SDVoE API operations.

Worked example

Create a script preset, then read it back.

Create the preset

POST /api/displaynet/preset_set
Content-Type: application/json

{
"type": "script",
"name": "docs_example",
"commands": "[ \"connect hdmi tx1 rx2\", \"WAIT 500\" ]"
}

Read it back

POST /api/displaynet/preset_get
Content-Type: application/json

{
"name": "docs_example"
}

Response

{
"status": "SUCCESS",
"request_id": null,
"result": {
"preset_details": [
{
"type": "script",
"name": "docs_example",
"scriptItemId": 13,
"creationDate": "2026-07-31T21:36:13.74366",
"lastEditDate": "2026-07-31T21:36:13.743729",
"createdBy": "RestApi",
"lastEditedBy": "RestApi",
"commands": ["connect hdmi tx1 rx2", "WAIT 500"],
"versions": []
}
]
},
"error": null
}

Resources created over REST have createdBy set to RestApi. This lets an audit distinguish them from changes made through a TCI session or DisplayNet Manager.

The commands value is a bracketed list of quoted strings, matching the preset set script syntax rather than a plain string.

See also