---
title: "Update a channel"
method: PATCH
path: "/saas/channel/{channel_id}"
tags: ["Channel"]
---

# Update a channel

`PATCH /saas/channel/{channel_id}`

PATCH /saas/channel/{cid} — broadcaster-first saga (broadcaster + cache).

Enforces the event-wide plan language cap on language changes; otherwise a
thin proxy to the broadcaster. Does not touch the listener-request queue.

## Path parameters

- `channel_id` string, uuid4, required

## Request body

- GenericRequestPayloadUpdateChannelRequest
  - `data` UpdateChannelRequest, required
    - `channel_id` string, uuid — Channel ID
    - `name` string — Channel name

## Response `200`

Successful Response

- GenericResponsePayloadCreateChannelResponseData
  - `ok` boolean — Indicates if the request was successful or not.
  - `data` CreateChannelResponseData, required — Broadcaster ``Broadcast`` passthrough + public_api channel keys. Broadcaster fields (``id``, ``title``, ``status``, ``input``, ``outputs``, ``translation_pipeline``, …) are inherited from ``BroadcastDTO`` and served live from broadcaster; they are ``null`` when broadcaster is unreachable. The channel-core fields below are always served from the PG row so the UI (name=``title``, status) renders even on a broadcaster outage; languages are read from ``translation_pipeline`` (backfilled from cache on an outage).
    - `id` string — Broadcast ID
    - `user` string — Owner user ID
    - `title` string — Broadcast title
    - `region` string — Deployment/ingest region
    - `status` string — Runtime status (pending/active/failed/stopped)
    - `error` string — Error description, if any
    - `input_bitrate` integer — Measured input bitrate
    - `ignore_video` boolean
    - `original_delay_seconds` integer
    - `original_ducked_volume` union
      - number
      - integer
    - `input` object — Resolved input endpoint/credentials
    - `outputs` unknown[] — Configured egress outputs
      - unknown
    - `translation_pipeline` object — Translation pipeline settings
    - `channel_id` string, uuid, required — Channel ID (public_api addressing key)
    - `type` 'event' | 'standalone', required
    - `event_id` string, uuid — Parent event ID
    - `stage_id` string, uuid — Parent stage ID
    - `broadcast_id` string, uuid — Underlying broadcast ID; null when broadcaster create failed
    - `input_type` 'webrtc_push' | 'rtmp_push' | 'srt_push' | 'hls_pull', required
    - `room_name_suffix` string — LiveKit room name suffix
    - `runtime_status` 'pending' | 'running' | 'errored'
    - `audio_settings` object — Channel audio settings
    - `cache_synced_at` string, date-time — Last broadcaster sync time in UTC
    - `utc_created_at` string, date-time, required — Channel creation time in UTC
    - `utc_updated_at` string, date-time, required — Channel last update time in UTC

## Other responses

- `default` — Default Response

---

[API](https://skmtc.dev/palabra/apis/palabra-api.md) · [All operations](https://skmtc.dev/palabra/apis/palabra-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/palabra/palabra-api/revisions/cb8721654525/schema)
