DisplayNet Logo
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​