> 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/export-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. # Export what a channel plays as CSV GET https://api.fastpix.com/v1/cloud-playout/channels/{channelId}/schedule/export This endpoint returns the same timeline as the get what a channel plays endpoint, as a CSV file you can open in a spreadsheet or hand to a scheduling team. #### How it works 1. Make a GET request to this endpoint with the channel's `type` and the period you want, using `startTime` and `endTime`. Both are required. 2. The response is a CSV file, sent as an attachment with a generated filename. 3. Each row is one thing the channel plays, in play order, with its media id, duration in seconds, start time, end time and type. For a loop channel there is also a program id column. A single export can cover at most 10 days. A longer period is trimmed to the first 10 days rather than refused. #### Example A scheduling team exports next week's running order for a channel and reviews it in a spreadsheet before the week starts. Reference: https://fastpix.com/docs/cloud-playout-api/schedule-and-epg/export-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 exported. ### Query parameters - `type` (enum, required) — The type of the channel. It must match the channel's own type. - Allowed values: `loop`, `schedule` - `startTime` (string, required) — The start of the period to export, in `yyyy-MM-dd'T'HH:mm:ss` format and interpreted as UTC. - `endTime` (string, required) — The end of the period to export, in `yyyy-MM-dd'T'HH:mm:ss` format and interpreted as UTC. It must be later than `startTime`. ## Response ### 200 Channel timeline exported successfully ## Examples **Response** ```json "Media ID,Duration (seconds),Start Time,End Time,Type,Program ID\n8c2c4ef1-1c2a-4a49-9c5b-8f9c0a7c3d21,630,2026-09-02T18:00:00Z,2026-09-02T18:10:30Z,vod,d85083a0-e935-4c29-9c32-6720bdc9b22f\n" ``` **SDK Code** ```python import requests url = "https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule/export" querystring = {"type":"loop","startTime":"2026-09-02T00:00:00","endTime":"2026-09-09T00:00:00"} 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/export?type=loop&startTime=2026-09-02T00%3A00%3A00&endTime=2026-09-09T00%3A00%3A00'; 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/export?type=loop&startTime=2026-09-02T00%3A00%3A00&endTime=2026-09-09T00%3A00%3A00" 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/export?type=loop&startTime=2026-09-02T00%3A00%3A00&endTime=2026-09-09T00%3A00%3A00") 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/export?type=loop&startTime=2026-09-02T00%3A00%3A00&endTime=2026-09-09T00%3A00%3A00") .basicAuth("", "") .asString(); ``` ```php request('GET', 'https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/schedule/export?type=loop&startTime=2026-09-02T00%3A00%3A00&endTime=2026-09-09T00%3A00%3A00', [ '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/export?type=loop&startTime=2026-09-02T00%3A00%3A00&endTime=2026-09-09T00%3A00%3A00"); 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/export?type=loop&startTime=2026-09-02T00%3A00%3A00&endTime=2026-09-09T00%3A00%3A00")! 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.