> 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/loop-programs/update-cloud-playout-program/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fastpix.com/_mcp/server. # Update a program PATCH https://api.fastpix.com/v1/cloud-playout/channels/{channelId}/programs/{programId} Content-Type: application/json This endpoint renames a program on a Cloud Playout loop channel. Only the `name` can be changed. A program's content is changed with the media, live, and playlist endpoints. #### How it works 1. Make a PATCH request to this endpoint, replacing `{channelId}` and `{programId}` with the UUIDs of the channel and the program. 2. Provide the new `name` in the request body. 3. The response returns the program with its updated details. A program can be renamed at any time, including while the channel is on air. Renaming does not change what the channel plays. #### Example A broadcaster renames "Block A" to "Morning block" so that the line-up reads clearly to the operators scheduling around it. Reference: https://fastpix.com/docs/cloud-playout-api/loop-programs/update-cloud-playout-program ## 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 loop channel the program belongs to. - `programId` (string, required) — The unique identifier of the program, returned by FastPix when the program was created. ### Body (application/json) This endpoint expects a CloudPlayoutProgramRequest. - `name` (string, required) — A name for the program. It must be between 3 and 25 characters and can contain only alphanumeric characters, hyphens, underscores, and spaces. ## Response ### 200 Program updated successfully - `success` (boolean, optional) — Shows the request status. Returns true for success and false for failure. - `data` (CloudPlayoutProgram, optional) — A program on a Cloud Playout loop channel. ## Types ### CloudPlayoutProgram A program on a Cloud Playout loop channel. - `id` (string, optional) — The unique identifier FastPix assigns to the program. - `index` (double, optional) — The program's position in the channel's loop. Programs are played in ascending order of index. - `name` (string, optional) — The name given to the program. - `channelId` (string, optional) — The unique identifier of the channel the program belongs to. - `mediaCount` (integer, optional) — The number of items currently in the program. - `duration` (string, optional) — The combined duration of the program's content, formatted as `HH:MM:SS`, or `HH:MM:SS.mmm` when the total includes a fraction of a second. - `workspaceId` (string, optional) — The unique identifier of the workspace the program was created in. - `createdAt` (datetime, optional) — Time the program was created, defined as a localDateTime (UTC Time). - `updatedAt` (datetime, optional) — Time the program was last updated, defined as a localDateTime (UTC Time). ## Examples **Request** ```json { "name": "Morning block" } ``` **Response** ```json { "success": true, "data": { "id": "d85083a0-e935-4c29-9c32-6720bdc9b22f", "index": 10, "name": "Morning block", "channelId": "cc99cae6-56b4-46ab-9f4a-8b2462d8137c", "mediaCount": 0, "duration": "00:00:00", "workspaceId": "37d62550-e2a5-4827-b16a-3826e66d77ad", "createdAt": "2025-03-12T06:17:26.403017Z", "updatedAt": "2025-03-12T06:17:26.403017Z" } } ``` **SDK Code** ```python import requests url = "https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/programs/d85083a0-e935-4c29-9c32-6720bdc9b22f" payload = { "name": "Morning block" } headers = { "Content-Type": "application/json" } response = requests.patch(url, json=payload, headers=headers, auth=("", "")) print(response.json()) ``` ```javascript const url = 'https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/programs/d85083a0-e935-4c29-9c32-6720bdc9b22f'; const credentials = btoa(":"); const options = { method: 'PATCH', headers: { Authorization: `Basic ${credentials}`, 'Content-Type': 'application/json' }, body: '{"name":"Morning block"}' }; 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" "strings" "net/http" "io" ) func main() { url := "https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/programs/d85083a0-e935-4c29-9c32-6720bdc9b22f" payload := strings.NewReader("{\n \"name\": \"Morning block\"\n}") req, _ := http.NewRequest("PATCH", url, payload) req.SetBasicAuth("", "") req.Header.Add("Content-Type", "application/json") 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/programs/d85083a0-e935-4c29-9c32-6720bdc9b22f") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Patch.new(url) request.basic_auth("", "") request["Content-Type"] = 'application/json' request.body = "{\n \"name\": \"Morning block\"\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.patch("https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/programs/d85083a0-e935-4c29-9c32-6720bdc9b22f") .basicAuth("", "") .header("Content-Type", "application/json") .body("{\n \"name\": \"Morning block\"\n}") .asString(); ``` ```php request('PATCH', 'https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/programs/d85083a0-e935-4c29-9c32-6720bdc9b22f', [ 'body' => '{ "name": "Morning block" }', 'headers' => [ 'Content-Type' => 'application/json', ], '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/programs/d85083a0-e935-4c29-9c32-6720bdc9b22f"); client.Authenticator = new HttpBasicAuthenticator("", ""); var request = new RestRequest(Method.PATCH); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"name\": \"Morning block\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let credentials = Data(":".utf8).base64EncodedString() let headers = [ "Authorization": "Basic \(credentials)", "Content-Type": "application/json" ] let parameters = ["name": "Morning block"] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.fastpix.com/v1/cloud-playout/channels/cc99cae6-56b4-46ab-9f4a-8b2462d8137c/programs/d85083a0-e935-4c29-9c32-6720bdc9b22f")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "PATCH" request.allHTTPHeaderFields = headers request.httpBody = postData as Data 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.