Video Channels
Create branded video channel pages, add and reorder the videos they list, publish them for sharing, and retrieve the shareable URL and embed code through the REST API.
A video channel is a branded, shareable page that lists an ordered set of your videos. Create the channel, add videos to it, set its branding, then publish it to get a shareable URL and paste-ready embed code.
Channel names are case-insensitively unique within an account; collisions return HTTP 409.
Publishing
New channels start unpublished, so the page is not reachable until you send isPublished: true on PATCH /rest/v1/video-channels/{id}. Publishing renders the page from the channel's current videos and branding, and every later change to the videos or branding updates the published page. Sending isPublished: false takes the page offline.
Because a published channel page is public and unauthenticated, do not add videos whose titles, descriptions, or transcripts contain protected health information (PHI) or other confidential information.
Videos in a channel
Videos are attached through the channel's media sub-resource rather than a field on the channel, because one video can appear in several channels.
GET /rest/v1/video-channels/{id}/mediareturns the channel's videos in display order. This list is not paginated — a channel holds a bounded set of videos, so the full ordered list is always returned.POST /rest/v1/video-channels/{id}/mediaadds a video. Omitpositionto append it to the end. Calling it again for a video already in the channel updates its position instead of adding a duplicate.DELETE /rest/v1/video-channels/{id}/media?mediaId=...removes one video from this channel. The video itself is not deleted and stays in any other channel it belongs to. This call is idempotent.POST /rest/v1/video-channels/{id}/reordersets the display order. Send every video id currently in the channel, in the order you want them shown — index 0 appears first. A partial list, or an id that is not in the channel, returns HTTP 400 so a caller working from a stale view learns its view is out of date instead of getting a partial write.
Only videos can be added to a channel; passing the id of an image returns HTTP 400. Deleting a channel takes its page offline but does not delete the videos it listed.
Branding and embedding
PATCH /rest/v1/video-channels/{id} sets description, brandColor, footerText, and logoMediaId. logoMediaId must reference an image in your media library; send null to clear it.
GET /rest/v1/video-channels/{id} returns resolvedValues with the channel's video count, the shareable page URL (embedUrl), and the HTML embed snippet (embedCode). The list endpoint omits resolvedValues — fetch a channel by id when you need them.
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Maximum number of channels to return. Defaults to 25; values below 1 are clamped to 1 and values above 1000 are clamped to 1000.
Opaque pagination cursor from pagination.nextCursor in the previous response. Do not decode or modify it. Malformed cursors return 400 Bad Request.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/video-channels"{ "entities": [ { "id": "string", "accountId": "string", "name": "string", "description": "string", "brandColor": "string", "logoMediaId": "string", "footerText": "string", "isPublished": true, "createdAt": "string", "updatedAt": "string" } ], "pagination": { "nextCursor": "string", "hasMore": true }}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}Authorization
apiKey Ours Privacy API key
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/rest/v1/video-channels" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{ "id": "string", "accountId": "string", "name": "string", "description": "string", "brandColor": "string", "logoMediaId": "string", "footerText": "string", "isPublished": true, "createdAt": "string", "updatedAt": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/video-channels/string"{ "id": "string", "accountId": "string", "name": "string", "description": "string", "brandColor": "string", "logoMediaId": "string", "footerText": "string", "isPublished": true, "createdAt": "string", "updatedAt": "string", "resolvedValues": {}}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/rest/v1/video-channels/string" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "accountId": "string", "name": "string", "description": "string", "brandColor": "string", "logoMediaId": "string", "footerText": "string", "isPublished": true, "createdAt": "string", "updatedAt": "string", "resolvedValues": {}}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/rest/v1/video-channels/string"{ "id": "string", "deleted": true}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/video-channels/string/media"{ "entities": [ { "id": "string", "accountId": "string", "createdAt": "string", "updatedAt": "string", "type": "Video", "name": "string", "description": "string", "duration": 0, "width": 0, "height": 0, "hasVideoUpload": true, "captionsUpdatedAt": "string", "captionsUpdatedByName": "string" } ]}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/rest/v1/video-channels/string/media" \ -H "Content-Type: application/json" \ -d '{ "mediaId": "5a8ffac5-2288-485d-b463-90c3cd9941ad" }'{ "id": "string", "accountId": "string", "channelId": "string", "mediaId": "string", "position": 0, "createdAt": "string", "updatedAt": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Query Parameters
Id of the video to remove from this channel.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/rest/v1/video-channels/string/media?mediaId=497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "id": "string", "accountId": "string", "name": "string", "description": "string", "brandColor": "string", "logoMediaId": "string", "footerText": "string", "isPublished": true, "createdAt": "string", "updatedAt": "string", "resolvedValues": {}}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}Authorization
apiKey Ours Privacy API key
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/rest/v1/video-channels/string/reorder" \ -H "Content-Type: application/json" \ -d '{ "mediaIds": [ "4502986e-0fff-480a-ad24-52d33b36f104" ] }'{ "id": "string", "accountId": "string", "name": "string", "description": "string", "brandColor": "string", "logoMediaId": "string", "footerText": "string", "isPublished": true, "createdAt": "string", "updatedAt": "string", "resolvedValues": {}}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}How is this guide?

