The Timeshift feature in Brightcove allows viewers to go to a specific time period which offers a DVR like experience that brings flexibility and control to a Live channel.
NextGen Live supports timeshift (catch-up). It does not require enabling any features or making any account-level changes.
This feature can be used for an existing Live Channel or for new Live Channels.
Below are the steps to configure Timeshift for NextGen Live:
The base URL for the NextGen Live API is:
Once you have your Token, you can get the playback token by making a POST request to;
POST v2/accounts/{account_id}/playback/{job_id}/token
You must pass the following headers with this call:
{
"dvr": false,
"low_latency": false,
"manifest_format": "hls",
"playlist_name": "",
"start_time": "2025-08-18T16:49:29+05:30",
"end_time": "2025-08-18T16:49:39+05:30",
"byocdn_id": "",
"ssai": false,
"ad_config_id":"",
"cenc": false
}
The response will look like this (pretty-printed here for readability):
After generating the Playback token as above, we can get the Timeshift playback URL using the below GET API call,
Edit the respective Account ID, Job ID, and the playback token which is generated from the previous call.
You must pass the following headers with this call:
To get the Policy Key, refer to the URL below.
How to create BCOV Policy Key
{
"description": "Testing ",
"tags": [],
"cue_points": [],
"custom_fields": {},
"account_id": "x",
"sources": [
{
"codecs": "mp4a,avc1",
"ext_x_version": "6",
"src": "playback URL will be here",
"type": "application/x-mpegURL"
}
],
"name": "Timeshift Test",
"reference_id": null,
"long_description": null,
"duration": -1,
"economics": "AD_SUPPORTED",
"text_tracks": [],
"published_at": "2025-09-09T11:25:57.505Z",
"created_at": "2025-09-09T11:25:57.505Z",
"updated_at": "2025-09-09T11:25:57.828Z",
"offline_enabled": false,
"link": null,
"id": "x",
"ad_keys": null
}
The following are valid scenarios when using Timeshift in NextGen Live. These ensure smooth playback and predictable results.
start_time within 14 days of the current live channel.start_time must always be earlier than the end_time.end_time and start_time must be less than or equal to 24 hours.start_time is defined, playback behaves like a live stream that allows viewers to scrub back to the defined start_time. This is useful for live sports or news events. The URL expires once the playback window exceeds 24 hours.start_time becomes less than or equal to the current time. Playback automatically transitions through these states: