> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://fastpix.com/docs/cloud-playout-api/schedule-and-epg/get-cloud-playout-channel-schedule/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fastpix.com/_mcp/server. # Get what a channel plays GET https://api.fastpix.com/v1/cloud-playout/channels/{channelId}/schedule This endpoint returns what a Cloud Playout channel plays and when, as a flat timeline. It works for both channel types, and is the endpoint to use when you want the actual running order rather than the configuration behind it. #### How it works 1. Make a GET request to this endpoint with the `channelId` and the channel's `type`. 2. The response returns the timeline in play order, with every entry carrying its own `startTime`, `endTime` and `duration`. 3. Narrow the response to a period with `startTime` and `endTime`. For a loop channel the programs are expanded into the times they actually play, pass after pass, so an item that comes round four times appears four times. Bumpers appear as entries of their own, in the place they play, carrying `bumperId` and `bumperName`. For a schedule channel the bumpers belong to the event instead, and are returned in the entry's `bumper` object rather than as entries of their own. #### Example A channel guide shows viewers what is on now and next by asking for the timeline between now and two hours ahead. Reference: https://fastpix.com/docs/cloud-playout-api/schedule-and-epg/get-cloud-playout-channel-schedule ## Authentication - `Authorization` header (basic auth, required) — FastPix APIs are secured with Basic Authentication. Use your Access Token ID as the username and Secret Key as the password in the Authorization header of each API request. * Username: Access Token ID * Password: Secret Key Activate your FastPix account to generate your API credentials. See the guide here ## Request ### Path parameters - `channelId` (string, required) — The unique identifier of the channel whose timeline is retrieved. ### Query parameters - `type` (enum, required) — The type of the channel. It must match the channel's own type. - Allowed values: `loop`, `schedule` - `startTime` (string, optional) — Only return what plays at or after this time, in `yyyy-MM-dd'T'HH:mm:ss` format and interpreted as UTC. - `endTime` (string, optional) — Only return what plays at or before this time, in `yyyy-MM-dd'T'HH:mm:ss` format and interpreted as UTC. It must be later than `startTime`. ## Response ### 200 Channel timeline retrieved successfully - `success` (boolean, optional) — Shows the request status. Returns true for success and false for failure. - `data` (CloudPlayoutChannelScheduleResponseData, optional) ## Types ### CloudPlayoutChannelScheduleResponseData - `schedule` (list of CloudPlayoutScheduleItem, optional) — What the channel plays, in play order. - `videoCount` (integer, optional) — The number of entries in the timeline. ### CloudPlayoutScheduleItem One thing a Cloud Playout channel plays, at the time it plays. - `id` (string, optional) — The unique identifier of the media that plays. - `name` (string, optional) — The name of what plays. - `type` (enum, optional) — What plays. `vod` is a media item, `live` is the channel's live input, and `bumper` is a short clip that plays around an item. - Allowed values: `vod`, `live`, `bumper` - `startTime` (datetime, optional) — When it starts, defined as a localDateTime (UTC Time). - `endTime` (datetime, optional) — When it ends, defined as a localDateTime (UTC Time). - `duration` (string, optional) — How long it runs, formatted as `HH:MM:SS`. - `thumbnail` (string, optional, nullable) — A URL to its thumbnail image. - `sourceResolution` (string, optional, nullable) — The resolution it is played out at. - `bumperId` (string, optional, nullable) — The unique identifier of the bumper. Returned on loop channels, for entries whose `type` is `bumper`. - `bumperName` (string, optional, nullable) — The name of the bumper. Returned on loop channels, for entries whose `type` is `bumper`. - `bumper` (CloudPlayoutScheduleEventBumper, optional) — The bumpers that play around this entry. Returned on schedule channels, where bumpers belong to the event rather than being entries of their own. - `programId` (string, optional, nullable) — The unique identifier of the program this entry belongs to. Returned for loop channels. - `programName` (string, optional, nullable) — The name of the program this entry belongs to. Returned for loop channels. - `programMediaId` (string, optional, nullable) — The unique identifier of the item within its program. Returned for loop channels. ### CloudPlayoutScheduleEventBumper The bumpers attached to the event. Each key is present only when a bumper of that kind is attached. - `preroll` (CloudPlayoutScheduleEventRollResponse, optional) - `postroll` (CloudPlayoutScheduleEventRollResponse, optional) ### CloudPlayoutScheduleEventRollResponse - `id` (string, optional) — The unique identifier of the bumper. - `duration` (integer, optional) — The duration of the bumper in seconds. ## Examples **Response** ```json { "success": true, "data": { "schedule": [ { "id": "9d9f2c67-0a25-4b3e-9a70-1a5c1d2b6f88", "name": "Ad break intro", "type": "bumper", "startTime": "2026-09-02T17:59:55Z", "endTime": "2026-09-02T18:00:00Z", "duration": "00:00:05", "bumperId": "9d9f2c67-0a25-4b3e-9a70-1a5c1d2b6f88", "bumperName": "Ad break intro", "programId": "d85083a0-e935-4c29-9c32-6720bdc9b22f", "programName": "Morning block" }, { "id": "8c2c4ef1-1c2a-4a49-9c5b-8f9c0a7c3d21", "name": "Morning headlines", "type": "vod", "startTime": "2026-09-02T18:00:00Z", "endTime": "2026-09-02T18:10:30Z", "duration": "00:10:30", "thumbnail": "https://images.fastpix.com/8c2c4ef1-1c2a-4a49-9c5b-8f9c0a7c3d21/thumbnail.png", "sourceResolution": "1080p", "programId": "d85083a0-e935-4c29-9c32-6720bdc9b22f", "programName": "Morning block", "programMediaId": "4a1e1f3b-2c0d-4c4a-9a02-1d7e5f6b8c90" } ], "videoCount": 2 } } ``` **SDK Code** ```python import requests url = "https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule" querystring = {"type":"loop"} response = requests.get(url, params=querystring, auth=("", "")) print(response.json()) ``` ```javascript const url = 'https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule?type=loop'; const credentials = btoa(":"); const options = {method: 'GET', headers: {Authorization: `Basic ${credentials}`}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule?type=loop" req, _ := http.NewRequest("GET", url, nil) req.SetBasicAuth("", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule?type=loop") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request.basic_auth("", "") response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule?type=loop") .basicAuth("", "") .asString(); ``` ```php request('GET', 'https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule?type=loop', [ 'headers' => [ ], 'auth' => ['', ''], ]); echo $response->getBody(); ``` ```csharp using RestSharp; using RestSharp.Authenticators; var client = new RestClient("https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule?type=loop"); client.Authenticator = new HttpBasicAuthenticator("", ""); var request = new RestRequest(Method.GET); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let credentials = Data(":".utf8).base64EncodedString() let headers = ["Authorization": "Basic \(credentials)"] let request = NSMutableURLRequest(url: NSURL(string: "https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule?type=loop")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` > The single API stack for video: upload, encode, stream, secure, and analyze video at any scale. Explore guides, API references, and SDKs.