Skip to content

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 email
  • GET /users/password/validate-reset-token -- Validate reset token
  • POST /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 info
  • POST /users/{id}/password -- Set/change password
  • POST /users/{id}/change-email -- Change email address
  • POST /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 group
  • PATCH /groups/{id} -- Update group
  • DELETE /groups/{id} -- Delete group
  • GET /groups/{id}/members -- List group members (subscribable)
  • POST /groups/{id}/members -- Add member to group
  • DELETE /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 token
  • PATCH /users/{id}/access-tokens/{tokenId} -- Update token
  • DELETE /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 canvas
  • PATCH /canvases/{id} -- Rename canvas
  • DELETE /canvases/{id} -- Delete canvas
  • POST /canvases/{id}/move -- Move canvas to folder
  • POST /canvases/{id}/copy -- Copy canvas
  • POST /canvases/{id}/save -- Save demo state
  • POST /canvases/{id}/restore -- Restore demo state
  • GET /canvases/{id}/preview -- Get preview image (link-share ok)
  • GET /canvases/{id}/permissions -- Get permissions (subscribable)
  • POST /canvases/{id}/permissions -- Set permissions
  • GET /canvases/{id}/background -- Get background config (link-share ok)
  • PATCH /canvases/{id}/background -- Update background settings
  • POST /canvases/{id}/background -- Upload background image (multipart)
  • GET /canvases/{id}/color-presets -- Get color presets
  • PATCH /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 folder
  • PATCH /canvas-folders/{id} -- Rename folder
  • DELETE /canvas-folders/{id} -- Delete folder
  • DELETE /canvas-folders/{id}/children -- Delete all children of folder
  • POST /canvas-folders/{id}/move -- Move folder
  • POST /canvas-folders/{id}/copy -- Copy folder
  • GET /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 note
  • PATCH /canvases/{id}/notes/{noteId} -- Update note
  • DELETE /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 image
  • GET /canvases/{id}/images/{imageId}/download -- Download original file
  • DELETE /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 video
  • GET /canvases/{id}/videos/{videoId}/download -- Download original file
  • DELETE /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 PDF
  • GET /canvases/{id}/pdfs/{pdfId}/download -- Download original file
  • DELETE /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 browser
  • PATCH /canvases/{id}/browsers/{browserId} -- Update browser
  • DELETE /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 anchor
  • PATCH /canvases/{id}/anchors/{anchorId} -- Update anchor
  • DELETE /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 connector
  • PATCH /canvases/{id}/connectors/{connectorId} -- Update connector
  • DELETE /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 table
  • PATCH /canvases/{id}/tables/{tableId} -- Update table
  • DELETE /canvases/{id}/tables/{tableId} -- Delete table
  • GET /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 widget
  • PATCH /canvases/{id}/ip-videos/{widgetId} -- Update IP video widget
  • DELETE /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 widget
  • PATCH /canvases/{id}/rdp-connections/{widgetId} -- Update RDP widget
  • DELETE /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 widget
  • PATCH /canvases/{id}/video-inputs/{widgetId} -- Update video input widget
  • DELETE /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 workspace
  • POST /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)