NextGen Live Timeshift

In this topic, we will learn how to use the NextGen Live Timeshift feature and its benefits.

Overview

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.

Configuring Timeshift for the Live Stream

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:

General information

Base URL

The base URL for the NextGen Live API is:

https://api.live.brightcove.com
HTTP

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:

Authorization: Bearer {access_token}
HTTP

Sample Payload


  {
  "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):

{
    "access_token": "ANB7xKhiUZmwltVd3f1odcHHM9VAwg02kwmLwtZwHv3SxGCOWLUf5W4G7X22PRjmR9StvFUqzpVZ1suOfyfOigdi-rnohxyEaSSuZceeLw_9OBW7fXldOG05HEgkeK3N-DBZZZyilodmjA1JWZHbgI3IU000000000000-z8AL-blKTSMtNI3_fz3oNBisfrHGUv5tXHoQT4B7FYcvdrap16gTOO7_wNt1zmgLJiUHvyxZgsgBchm_AhohVL-AYgcfCbCR0v7d2hgI4ag35pnZNeujDiBLfnCFcVMlqQGq8UEVZrmU9a8000000000qmSrkxLPYZ800-vIWX-lw",
    "token_type": "Bearer",
    "expires_in": 300
}
JSON

After generating the Playback token as above, we can get the Timeshift playback URL using the below GET API call,

https://edge.api.brightcove.com/playback/v1/accounts/$account_id/videos/$job_id?livePlaybackToken=$token
HTTP

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:

Authorization: BCOV-Policy {policy_key}
HTTP

To get the Policy Key, refer to the URL below.

How to create BCOV Policy Key

Response Payload


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

Recommendations

  • When creating the Playback token request, the main Timeshift-related fields in the payload are start_time and end_time.
  • Time can be in epoch or ISO 8601 format. Both fields should contain a valid string and should not be empty.
  • There are some valid cases which needs to be used. The start time should be within last 14 days of the job.

Valid Cases

The following are valid scenarios when using Timeshift in NextGen Live. These ensure smooth playback and predictable results.

  • Start time within the last 14 days: You can only choose a start_time within 14 days of the current live channel.
  • Start time before end time: The start_time must always be earlier than the end_time.
  • Duration limit: The difference between end_time and start_time must be less than or equal to 24 hours.
  • Only start time provided: When only a 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 and end time in the future: If both times are set in the future, playback will begin only when the start_time becomes less than or equal to the current time. Playback automatically transitions through these states:
    • No playback
    • Live event playback
    • VOD playback (available for 14 days)
    This setup is ideal for scheduled event streaming where the same URL can serve both live and catch-up viewing.