Video Outputs
Video outputs are the display outputs on a connected Canvus client machine. Each video output represents a physical display channel (such as an HDMI or DisplayPort output) that can show content from a workspace or a VideoOutputAnchor widget on a canvas.
This API lets you list the video outputs on a client and update their configuration, such as changing what content they display or suspending the output.
When you would use this API:
- Discovering which display outputs are available on a specific Canvus client
- Changing which workspace or canvas region is shown on a physical output
- Suspending or resuming a video output programmatically
- Building projection mapping or multi-display automation
Authentication
All Video Outputs endpoints require authentication via the Private-Token header.
Private-Token: YOUR_TOKEN
Streaming
All GET endpoints support the ?subscribe query parameter for long-poll streaming. When present, the server holds the connection open and sends newline-delimited JSON updates whenever the data changes. See the API overview for details.
List All Video Outputs for a Client
Returns all video outputs for a specific client device.
- Method:
GET - URL:
/api/v1/clients/:client_id/video-outputs - Authentication: Required
- Streaming: Supported via
?subscribe
Path parameters:
client_id(uuid, required) -- ID of the client
Query parameters:
subscribe(boolean, optional) -- Enable long-poll streaming
Example request:
curl -H "Private-Token: YOUR_TOKEN" \
https://canvus.example.com/api/v1/clients/cf8b0fa0-6671-4f68-99df-8e38b010e84b/video-outputs
Example response (200 OK):
[
{
"index": 0,
"label": "Projector",
"source": "workspace-0",
"suspended": false
},
{
"index": 1,
"label": "Secondary Display",
"source": "workspace-1",
"suspended": true
}
]
Response fields:
index(number) -- Zero-based index of this video output channel on the clientlabel(string) -- Human-readable label shown in Canvus menussource(string) -- What content this output is displaying. Possible values:"workspace-N"-- Showing the content of workspace at index N (e.g.,"workspace-0")- A UUID string -- Showing the view from a VideoOutputAnchor widget on the canvas
suspended(boolean) -- Whether the output is suspended.falsemeans actively displaying content;truemeans output is paused.
Get a Single Video Output
Returns details for a specific video output on a client.
- Method:
GET - URL:
/api/v1/clients/:client_id/video-outputs/:output_index - Authentication: Required
- Streaming: Supported via
?subscribe
Path parameters:
client_id(uuid, required) -- ID of the clientoutput_index(number, required) -- Zero-based index of the video output
Query parameters:
subscribe(boolean, optional) -- Enable long-poll streaming
Example request:
curl -H "Private-Token: YOUR_TOKEN" \
https://canvus.example.com/api/v1/clients/cf8b0fa0-6671-4f68-99df-8e38b010e84b/video-outputs/0
Example response (200 OK):
{
"index": 0,
"label": "Projector",
"source": "workspace-0",
"suspended": false
}
Update a Video Output
Changes the source or suspension state of a video output.
- Method:
PATCH - URL:
/api/v1/clients/:client_id/video-outputs/:output_index - Authentication: Required
- Streaming: Not applicable
Path parameters:
client_id(uuid, required) -- ID of the clientoutput_index(number, required) -- Zero-based index of the video output
Request body fields (all optional):
source(string) -- Change what the output displays. Set to"workspace-N"for a workspace view, or to a VideoOutputAnchor widget ID for a canvas region.suspended(boolean) -- Set totrueto suspend the output,falseto resume it
Example request -- suspend an output:
curl -X PATCH \
-H "Private-Token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"suspended": true}' \
https://canvus.example.com/api/v1/clients/cf8b0fa0-6671-4f68-99df-8e38b010e84b/video-outputs/0
Example request -- switch output to workspace 1:
curl -X PATCH \
-H "Private-Token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"source": "workspace-1"}' \
https://canvus.example.com/api/v1/clients/cf8b0fa0-6671-4f68-99df-8e38b010e84b/video-outputs/0
Example response (200 OK):
Returns the full video output object with updated values.
{
"index": 0,
"label": "Projector",
"source": "workspace-1",
"suspended": false
}
Known limitation: Changing the source to a VideoOutputAnchor widget ID via the API may not work reliably in all versions. As a workaround, set the projection source through the Canvus UI first, then use the API to suspend and resume the output.
VideoOutputAnchor Widgets
A VideoOutputAnchor is a special widget on a canvas that defines a region for video output. When a video output's source is set to the ID of a VideoOutputAnchor widget, the output displays the canvas content within that widget's bounds.
VideoOutputAnchor widgets appear in the generic widgets listing with "widget_type": "VideoOutputAnchor". They are currently created through the Canvus UI, not through the API.
Error Responses
- 401 Unauthorized -- Missing or invalid
Private-Token - 404 Not Found -- The specified client or video output does not exist
All errors return a JSON body:
{
"msg": "error description"
}