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}/media returns 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}/media adds a video. Omit position to 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}/reorder sets 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.

GET
/rest/v1/video-channels
AuthorizationBearer <token>

Ours Privacy API key

In: header

Query Parameters

limit?|

Maximum number of channels to return. Defaults to 25; values below 1 are clamped to 1 and values above 1000 are clamped to 1000.

cursor?string

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"}
POST
/rest/v1/video-channels
*object
AuthorizationBearer <token>

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"}
GET
/rest/v1/video-channels/{id}
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

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"}
PATCH
/rest/v1/video-channels/{id}
*object
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

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"}
DELETE
/rest/v1/video-channels/{id}
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

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"}
GET
/rest/v1/video-channels/{id}/media
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

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"}
POST
/rest/v1/video-channels/{id}/media
*object
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

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"}
DELETE
/rest/v1/video-channels/{id}/media
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

Query Parameters

mediaId*string

Id of the video to remove from this channel.

Formatuuid

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/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"}
POST
/rest/v1/video-channels/{id}/reorder
*object
array<string>
AuthorizationBearer <token>

Ours Privacy API key

In: header

Path Parameters

id*string

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?