Requirements
- A registered application with Cloud Playout API authentication scopes enabled in video-cloud. (
Studio UI -> Admin -> API Authentication
)
Creating a CloudPlayoutChannelManager workflow
Below is the typical Cloud Playout channel management workflow:
- Create channel
- Add assets and Live events to the playlist
- Activate the channel
- Start the channel
- Stop the channel
- Delete the channel
Apart from these, Get channel is helpful for checking the channel info & state of the channel.
Create channel
To create a channel we need mandatory attributes like, name of the channel, start time, input & output group, region and live_profile. DateTime values are preferred in ISO 8601 Date format (UTC or with time offset).
Sample request
Request
Make a POST
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/cp_channels
Headers
Content-Type: application/json
Authorization: Bearer {token}
Request body - general example
{
"name": "channel name",
"start_time": "2021-06-29T08:30:50.344Z",
"input_group": [
{
"input_type": "playlist (or rtmp or slate)",
"input_id": "dummy",
"loop_on_completion": false
}
],
"live_profile": "your live profile",
"output_group": [
{
"type": "rtmp or rtp",
"ingest_locations": [
{
"pipeline_id": 1,
"location": "bc_live or any live channel from your account"
}
]
},
{
"type": "s3",
"ingest_locations": [
{
"pipeline_id": 1,
"location": "s3 credential id"
}
]
}
],
"region": "aws region"
}
Request body - example using the default slate
{
"input_group": [
{
"input_type": "slate"
},
{
"input_type": "rtmp"
}
]
}
Request body - example using a custom slate
{
"input_group": [
{
"input_type": "slate",
"input_id": "slate_asset_id OR https_slate_mp4_url"
},
{
"input_type": "rtmp"
}
]
}
Sample response
{
"public_id": "79f0e7503fd64af3b7d2b0f825100f28",
"name": "channel name",
"description": "",
"account_id": "Your account id",
"state": "DRAFT",
"status": null,
"start_time": "2021-06-29 08:30:50 UTC",
"stop_time": null,
"input_groups": "playlist",
"output_groups": "rtmp:s3",
"loop_playlist": false,
"playlist_id": "1703814612527248093",
"channel_class": "single-pipeline",
"ssai_enabled": true,
"aws_region": "aws region",
"message": null,
"created_at": "2021-06-28 12:43:55 UTC",
"updated_at": "2021-06-28 12:43:55 UTC",
"image_url": "https://bc-cloudplayout-prod.s3.amazonaws.com/default_channel_image.png",
"output_destinations": [
"Brightcove Live"
],
"channel_created_at": "2021-06-28 12:43:55 UTC",
"channel_updated_at": "2021-06-28 12:43:55 UTC",
"channel_created_by": "username@brightcove.com",
"channel_updated_by": "username@brightcove.com"
}
In addition to mandatory fields, there are fields which can be set like description
, stop_time
, ssai_enabled
, image_id
, mid_roll_import_enabled
, mid_roll_slot_time
, etc. Please refer the examples from the Channels API Reference for creating channels with different configurations.
Channel with Live redundancy
Creating a Brightcove Live redundant group in live module
To create a Live redundant group, see Using Live Redundancy. Once redundant groups are created using the above document you can use them in Cloud Playout.
Redundant groups eligibility criteria
To be available for use as a Cloud Playout channel destination, the redundant group must meet the following criteria:
- The redundant group should contain exactly 2 live jobs.
- Both live jobs in the redundant group must be of Static Entry Point type.
- The redundant group (and the jobs in it) must be in standby state.
- If the Cloud Playout channel is SSAI-enabled then the redundant group must also be SSAI-enabled with RTP-FEC protocol.
Getting available Brightcove Live redundant groups
To retrieve a list of available Brightcove Live redundant groups in your account, make a GET
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/bc_channels?redundancy=true
To limit the results to redundant groups that are enabled for SSAI, add the ssai=true
parameter:
https://cm.cloudplayout.brightcove.com/accounts/{{account_id}}/bc_channels?redundancy=true&ssai=true
Creating a channel with Live redundancy
You can create a Brightcove Live redundancy enabled channel using the output_group
field in the request body,
Sample request body
{
"name": "channel name",
"start_time": "2021-06-29T08:30:50.344Z",
"input_group": [
{
"input_type": "playlist or rtmp or slate",
"input_id": "dummy",
"loop_on_completion": false
}
],
"live_profile": "your live profile",
"output_group": [
{
"type": "rtmp or rtp",
"ingest_locations": [
{
"pipeline_id": 1,
"redundancy": true,
"location": "bc_live/{EXISTING_BC_REDUNDANT_GROUP_ID}"
}
]
}
],
"region": "aws region"
}
Sample response
{
"public_id": "79f0e7503fd64af3b7d2b0f825100f28",
"name": "channel name",
"description": "",
"account_id": "Your account id",
"state": "DRAFT",
"status": null,
"start_time": "2021-06-29 08:30:50 UTC",
"stop_time": null,
"input_groups": "playlist",
"output_groups": "rtmp",
"loop_playlist": false,
"playlist_id": "1703814612527248093",
"channel_class": "single-pipeline",
"ssai_enabled": true,
"aws_region": "aws region",
"message": null,
"created_at": "2021-06-28 12:43:55 UTC",
"updated_at": "2021-06-28 12:43:55 UTC",
"image_url": "https://bc-cloudplayout-prod.s3.amazonaws.com/default_channel_image.png",
"output_destinations": [
"Brightcove Live with Redundancy"
],
"channel_created_at": "2021-06-28 12:43:55 UTC",
"channel_updated_at": "2021-06-28 12:43:55 UTC",
"channel_created_by": "username@brightcove.com",
"channel_updated_by": "username@brightcove.com"
}
Updating a channel to enable or disable Live redundancy
You can also enable or disable redundancy for an existing channel. The key is the redundancy
flag in the ingest_locations
object. To enable redundancy you need to set it to true
, while to disable redundancy for the channel you can either set it to false
or omit it altogether, since false
is the default value.
Sample request body
Enable redundancy
{
"output_group": [
{
"type": "rtmp or rtp",
"ingest_locations": [
{
"pipeline_id": 1,
"redundancy": true,
"location": "bc_live/{EXISTING_BC_REDUNDANT_GROUP_ID}"
}
]
}
]
}
Disable redundancy
{
"output_group": [
{
"type": "rtmp or rtp",
"ingest_locations": [
{
"pipeline_id": 1,
"location": "bc_live/{EXISTING_BC_REDUNDANT_GROUP_ID}"
}
]
}
]
}
Note the missing redundancy
above. Or:
{
"output_group": [
{
"type": "rtmp or rtp",
"ingest_locations": [
{
"pipeline_id": 1,
"redundancy": false,
"location": "bc_live/{EXISTING_BC_REDUNDANT_GROUP_ID}"
}
]
}
]
}
Getting channel details
To get channel details and verify that it is using redundancy, make a GET
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/cp_channels/{channel_id}
Sample response (draft state)
{
"public_id": "a7a58da9794a484a90a60c6c9b3a04a2",
"name": "redundancy",
"description": "test_cloudplayout_roebuck",
"account_id": "70701684277202",
"state": "DRAFT",
"status": "",
"start_time": "2022-02-17 12:53:48 UTC",
"stop_time": null,
"input_groups": "playlist",
"output_groups": "rtmp",
"loop_playlist": false,
"playlist_id": "1725014456212124545",
"channel_class": "single-pipeline",
"ssai_enabled": null,
"aws_region": "us-east-1",
"message": "",
"created_at": "2022-02-17 12:46:22 UTC",
"updated_at": "2022-02-17 13:01:55 UTC",
"image_url": "https://bc-cloudplayout-prod.s3.amazonaws.com/default_channel_image.png",
"output_destinations": [
"Brightcove Live with Redundancy"
],
"channel_created_at": "2022-02-17 12:46:22 UTC",
"channel_updated_at": "2022-02-17 12:46:22 UTC",
"channel_created_by": "user@brightcove.com",
"channel_updated_by": "user@brightcove.com",
"import_captions_enabled": true,
"live_profile": {
"display_name": "Premium Live HD 1080p - Tier 2",
"name": "premium-live-hd-1080p-tier-2",
"date_created": "2018-06-04 18:16:44 UTC",
"date_modified": "2018-06-04 18:16:44 UTC"
},
"channel_data": {
"input_group": [
{
"input_type": "playlist",
"value": "redundancy_testing_local",
"description": "cloudplayout",
"public_id": "1725014456212124545"
}
],
"output_groups": [
{
"type": "rtmp",
"redundancy": true,
"location": "bc_live/${Existing redundant group id}",
"destination": "Brightcove Live with Redundancy"
}
]
}
}
Sample response (scheduled state)
Note the multiple destinations both in the channel_data
and the outputs
:
{
"public_id": "e2d38b8304c84601b27630ae05b764b8",
"name": "redundancy",
"description": "test_cloudplayout_roebuck",
"account_id": "70701684277202",
"state": "SCHEDULED",
"status": "Scheduled for start",
"start_time": "2022-02-10 05:57:10 UTC",
"stop_time": null,
"input_groups": "playlist",
"output_groups": "rtmp",
"loop_playlist": false,
"playlist_id": "1724281533777310596",
"channel_class": "single-pipeline",
"ssai_enabled": null,
"aws_region": "us-east-1",
"message": "",
"created_at": "2022-02-09 10:36:51 UTC",
"updated_at": "2022-02-09 10:49:03 UTC",
"image_url": "https://bc-cloudplayout-prod.s3.amazonaws.com/default_channel_image.png",
"output_destinations": [
"Brightcove Live with Redundancy"
],
"channel_created_at": "2022-02-09 10:36:51 UTC",
"channel_updated_at": "2022-02-09 10:36:51 UTC",
"channel_created_by": "Created by API",
"channel_updated_by": "Updated by API",
"import_captions_enabled": true,
"live_profile": {
"display_name": "Premium Live HD 1080p - Tier 2",
"name": "premium-live-hd-1080p-tier-2",
"date_created": "2018-06-04 18:16:44 UTC",
"date_modified": "2018-06-04 18:16:44 UTC"
},
"channel_data": {
"destinations": [
{
"id": "dest-rtmp-0",
"url": "rtmp://d42f9b597f9f4cff90f3d48ddc665a02.sep-qa.a-live.io:1935/d42f9b597f9f4cff90f3d48ddc665a02",
"stream_name": "alive"
},
{
"id": "dest-rtmp-1",
"url": "rtmp://2f84603cc5bf45babfc92e58f444eb0b.sep-qa.a-live.io:1935/2f84603cc5bf45babfc92e58f444eb0b",
"stream_name": "alive"
},
{
"id": "framecapture",
"url": "s3://cloudplayout-preview/framecapture/e2d38b8304c84601b27630ae05b764b8/image",
"stream_name": null
}
],
"input_specification": {
"codec": "AVC",
"maximum_bitrate": "MAX_20_MBPS",
"resolution": "HD"
},
"output_groups": [
{
"type": "preview",
"destination_url": "s3://cloudplayout-preview/framecapture/e2d38b8304c84601b27630ae05b764b8/image",
"encoder_settings": [
{
"width": 640,
"height": 360,
"capture_interval": 5,
"capture_interval_units": "SECONDS"
}
]
},
{
"type": "rtmp",
"location_id": "374d4846292042af82c4c573e58bba39",
"location": "redundancy_testing_local_group",
"destination": "Brightcove Live with Redundancy",
"playback_url": "https://playback-qa.a-live.io/r374d4846292042af82c4c573e58bba39/us-east-1/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r374d4846292042af82c4c573e58bba39/us-east-1/NA/playlist_dvr.m3u8",
"outputs": [
{
"destination_url": "rtmp://d42f9b597f9f4cff90f3d48ddc665a02.sep-qa.a-live.io:1935/d42f9b597f9f4cff90f3d48ddc665a02/alive",
"location_id": "d42f9b597f9f4cff90f3d48ddc665a02",
"location": "redundancy_testing_local_2",
"encoder_settings": [
{
"width": 1920,
"height": 1080,
"bitrate": 4000000,
"gop_size": 60.0,
"gop_size_units": "FRAMES",
"profile": "HIGH",
"level": "H264_LEVEL_AUTO",
"scan_type": "PROGRESSIVE",
"framerate_control": "SPECIFIED"
}
],
"stream_url": "rtmp://d42f9b597f9f4cff90f3d48ddc665a02.sep-qa.a-live.io:1935/d42f9b597f9f4cff90f3d48ddc665a02/alive",
"static": true,
"playback_url": "https://playback-qa.a-live.io/d42f9b597f9f4cff90f3d48ddc665a02/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/d42f9b597f9f4cff90f3d48ddc665a02/us-west-2/NA/playlist_dvr.m3u8"
},
{
"destination_url": "rtmp://2f84603cc5bf45babfc92e58f444eb0b.sep-qa.a-live.io:1935/2f84603cc5bf45babfc92e58f444eb0b/alive",
"location_id": "2f84603cc5bf45babfc92e58f444eb0b",
"location": "redundancy_testing_local_1",
"encoder_settings": [
{
"width": 1920,
"height": 1080,
"bitrate": 4000000,
"gop_size": 60.0,
"gop_size_units": "FRAMES",
"profile": "HIGH",
"level": "H264_LEVEL_AUTO",
"scan_type": "PROGRESSIVE",
"framerate_control": "SPECIFIED"
}
],
"stream_url": "rtmp://2f84603cc5bf45babfc92e58f444eb0b.sep-qa.a-live.io:1935/2f84603cc5bf45babfc92e58f444eb0b/alive",
"static": true,
"playback_url": "https://playback-qa.a-live.io/2f84603cc5bf45babfc92e58f444eb0b/us-east-1/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/2f84603cc5bf45babfc92e58f444eb0b/us-east-1/NA/playlist_dvr.m3u8"
}
]
}
],
"input_group": [
{
"input_type": "playlist",
"value": "redundancy_testing_local_cc",
"description": "cloudplayout",
"public_id": "1724281533777310596"
}
]
}
}
Enabling a channel for SSAI
To enable a channel for SSAI (server-side ad insertion), include ssai_enabled: true
in the request body when you created the channel. If SSAI is enabled for your account, it can be used for channels that include VOD and/or Live streaming content.
Add content to the playlist
The next step is to add content to the channel content. For this you will use the CMS API (note that this is an abbreviated version of the whole CMS API Reference including just the operations relevant to Cloud Playout and with descriptions that are more appropriate to Cloud Playout).
Get the playlist_id of the channel (from the response to the create channel request or from a get channel request). This is the playlist in which we manage our assets for our Cloud Playout channel.
Sample request
Request
An update video request is used to add content. In the sample below, a collection of video ids are added to create a manual playlist, but note that you can also create smart playlists based on video tags, etc.
Make a PATCH
request to:
https://cms.api.brightcove.com/v1/accounts/{account_id}/playlists/{playlist_id}
Headers
Content-Type: application/json
Authorization: Bearer {token}
Request body
{
"video_ids": [
"70702887566202",
"70702887586202",
"70702260704202",
"70702260706202"
]
}
Sample response
{
"id": "1701632459864392160",
"account_id": "Your account id",
"created_at": "2021-06-04T10:39:32.934Z",
"updated_at": "2021-06-04T12:29:06.793Z",
"description": "cloudplayout",
"favorite": false,
"name": "cloudplayout_dvfdb",
"reference_id": null,
"type": "EXPLICIT",
"video_ids": [
"70702887566202",
"70702887586202",
"70702260704202",
"70702260706202"
],
"state": "READY"
}
Add live event
To add a live event to a channel, you make a create video request to the CMS API, taking care to include some special tags that will identify it as a Cloud Playout live event.
Sample request
Request
Make a POST
request to:
https://cms.api.brightcove.com/v1/accounts/{account_id}/videos
Headers
Content-Type: application/json
Authorization: Bearer {token}
Request body
{
"name": "Name of the event",
"tags": [
"cp-live-placeholder",
"duration-00:40:00"
]
,
"description": "Description of the event"
}
Sample response
{
"id": "70702834583294",
"account_id": "Your account id",
"ad_keys": null,
"clip_source_video_id": null,
"complete": false,
"created_at": "2021-06-04T11:00:48.551Z",
"created_by": {
"type": "user",
"id": "76072843583",
"email": "username@brightcove.com"
},
"cue_points": [
],
"custom_fields": {
},
"delivery_type": "unknown",
"description": "test description",
"digital_master_id": null,
"duration": null,
"economics": "AD_SUPPORTED",
"folder_id": null,
"geo": null,
"has_digital_master": false,
"images": {
},
"link": null,
"long_description": null,
"name": "test live event",
"original_filename": null,
"projection": null,
"published_at": "2021-06-04T11:00:48.565Z",
"reference_id": null,
"schedule": null,
"sharing": null,
"state": "ACTIVE",
"tags": [
"cp-live-placeholder",
"duration-00:05:00"
],
"text_tracks": [
],
"updated_at": "2021-06-04T11:00:48.572Z",
"updated_by": {
"type": "user",
"id": "76076294383",
"email": "username@brightcove.com"
},
"playback_rights_id": "primary"
}
Please refer the CMS API Reference for Cloud Playout for more examples related to managing assets in Cloud Playout.
Add/Manage Overlays
Cloud Playout supports two kinds of overlays:
For each type, the workflow is as follows:
-
Create an overlay asset
You will need to provide a public URL for the static or dynamic image. Be sure to include
"type": "dynamic"
if it is a dynamic overlay. - Associate the overlay with a channel. Note that there are separate endpoints for associating static and dynamic overlays:
Add/Manage custom slates
Slates are used to fill in dead time in channel playback that might result from ad content not completely filling the duration of an ad break or to fill time when a hard start time is set. Brightcove provides a default slate than can be used for any channel, but you can provide a default slate in the form of an MP4 video that will be automatically looped as necessary.
A custom slate can be added as an asset (which makes it reusable for any channel) or specified as a URL when creating the channel (see the sample request body above).
See the API reference for details on adding a custom slate as an account asset.
Get Channel
We can use this endpoint for checking the channel details and state of the channel.
Sample request
Request
Make a GET
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/cp_channels/{channel_id}
Headers
Content-Type: application/json
Authorization: Bearer {token}
Sample response
{
"public_id": "channel id",
"name": "channel name",
"description": "Channel created for testing Cloud Playout",
"account_id": "Your account id",
"state": "DRAFT",
"status": null,
"start_time": "2020-12-17 06:00:00 UTC",
"stop_time": "2020-12-17 07:00:00 UTC",
"input_groups": "playlist",
"output_groups": "rtmp",
"loop_playlist": true,
"playlist_id": "1686204667297382886",
"channel_class": "single-pipeline",
"ssai_enabled": false,
"aws_region": "us-east-1",
"message": null,
"created_at": "2020-12-16 03:41:22 UTC",
"updated_at": "2020-12-17 04:53:30 UTC",
"image_url": "https://bc-cloudplayout-prod.s3.amazonaws.com/default_channel_image.png",
"output_destinations": [
"Brightcove Live"
],
"channel_created_at": "2020-12-16 03:41:22 UTC",
"channel_updated_at": "2020-12-17 04:53:30 UTC",
"channel_created_by": "username@brightcove.com",
"channel_updated_by": "username@brightcove.com",
"live_profile": {
"display_name": "Standard Live HD 720p - Tier 1",
"name": "standard-live-hd-720p-tier-1",
"date_created": "2018-06-04 18:16:44 UTC",
"date_modified": "2018-06-04 18:16:44 UTC"
},
"channel_data": {
"input_group": [
{
"input_type": "playlist",
"value": "cloudplayout_testChannel",
"description": "Playlist created for Cloud Playout",
"public_id": "1686204667297382886"
}
],
"output_groups": [
{
"type": "rtmp",
"location": "bc_live",
"destination": "Brightcove Live"
}
]
}
}
Activate a channel
Activate a channel by making the below request. No request body is required.
Sample request
Request
Make a POST
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/cp_channels/{channel_id}/create
Headers
Content-Type: application/json
Authorization: Bearer {token}
Sample response
{
"message":"Channel activation initiated"
}
To check the state of the channel, see Get Channel section above.
Start a channel
Start a channel by making the below request. No request body is required.
Sample request
Request
Make a POST
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/cp_channels/{channel_id}/start
Headers
Content-Type: application/json
Authorization: Bearer {token}
Sample response
{
"message":"Channel start initiated"
}
To check the state of the channel, see Get Channel section above.
Stop a channel
Stop a channel by making the below request. No request body is required.
Sample request
Request
Make a POST
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/cp_channels/{channel_id}/stop
Headers
Content-Type: application/json
Authorization: Bearer {token}
Sample response
{
"message":"Channel stop initiated"
}
To check the state of the channel, see Get Channel section above. Once stopped the channel will be in DRAFT state.
Delete a channel
Delete a channel by making the below request. No request body is required.
Sample request
Request
Make a DELETE
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/cp_channels/{channel_id}
Headers
Content-Type: application/json
Authorization: Bearer {token}
Sample response
{
"message":"Delete initiated"
}
To check the state of the channel, see Get Channel section above. Once the channel has been deleted, you should no longer see the channel info from get channel by id request.
Get an As-Run log
An as-run log provides a record of what content (including ads and bumpers) was actually transmitted by a Cloud Playout Channel during the previous day. As-run logs are useful for auditing purposes and record-keeping.
You can retrieve an as-run log for a channel in JSON, XML, or CSV format by sending a GET
request to:
https://cm.cloudplayout.brightcove.com/accounts/{account_id}/cp_channels/{channel_id}/as_run_logs?format={format}
The value of format
must be json
(default), xml
, or csv
Notes
- The log is constructed regardless of the current state of the channel.
- The log provides previous day(24 hrs) record. Eg. If current date is
2021-09-22 05:30:00 UTC
, then as-run logging provides playback data of the channel from2021-09-21 00:00:00 UTC
to2021-09-22 00:00:00 UTC
. -
An asset in which a mid-roll is played is split and shown in the data as follows:
- VOD asset
- Mid-roll asset (played, for example, at 45 second)
- VOD asset with
playhead_start_time = 00:00:45
, the position from which it continues.
Sample log: JSON
{
"account_id": "Account ID",
"channel_id": "62713ed768434ffbac9ce2ff974c9cb9",
"channel_name": "TestChannelName",
"from": "Query start time (UTC)",
"to": "Query end time (UTC)",
"events": [
{
"name": "Video Cloud Asset name",
"id": "Video cloud video ID",
"type": "LIVE | AD | VIDEO | PRE_ROLL_BUMPER | POST_ROLL_BUMPER | MIDROLL",
"start_time": "2021-07-30 00:00:00.0 UTC",
"end_time": "2021-07-30 01:00:00.0 UTC"
},
{
"name": "AD Placeholder",
"id": "Video cloud video ID",
"type": "AD",
"start_time": "2021-07-30 01:00:00.0 UTC",
"end_time": "2021-07-30 01:05:00.0 UTC"
},
{
"name": "Asset with a Midroll AD",
"id": "6246656690001",
"type": "VIDEO",
"start_time": "2021-07-30 01:05:00.0 UTC",
"end_time": "2021-07-30 01:10:00.0 UTC"
},
{
"name": "Asset with a Midroll AD",
"id": "6246656690001",
"type": "MIDROLL",
"start_time": "2021-07-30 01:10:00.0 UTC",
"end_time": "2021-07-30 01:10:30.0 UTC"
},
{
"name": "Asset with a Midroll AD",
"id": "6246656690001",
"type": "VIDEO",
"start_time": "2021-07-30 01:10:30.0 UTC",
"end_time": "2021-07-30 01:20:00.0 UTC",
"playhead_start_time": "00:05:00"
}
]
}
Sample log: XML
Account ID
62713ed768434ffbac9ce2ff974c9cb9
TestChannelName
Query start time (UTC)
Query end time (UTC)
Video Cloud Asset name
Video cloud video ID
LIVE | AD | VIDEO | PRE_ROLL_BUMPER | POST_ROLL_BUMPER | MIDROLL
2021-07-30 00:00:00.0 UTC
2021-07-30 01:00:00.0 UTC
AD Placeholder
Video cloud video ID
AD
2021-07-30 01:00:00.0 UTC
2021-07-30 01:05:00.0 UTC
Asset with a Midroll AD
6246656690001
VIDEO
2021-07-30 01:05:00.0 UTC
2021-07-30 01:10:00.0 UTC
Asset with a Midroll AD
6246656690001
MIDROLL
2021-07-30 01:10:00.0 UTC
2021-07-30 01:10:30.0 UTC
Asset with a Midroll AD
6246656690001
VIDEO
2021-07-30 01:10:30.0 UTC
2021-07-30 01:20:00.0 UTC
00:05:00
Sample response: CSV
account_id, channel_id, channel_name, from, to, event:name, event:id, event:type, event:start_time, event:end_time, event:playhead_start_time