Canvus REST API Quick Reference
All endpoints are prefixed with /api/v1. Authentication via Private-Token header unless noted otherwise.
Server Management
GET /server-info-- Server version and runtime info (no auth required)GET /server-config-- Get server settings (no auth for read)PATCH /server-config-- Update server settings (admin)POST /server-config/reload-certs-- Reload TLS certificates (admin)POST /server-config/send-test-email-- Send test email (admin)
License
GET /license-- Get license info (admin, subscribable)GET /license/request-- Get offline activation request payload (admin)POST /license-- Install license (admin)POST /license/activate-- Activate license online (admin)
Authentication
POST /users/login-- Log in with email/password (no auth)POST /users/login/saml-- Log in via SAML (no auth)POST /users/logout-- Log out current session
Password Reset (no auth required)
POST /users/password/create-reset-token-- Request password reset emailGET /users/password/validate-reset-token-- Validate reset tokenPOST /users/password/reset-- Reset password with token
Users
GET /users-- List all users (subscribable)GET /users/{id}-- Get single user (subscribable)POST /users-- Create user (admin)POST /users/register-- Self-register (no auth, must be enabled)POST /users/confirm-email-- Confirm email via token (no auth)PATCH /users/{id}-- Update user infoPOST /users/{id}/password-- Set/change passwordPOST /users/{id}/change-email-- Change email addressPOST /users/{id}/block-- Block user (admin)POST /users/{id}/unblock-- Unblock user (admin)POST /users/{id}/approve-- Approve pending registration (admin)POST /users/{id}/reset-password-- Force password reset (admin)DELETE /users/{id}-- Delete user (admin)
Groups
GET /groups-- List all groups (subscribable)GET /groups/{id}-- Get single group (subscribable)POST /groups-- Create groupPATCH /groups/{id}-- Update groupDELETE /groups/{id}-- Delete groupGET /groups/{id}/members-- List group members (subscribable)POST /groups/{id}/members-- Add member to groupDELETE /groups/{id}/members/{userId}-- Remove member from group
Access Tokens
GET /users/{id}/access-tokens-- List tokens for user (subscribable)GET /users/{id}/access-tokens/{tokenId}-- Get single token (subscribable)POST /users/{id}/access-tokens-- Create tokenPATCH /users/{id}/access-tokens/{tokenId}-- Update tokenDELETE /users/{id}/access-tokens/{tokenId}-- Delete token
Canvases
GET /canvases-- List all canvases (subscribable)GET /canvases/{id}-- Get single canvas (subscribable, link-share ok)POST /canvases-- Create canvasPATCH /canvases/{id}-- Rename canvasDELETE /canvases/{id}-- Delete canvasPOST /canvases/{id}/move-- Move canvas to folderPOST /canvases/{id}/copy-- Copy canvasPOST /canvases/{id}/save-- Save demo statePOST /canvases/{id}/restore-- Restore demo stateGET /canvases/{id}/preview-- Get preview image (link-share ok)GET /canvases/{id}/permissions-- Get permissions (subscribable)POST /canvases/{id}/permissions-- Set permissionsGET /canvases/{id}/background-- Get background config (link-share ok)PATCH /canvases/{id}/background-- Update background settingsPOST /canvases/{id}/background-- Upload background image (multipart)GET /canvases/{id}/color-presets-- Get color presetsPATCH /canvases/{id}/color-presets-- Update color presets
Canvas Folders
GET /canvas-folders-- List all folders (subscribable)GET /canvas-folders/{id}-- Get single folder (subscribable)POST /canvas-folders-- Create folderPATCH /canvas-folders/{id}-- Rename folderDELETE /canvas-folders/{id}-- Delete folderDELETE /canvas-folders/{id}/children-- Delete all children of folderPOST /canvas-folders/{id}/move-- Move folderPOST /canvas-folders/{id}/copy-- Copy folderGET /canvas-folders/{id}/permissions-- Get folder permissions (subscribable)POST /canvas-folders/{id}/permissions-- Set folder permissions
Widgets (Generic)
GET /canvases/{id}/widgets-- List all widgets, any type (subscribable, link-share ok)GET /canvases/{id}/widgets/{widgetId}-- Get single widget (subscribable, link-share ok)POST /canvases/{id}/widgets/clone-- Clone widget (stub, returns 501)
Notes
GET /canvases/{id}/notes-- List notes (subscribable, link-share ok)GET /canvases/{id}/notes/{noteId}-- Get single note (subscribable)POST /canvases/{id}/notes-- Create notePATCH /canvases/{id}/notes/{noteId}-- Update noteDELETE /canvases/{id}/notes/{noteId}-- Delete note
Images
GET /canvases/{id}/images-- List images (subscribable, link-share ok)GET /canvases/{id}/images/{imageId}-- Get single image (subscribable)POST /canvases/{id}/images-- Create image (multipart)PATCH /canvases/{id}/images/{imageId}-- Update imageGET /canvases/{id}/images/{imageId}/download-- Download original fileDELETE /canvases/{id}/images/{imageId}-- Delete image
Videos
GET /canvases/{id}/videos-- List videos (subscribable, link-share ok)GET /canvases/{id}/videos/{videoId}-- Get single video (subscribable)POST /canvases/{id}/videos-- Create video (multipart)PATCH /canvases/{id}/videos/{videoId}-- Update videoGET /canvases/{id}/videos/{videoId}/download-- Download original fileDELETE /canvases/{id}/videos/{videoId}-- Delete video
PDFs
GET /canvases/{id}/pdfs-- List PDFs (subscribable, link-share ok)GET /canvases/{id}/pdfs/{pdfId}-- Get single PDF (subscribable)POST /canvases/{id}/pdfs-- Create PDF (multipart)PATCH /canvases/{id}/pdfs/{pdfId}-- Update PDFGET /canvases/{id}/pdfs/{pdfId}/download-- Download original fileDELETE /canvases/{id}/pdfs/{pdfId}-- Delete PDF
Browsers
GET /canvases/{id}/browsers-- List browsers (subscribable, link-share ok)GET /canvases/{id}/browsers/{browserId}-- Get single browser (subscribable)POST /canvases/{id}/browsers-- Create browserPATCH /canvases/{id}/browsers/{browserId}-- Update browserDELETE /canvases/{id}/browsers/{browserId}-- Delete browser
Anchors
GET /canvases/{id}/anchors-- List anchors (subscribable)GET /canvases/{id}/anchors/{anchorId}-- Get single anchor (subscribable)POST /canvases/{id}/anchors-- Create anchorPATCH /canvases/{id}/anchors/{anchorId}-- Update anchorDELETE /canvases/{id}/anchors/{anchorId}-- Delete anchor
Connectors
GET /canvases/{id}/connectors-- List connectors (subscribable)GET /canvases/{id}/connectors/{connectorId}-- Get single connector (subscribable)POST /canvases/{id}/connectors-- Create connectorPATCH /canvases/{id}/connectors/{connectorId}-- Update connectorDELETE /canvases/{id}/connectors/{connectorId}-- Delete connector
Tables
GET /canvases/{id}/tables-- List tables (subscribable)GET /canvases/{id}/tables/{tableId}-- Get single table (subscribable)POST /canvases/{id}/tables-- Create tablePATCH /canvases/{id}/tables/{tableId}-- Update tableDELETE /canvases/{id}/tables/{tableId}-- Delete tableGET /canvases/{id}/tables/{tableId}/cells-- List table cells
IP Videos
GET /canvases/{id}/ip-videos-- List IP video widgets (subscribable)GET /canvases/{id}/ip-videos/{widgetId}-- Get single IP video (subscribable)POST /canvases/{id}/ip-videos-- Create IP video widgetPATCH /canvases/{id}/ip-videos/{widgetId}-- Update IP video widgetDELETE /canvases/{id}/ip-videos/{widgetId}-- Delete IP video widget
RDP Connections
GET /canvases/{id}/rdp-connections-- List RDP widgets (subscribable)GET /canvases/{id}/rdp-connections/{widgetId}-- Get single RDP widget (subscribable)POST /canvases/{id}/rdp-connections-- Create RDP widgetPATCH /canvases/{id}/rdp-connections/{widgetId}-- Update RDP widgetDELETE /canvases/{id}/rdp-connections/{widgetId}-- Delete RDP widget
Video Inputs (Canvas Widgets)
GET /canvases/{id}/video-inputs-- List video input widgets (subscribable)GET /canvases/{id}/video-inputs/{widgetId}-- Get single video input (subscribable)POST /canvases/{id}/video-inputs-- Create video input widgetPATCH /canvases/{id}/video-inputs/{widgetId}-- Update video input widgetDELETE /canvases/{id}/video-inputs/{widgetId}-- Delete video input widget
Clients
GET /clients-- List connected clients (subscribable)GET /clients/{clientId}-- Get single client (subscribable)
Workspaces
GET /clients/{clientId}/workspaces-- List workspaces (subscribable)GET /clients/{clientId}/workspaces/{workspaceId}-- Get single workspace (subscribable)PATCH /clients/{clientId}/workspaces/{workspaceId}-- Update workspacePOST /clients/{clientId}/workspaces/{workspaceId}/open-canvas-- Open canvas in workspace
Video Inputs (Client Devices)
GET /clients/{clientId}/video-inputs-- List capture devices (subscribable)GET /clients/{clientId}/video-inputs/{inputId}-- Get single capture device (subscribable)
Video Outputs (Client Devices)
GET /clients/{clientId}/video-outputs-- List video outputs (subscribable)GET /clients/{clientId}/video-outputs/{outputId}-- Get single output (subscribable)PATCH /clients/{clientId}/video-outputs/{outputId}-- Update video output
Uploads Folder
GET /canvases/{id}/uploads-folder-- List uploaded assets (subscribable)POST /canvases/{id}/uploads-folder-- Upload asset (multipart)
Mipmaps
GET /mipmaps/{hash}-- Get mipmap info for asset (no auth, hash-based access)GET /mipmaps/{hash}/{level}-- Download mipmap tile level (no auth)
Assets
GET /assets/{hash}-- Download asset by hash (no auth, hash-based access)
Audit Log
GET /audit-log-- List audit events, paginated (admin)GET /audit-log/export-csv-- Export full audit log as CSV (admin)