CDPGuidesSupport

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.

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 full video list in display order.
  • 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. It takes every video id currently in the channel, in display order (index 0 appears first).

Deleting a channel takes its page offline and leaves the videos it listed in your library.

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).

GET/rest/v1/video-channels

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  }}

POST/rest/v1/video-channels

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"}

GET/rest/v1/video-channels/{id}

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": {    "mediaCount": 0,    "embedUrl": "string",    "embedCode": "string"  }}

PATCH/rest/v1/video-channels/{id}

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": {    "mediaCount": 0,    "embedUrl": "string",    "embedCode": "string"  }}

DELETE/rest/v1/video-channels/{id}

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}

GET/rest/v1/video-channels/{id}/media

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,      "sourceLanguageCode": "string",      "captionTracks": [        {          "languageCode": "string",          "label": "string",          "url": "string",          "origin": "string",          "status": "string",          "isMachineTranslated": true,          "humanEditedAt": "string"        }      ],      "captionsUpdatedAt": "string",      "captionsUpdatedByName": "string"    }  ]}

POST/rest/v1/video-channels/{id}/media

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"}

DELETE/rest/v1/video-channels/{id}/media

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": {    "mediaCount": 0,    "embedUrl": "string",    "embedCode": "string"  }}

POST/rest/v1/video-channels/{id}/reorder

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": {    "mediaCount": 0,    "embedUrl": "string",    "embedCode": "string"  }}

How is this guide?