[{"data":1,"prerenderedAt":2373},["ShallowReactive",2],{"navigation_docs_en":3,"-en-live-production-on-air":408,"-en-live-production-on-air-surround":2368},[4,25,74,124,238,253,313,342,388],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Getting Started","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Quickstart","\u002Fen\u002Fgetting-started\u002Fquickstart","en\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Concepts","\u002Fen\u002Fgetting-started\u002Fconcepts","en\u002F1.getting-started\u002F3.concepts","i-lucide-book-open",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"Live Production","\u002Fen\u002Flive-production","en\u002F2.live-production",[30,35,55,60],{"title":31,"path":32,"stem":33,"icon":34},"On air","\u002Fen\u002Flive-production\u002Fon-air","en\u002F2.live-production\u002F1.on-air","i-lucide-radio",{"title":36,"path":37,"stem":38,"children":39,"page":24},"Live Streams","\u002Fen\u002Flive-production\u002Flive-streams","en\u002F2.live-production\u002F2.live-streams",[40,45,50],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Fen\u002Flive-production\u002Flive-streams\u002Foverview","en\u002F2.live-production\u002F2.live-streams\u002F1.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Options","\u002Fen\u002Flive-production\u002Flive-streams\u002Flive-stream-options","en\u002F2.live-production\u002F2.live-streams\u002F2.live-stream-options","i-lucide-file-text",{"title":51,"path":52,"stem":53,"icon":54},"Start and stop","\u002Fen\u002Flive-production\u002Flive-streams\u002Fstart-stop","en\u002F2.live-production\u002F2.live-streams\u002F3.start-stop","i-lucide-play-circle",{"title":56,"path":57,"stem":58,"icon":59},"Scheduler","\u002Fen\u002Flive-production\u002Fscheduler","en\u002F2.live-production\u002F3.scheduler","i-lucide-calendar-clock",{"title":61,"path":62,"stem":63,"children":64,"page":24},"Recordings","\u002Fen\u002Flive-production\u002Frecordings","en\u002F2.live-production\u002F4.recordings",[65,69],{"title":41,"path":66,"stem":67,"icon":68},"\u002Fen\u002Flive-production\u002Frecordings\u002Foverview","en\u002F2.live-production\u002F4.recordings\u002F1.overview","i-lucide-circle-dot",{"title":70,"path":71,"stem":72,"icon":73},"Editor","\u002Fen\u002Flive-production\u002Frecordings\u002Feditor","en\u002F2.live-production\u002F4.recordings\u002F2.editor","i-lucide-scissors",{"title":75,"path":76,"stem":77,"children":78,"page":24},"Configuration","\u002Fen\u002Fconfiguration","en\u002F3.configuration",[79,93,98,111],{"title":80,"path":81,"stem":82,"children":83,"page":24},"Devices","\u002Fen\u002Fconfiguration\u002Fdevices","en\u002F3.configuration\u002F1.devices",[84,88],{"title":80,"path":85,"stem":86,"icon":87},"\u002Fen\u002Fconfiguration\u002Fdevices\u002Fdevices","en\u002F3.configuration\u002F1.devices\u002F1.devices","i-lucide-server",{"title":89,"path":90,"stem":91,"icon":92},"Groups","\u002Fen\u002Fconfiguration\u002Fdevices\u002Fgroups","en\u002F3.configuration\u002F1.devices\u002F2.groups","i-lucide-network",{"title":94,"path":95,"stem":96,"icon":97},"Sources","\u002Fen\u002Fconfiguration\u002Fsources","en\u002F3.configuration\u002F2.sources","i-lucide-cable",{"title":99,"path":100,"stem":101,"children":102,"page":24},"Encodings","\u002Fen\u002Fconfiguration\u002Fencodings","en\u002F3.configuration\u002F3.encodings",[103,107],{"title":99,"path":104,"stem":105,"icon":106},"\u002Fen\u002Fconfiguration\u002Fencodings\u002Fprofiles","en\u002F3.configuration\u002F3.encodings\u002F1.profiles","i-lucide-sliders-horizontal",{"title":89,"path":108,"stem":109,"icon":110},"\u002Fen\u002Fconfiguration\u002Fencodings\u002Fgroups","en\u002F3.configuration\u002F3.encodings\u002F2.groups","i-lucide-layers",{"title":112,"path":113,"stem":114,"children":115,"page":24},"Destinations","\u002Fen\u002Fconfiguration\u002Fdestinations","en\u002F3.configuration\u002F4.destinations",[116,120],{"title":112,"path":117,"stem":118,"icon":119},"\u002Fen\u002Fconfiguration\u002Fdestinations\u002Fdestinations","en\u002F3.configuration\u002F4.destinations\u002F1.destinations","i-lucide-send",{"title":89,"path":121,"stem":122,"icon":123},"\u002Fen\u002Fconfiguration\u002Fdestinations\u002Fpublishing-groups","en\u002F3.configuration\u002F4.destinations\u002F2.publishing-groups","i-lucide-share-2",{"title":125,"path":126,"stem":127,"children":128,"page":24},"Settings","\u002Fen\u002Fsettings","en\u002F4.settings",[129,142,147,163,179],{"title":130,"path":131,"stem":132,"children":133,"page":24},"Users","\u002Fen\u002Fsettings\u002Fusers","en\u002F4.settings\u002F1.users",[134,138],{"title":130,"path":135,"stem":136,"icon":137},"\u002Fen\u002Fsettings\u002Fusers\u002Fusers","en\u002F4.settings\u002F1.users\u002F1.users","i-lucide-user",{"title":89,"path":139,"stem":140,"icon":141},"\u002Fen\u002Fsettings\u002Fusers\u002Fuser-groups","en\u002F4.settings\u002F1.users\u002F2.user-groups","i-lucide-users",{"title":143,"path":144,"stem":145,"icon":146},"Security","\u002Fen\u002Fsettings\u002Fsecurity","en\u002F4.settings\u002F2.security","i-lucide-shield",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":24},"Assets","i-lucide-image","\u002Fen\u002Fsettings\u002Fassets","en\u002F4.settings\u002F3.assets",[153,158],{"title":154,"path":155,"stem":156,"icon":157},"Logos","\u002Fen\u002Fsettings\u002Fassets\u002Flogos","en\u002F4.settings\u002F3.assets\u002F1.logos","i-lucide-images",{"title":159,"path":160,"stem":161,"icon":162},"Files","\u002Fen\u002Fsettings\u002Fassets\u002Ffiles","en\u002F4.settings\u002F3.assets\u002F2.files","i-lucide-clapperboard",{"title":164,"icon":165,"path":166,"stem":167,"children":168,"page":24},"External Storage","i-lucide-folder-cog","\u002Fen\u002Fsettings\u002Fexternal-storage","en\u002F4.settings\u002F4.external-storage",[169,174],{"title":170,"path":171,"stem":172,"icon":173},"Remote Folders","\u002Fen\u002Fsettings\u002Fexternal-storage\u002Fremote-folders","en\u002F4.settings\u002F4.external-storage\u002F1.remote-folders","i-lucide-folder-archive",{"title":175,"path":176,"stem":177,"icon":178},"Target Folders","\u002Fen\u002Fsettings\u002Fexternal-storage\u002Ftarget-folders","en\u002F4.settings\u002F4.external-storage\u002F2.target-folders","i-lucide-folder-up",{"title":180,"path":181,"stem":182,"children":183,"page":24},"Integrations","\u002Fen\u002Fsettings\u002Fintegrations","en\u002F4.settings\u002F5.integrations",[184,188,193,207],{"title":41,"path":185,"stem":186,"icon":187},"\u002Fen\u002Fsettings\u002Fintegrations\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F1.overview","i-lucide-plug",{"title":189,"path":190,"stem":191,"icon":192},"MediaCopilot","\u002Fen\u002Fsettings\u002Fintegrations\u002Fmediacopilot","en\u002F4.settings\u002F5.integrations\u002F2.mediacopilot","i-lucide-sparkles",{"title":194,"icon":195,"path":196,"stem":197,"children":198,"page":24},"C21 Live Cloud","i-lucide-cloud","\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud",[199,202],{"title":41,"path":200,"stem":201,"icon":195},"\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F1.overview",{"title":203,"path":204,"stem":205,"icon":206},"Accounts","\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Faccounts","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F2.accounts","i-lucide-key-round",{"title":208,"icon":146,"path":209,"stem":210,"children":211,"page":24},"DRM Providers","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm","en\u002F4.settings\u002F5.integrations\u002F4.drm",[212,216,220,224,228,233],{"title":41,"path":213,"stem":214,"icon":215},"\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F1.overview","i-lucide-shield-check",{"title":217,"path":218,"stem":219,"icon":146},"Widevine","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fwidevine","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F2.widevine",{"title":221,"path":222,"stem":223,"icon":146},"PlayReady","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fplayready","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F3.playready",{"title":225,"path":226,"stem":227,"icon":146},"FairPlay","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Ffairplay","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F4.fairplay",{"title":229,"path":230,"stem":231,"icon":232},"Providers","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fproviders","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F5.providers","i-lucide-shield-half",{"title":234,"path":235,"stem":236,"icon":237},"Workflow","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fworkflow","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F6.workflow","i-lucide-workflow",{"title":239,"path":240,"stem":241,"children":242,"page":24},"System Status","\u002Fen\u002Fsystem-status","en\u002F5.system-status",[243,248],{"title":244,"path":245,"stem":246,"icon":247},"Commands","\u002Fen\u002Fsystem-status\u002Fcommands","en\u002F5.system-status\u002F1.commands","i-lucide-square-terminal",{"title":249,"path":250,"stem":251,"icon":252},"Logs","\u002Fen\u002Fsystem-status\u002Flogs","en\u002F5.system-status\u002F2.logs","i-lucide-scroll-text",{"title":254,"path":255,"stem":256,"children":257,"page":24},"How Tos","\u002Fen\u002Fhow-tos","en\u002F6.how-tos",[258,263,268,273,277,281,285,290,294,299,304,309],{"title":259,"path":260,"stem":261,"icon":262},"Start and stop a Live stream","\u002Fen\u002Fhow-tos\u002Fstart-stream-via-api","en\u002F6.how-tos\u002F1.start-stream-via-api","i-lucide-terminal",{"title":264,"path":265,"stem":266,"icon":267},"Ingest a YouTube Live broadcast","\u002Fen\u002Fhow-tos\u002Fingest-youtube-live","en\u002F6.how-tos\u002F10.ingest-youtube-live","i-lucide-youtube",{"title":269,"path":270,"stem":271,"icon":272},"Source Synchronized Encoding (SSE) — bit-identical redundancy","\u002Fen\u002Fhow-tos\u002Fsource-synchronized-encoding","en\u002F6.how-tos\u002F11.source-synchronized-encoding","i-lucide-copy-check",{"title":274,"path":275,"stem":276,"icon":34},"Broadcast radio as video","\u002Fen\u002Fhow-tos\u002Fbroadcast-radio-as-video","en\u002F6.how-tos\u002F12.broadcast-radio-as-video",{"title":278,"path":279,"stem":280,"icon":215},"Protect a Live stream with multi-DRM","\u002Fen\u002Fhow-tos\u002Fmulti-drm-destination","en\u002F6.how-tos\u002F2.multi-drm-destination",{"title":282,"path":283,"stem":284,"icon":59},"Schedule a weekly recurring broadcast","\u002Fen\u002Fhow-tos\u002Fweekly-recurring-broadcast","en\u002F6.how-tos\u002F3.weekly-recurring-broadcast",{"title":286,"path":287,"stem":288,"icon":289},"Cut a clip in the Editor and send it to MediaCopilot","\u002Fen\u002Fhow-tos\u002Fexport-recording-to-mediacopilot","en\u002F6.how-tos\u002F4.export-recording-to-mediacopilot","i-lucide-upload-cloud",{"title":291,"path":292,"stem":293,"icon":149},"Apply a logo overlay to a running Live stream","\u002Fen\u002Fhow-tos\u002Fapply-logo-overlay","en\u002F6.how-tos\u002F5.apply-logo-overlay",{"title":295,"path":296,"stem":297,"icon":298},"Black out or replace the program on a running Live stream","\u002Fen\u002Fhow-tos\u002Fbroadcast-blackout","en\u002F6.how-tos\u002F6.broadcast-blackout","i-lucide-square",{"title":300,"path":301,"stem":302,"icon":303},"Switch the source of a running Live stream","\u002Fen\u002Fhow-tos\u002Fruntime-source-switch","en\u002F6.how-tos\u002F7.runtime-source-switch","i-lucide-repeat-2",{"title":305,"path":306,"stem":307,"icon":308},"Toggle a Publishing mid-broadcast","\u002Fen\u002Fhow-tos\u002Ftoggle-publishing-mid-broadcast","en\u002F6.how-tos\u002F8.toggle-publishing-mid-broadcast","i-lucide-toggle-right",{"title":310,"path":311,"stem":312,"icon":34},"Contribute a live signal to MediaCopilot Live","\u002Fen\u002Fhow-tos\u002Fcontribute-to-mediacopilot-live","en\u002F6.how-tos\u002F9.contribute-to-mediacopilot-live",{"title":314,"path":315,"stem":316,"children":317,"page":24},"Installation","\u002Fen\u002Finstallation","en\u002F7.installation",[318,323,328,333,338],{"title":319,"path":320,"stem":321,"icon":322},"Prepare the host","\u002Fen\u002Finstallation\u002Fprepare-host","en\u002F7.installation\u002F1.prepare-host","i-lucide-server-cog",{"title":324,"path":325,"stem":326,"icon":327},"Install C21 Live Control","\u002Fen\u002Finstallation\u002Fcontrol","en\u002F7.installation\u002F2.control","i-lucide-cloud-download",{"title":329,"path":330,"stem":331,"icon":332},"Install C21 Live Encoder","\u002Fen\u002Finstallation\u002Fencoder","en\u002F7.installation\u002F3.encoder","i-lucide-cpu",{"title":334,"path":335,"stem":336,"icon":337},"Updates","\u002Fen\u002Finstallation\u002Fupdates","en\u002F7.installation\u002F4.updates","i-lucide-refresh-cw",{"title":339,"path":340,"stem":341,"icon":206},"Licenses","\u002Fen\u002Finstallation\u002Flicenses","en\u002F7.installation\u002F5.licenses",{"title":343,"path":344,"stem":345,"children":346,"page":24},"Developers","\u002Fen\u002Fdevelopers","en\u002F8.developers",[347,351,369],{"title":41,"path":348,"stem":349,"icon":350},"\u002Fen\u002Fdevelopers\u002Foverview","en\u002F8.developers\u002F1.overview","i-lucide-code",{"title":352,"icon":350,"path":353,"stem":354,"children":355,"page":24},"API","\u002Fen\u002Fdevelopers\u002Fapi","en\u002F8.developers\u002F2.api",[356,359,364],{"title":41,"path":357,"stem":358,"icon":350},"\u002Fen\u002Fdevelopers\u002Fapi\u002Foverview","en\u002F8.developers\u002F2.api\u002F1.overview",{"title":360,"path":361,"stem":362,"icon":363},"Authentication","\u002Fen\u002Fdevelopers\u002Fapi\u002Fauthentication","en\u002F8.developers\u002F2.api\u002F2.authentication","i-lucide-key",{"title":365,"path":366,"stem":367,"icon":368},"Pagination and Errors","\u002Fen\u002Fdevelopers\u002Fapi\u002Fpagination-errors","en\u002F8.developers\u002F2.api\u002F3.pagination-errors","i-lucide-list-ordered",{"title":370,"icon":371,"path":372,"stem":373,"children":374,"page":24},"MCP Server","i-lucide-bot","\u002Fen\u002Fdevelopers\u002Fmcp-server","en\u002F8.developers\u002F3.mcp-server",[375,378,383],{"title":41,"path":376,"stem":377,"icon":371},"\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Foverview","en\u002F8.developers\u002F3.mcp-server\u002F1.overview",{"title":379,"path":380,"stem":381,"icon":382},"Tools","\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Ftools","en\u002F8.developers\u002F3.mcp-server\u002F2.tools","i-lucide-wrench",{"title":384,"path":385,"stem":386,"icon":387},"Examples","\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Fexamples","en\u002F8.developers\u002F3.mcp-server\u002F3.examples","i-lucide-play",{"title":389,"path":390,"stem":391,"children":392,"page":24},"Resources","\u002Fen\u002Fresources","en\u002F9.resources",[393,398,403],{"title":394,"path":395,"stem":396,"icon":397},"Links","\u002Fen\u002Fresources\u002Flinks","en\u002F9.resources\u002F1.links","i-lucide-link",{"title":399,"path":400,"stem":401,"icon":402},"Release Notes","\u002Fen\u002Fresources\u002Frelease-notes","en\u002F9.resources\u002F2.release-notes","i-lucide-clipboard-list",{"title":404,"path":405,"stem":406,"icon":407},"Glossary","\u002Fen\u002Fresources\u002Fglossary","en\u002F9.resources\u002F3.glossary","i-lucide-book-a",{"id":409,"title":31,"body":410,"description":2361,"extension":2362,"links":2363,"meta":2364,"navigation":2365,"path":32,"seo":2366,"stem":33,"__hash__":2367},"docs_en\u002Fen\u002F2.live-production\u002F1.on-air.md",{"type":411,"value":412,"toc":2338},"minimark",[413,421,444,452,457,471,475,482,501,504,508,515,519,522,621,631,635,638,647,651,654,658,665,668,673,678,681,686,691,700,714,718,721,811,814,819,822,886,892,896,899,905,909,912,995,1001,1005,1009,1015,1124,1130,1184,1188,1192,1195,1226,1236,1332,1352,1369,1375,1379,1383,1390,1611,1629,1633,1636,1646,1658,1662,1670,1690,1699,1705,1712,1725,1827,1837,1959,1990,1995,1998,2085,2088,2216,2219,2288,2291,2295,2300,2309,2313,2324,2328,2334],[414,415,416],"p",{},[417,418],"img",{"alt":419,"src":420},"On air dashboard","\u002Fscreenshots\u002Fon-air.webp",[414,422,423,424,427,428,430,431,430,434,430,437,430,440,443],{},"The ",[425,426,31],"strong",{}," view is the live status list of every Live stream currently running. Each row links a Channel, an Encoding (or Encoding group) and a Destination (or Destination group). Selecting a row expands an inline runtime panel with five tabs — ",[425,429,112],{},", ",[425,432,433],{},"Preview",[425,435,436],{},"Logo",[425,438,439],{},"Blackout",[425,441,442],{},"Source switch"," — that drive the runtime control surface of the broadcast without stopping it.",[414,445,446,447,451],{},"For integrators, the same runtime surface is reachable through eight ",[448,449,450],"code",{},"POST \u002Fc21apiv2\u002Flivestreams\u002F{id}\u002FruntimeOptions\u002F*"," endpoints, including the metadata-push capability used to inject SCTE-35 cues and ID3 tags into a running stream. The eight endpoints, the three of them that are API-only, and the shared response semantics are documented at the end of this page.",[453,454,456],"h2",{"id":455},"access","Access",[458,459,460,468],"ul",{},[461,462,463,464,467],"li",{},"Route: ",[448,465,466],{},"\u002FliveStreams\u002FonAir",".",[461,469,470],{},"Required role: any authenticated user (Operator or System Administrator).",[453,472,474],{"id":473},"how-the-list-refreshes","How the list refreshes",[414,476,477,478,481],{},"The list polls the server every ",[425,479,480],{},"5 seconds",". The cadence is hard-coded — there is no per-user setting and no manual refresh button. Rows are filtered server-side so the page shows:",[458,483,484,495],{},[461,485,486,487,490,491,494],{},"every Live stream whose ",[448,488,489],{},"LiveStream.status"," is ",[448,492,493],{},"1"," (running), plus",[461,496,497,498,500],{},"every ",[425,499,194],{}," broadcast still provisioning its cloud encoder (the row appears with the cloud spinner until the encoder comes up).",[414,502,503],{},"A Live stream that the Scheduler started shows a calendar icon next to the encoder name on its row.",[453,505,507],{"id":506},"search","Search",[414,509,510,511,514],{},"The toolbar exposes a free-text search field — type a substring and rows update after a brief pause. The only search key is ",[448,512,513],{},"name"," — there are no status, encoder, destination or tag filter chips.",[453,516,518],{"id":517},"list-columns","List columns",[414,520,521],{},"Six columns, in this order:",[523,524,525,541],"table",{},[526,527,528],"thead",{},[529,530,531,535,538],"tr",{},[532,533,534],"th",{},"Column",[532,536,537],{},"Header",[532,539,540],{},"Notes",[542,543,544,555,569,582,595,608],"tbody",{},[529,545,546,549,552],{},[547,548,493],"td",{},[547,550,551],{},"(status indicator, no label)",[547,553,554],{},"A coloured vertical strip on the left edge of the row reflects the broadcast's overall health.",[529,556,557,560,566],{},[547,558,559],{},"2",[547,561,562],{},[563,564,565],"em",{},"Live stream",[547,567,568],{},"The Live stream's name and the encoder\u002Fslot it is running on.",[529,570,571,574,579],{},[547,572,573],{},"3",[547,575,576],{},[563,577,578],{},"Uptime",[547,580,581],{},"Elapsed time since the encoder reported the broadcast as live.",[529,583,584,587,592],{},[547,585,586],{},"4",[547,588,589],{},[563,590,591],{},"Source",[547,593,594],{},"The bound Channel name, with an arrow whose colour reflects the input state.",[529,596,597,600,605],{},[547,598,599],{},"5",[547,601,602],{},[563,603,604],{},"Encoding",[547,606,607],{},"The bound Encoding (or Encoding group) name; one indicator per rendition.",[529,609,610,613,618],{},[547,611,612],{},"6",[547,614,615],{},[563,616,617],{},"Destination",[547,619,620],{},"The bound Destination (or Destination group); per-destination health.",[414,622,623,624,627,628,467],{},"When a destination has both primary and backup paths configured and the encoder reports an upstream problem on a path that is currently enabled, the row's destination tooltip prefixes the upstream message with ",[563,625,626],{},"\"Primary: \""," or ",[563,629,630],{},"\"Backup: \"",[453,632,634],{"id":633},"empty-state","Empty state",[414,636,637],{},"When no Live streams are running and no cloud broadcast is provisioning, the page renders:",[639,640,641],"blockquote",{},[414,642,643,646],{},[425,644,645],{},"No live streams running","\nStart a live stream from the Live streams tab to see it here.",[453,648,650],{"id":649},"row-selection","Row selection",[414,652,653],{},"Click a row to select it. Selecting a row expands its inline runtime panel below the row. Clicking the same row again collapses the panel. Only one row at a time can be expanded.",[453,655,657],{"id":656},"stop-a-live-stream","Stop a Live stream",[414,659,660,661,467],{},"On air only stops running Live streams; the start action lives on the ",[662,663,664],"a",{"href":37},"Live streams list",[414,666,667],{},"The Stop action prompts differently depending on whether the broadcast was started by hand or by the Scheduler.",[414,669,670],{},[425,671,672],{},"Regular Live stream.",[639,674,675],{},[414,676,677],{},"Do you want to stop this Live stream?",[414,679,680],{},"On confirm, the UI tears down the preview pipeline (if it was open) and stops the broadcast.",[414,682,683],{},[425,684,685],{},"Scheduled Live stream.",[639,687,688],{},[414,689,690],{},"Do you want to stop this Scheduled Live stream?\nThe associated Schedule will be deleted.",[414,692,693,694,697,698,467],{},"For a scheduled broadcast, confirming ",[425,695,696],{},"also deletes the active Schedule"," — the broadcast was kept running by the Scheduler, so removing the Schedule stops it as a side effect. The Scheduler entry is gone after this; to bring the same recurrence back, recreate it from the ",[662,699,56],{"href":57},[414,701,702,705,706,709,710,713],{},[425,703,704],{},"Public-API equivalent."," ",[448,707,708],{},"POST \u002Fc21apiv2\u002Flivestreams\u002F{id}\u002Fstop"," (operationId ",[448,711,712],{},"stopLivestream","). The public stop endpoint stops the broadcast but does not touch any Schedule. To stop a scheduled broadcast and remove its Schedule in one move, mirror the UI flow: list Schedules for the Live stream, delete the active one, and the broadcast stops as a side effect.",[453,715,717],{"id":716},"per-row-runtime-panel","Per-row runtime panel",[414,719,720],{},"When a row is selected, an inline panel renders below the row with five tabs. The tabs are in this order — they match the icons rendered on the row's runtime cluster:",[523,722,723,736],{},[526,724,725],{},[529,726,727,730,733],{},[532,728,729],{},"Tab",[532,731,732],{},"Icon",[532,734,735],{},"Backed by",[542,737,738,753,766,781,796],{},[529,739,740,743,748],{},[547,741,742],{},"1. Destinations",[547,744,745],{},[448,746,747],{},"publishing.svg",[547,749,750],{},[448,751,752],{},"runtimeTogglePublishings",[529,754,755,758,763],{},[547,756,757],{},"2. Preview",[547,759,760],{},[448,761,762],{},"monitor-eye.svg",[547,764,765],{},"Operator-only embedded preview (not on the public API)",[529,767,768,771,776],{},[547,769,770],{},"3. Logo",[547,772,773],{},[448,774,775],{},"logo.svg",[547,777,778],{},[448,779,780],{},"runtimeApplyLogo",[529,782,783,786,791],{},[547,784,785],{},"4. Blackout",[547,787,788],{},[448,789,790],{},"blackout.svg",[547,792,793],{},[448,794,795],{},"runtimeApplyBlackout",[529,797,798,801,806],{},[547,799,800],{},"5. Source switch",[547,802,803],{},[448,804,805],{},"export.svg",[547,807,808],{},[448,809,810],{},"runtimeApplySourceSwitch",[414,812,813],{},"Each tab is described in its own subsection below.",[815,816,818],"h3",{"id":817},"destinations-toggle-primary-backup-per-destination","Destinations — toggle primary \u002F backup per destination",[414,820,821],{},"Per-Destination toggle of the primary and backup paths on the running broadcast.",[458,823,824,835,843,863,873],{},[461,825,826,705,829,832,833,467],{},[425,827,828],{},"Endpoint:",[448,830,831],{},"POST \u002Fc21apiv2\u002Flivestreams\u002F{id}\u002FruntimeOptions\u002Fpublishings"," — operationId ",[448,834,752],{},[461,836,837,705,840,467],{},[425,838,839],{},"Body shape:",[448,841,842],{},"{ \"toggles\": [{ \"entry_point_id\": \u003Cid>, \"primary\": \u003Cbool>, \"backup\": \u003Cbool> }, …] }",[461,844,845,848,849,852,853,856,857,859,860,862],{},[425,846,847],{},"Capability split."," A Destination with a configured backup URL (typically RTMP, SRT, FMS, HLS, IPTV and STREAM destinations) has independent ",[448,850,851],{},"primary"," and ",[448,854,855],{},"backup"," flags — both can be on at the same time. A single-channel Destination whose backup URL is empty (Record, SDIOUT, STREAM without backup) uses ",[448,858,851],{}," as the on\u002Foff toggle and accepts ",[448,861,855],{}," only for symmetry.",[461,864,865,868,869,467],{},[425,866,867],{},"Runtime membership."," Destinations added to the bound Destination group while the broadcast is on air appear here automatically — the panel refreshes every few seconds — joined switched off. Turn one on to engage it live, no restart. See ",[662,870,872],{"href":871},"\u002Fen\u002Fconfiguration\u002Fdestinations\u002Fpublishing-groups#editing-a-group-in-use","Editing a group in use",[461,874,875,878,879,881,882,885],{},[425,876,877],{},"Restriction."," Only the on\u002Foff state is mutable while the broadcast is running. To change which renditions a Destination emits or which audio tracks it carries, stop the Live stream with ",[448,880,708],{},", edit it with ",[448,883,884],{},"PUT \u002Fc21apiv2\u002Flivestreams\u002F{id}",", and start it again.",[414,887,888,889,467],{},"See also: ",[662,890,891],{"href":306},"Toggle a Destination mid-broadcast",[815,893,895],{"id":894},"preview-operator-only-embedded-viewer","Preview — operator-only embedded viewer",[414,897,898],{},"The Preview tab opens an embedded viewer inside the runtime panel. The renderer is started by the UI and torn down again when the tab closes or the row is collapsed.",[414,900,901,904],{},[425,902,903],{},"Not part of the public API."," The endpoint that powers the preview is deliberately kept off the public OpenAPI spec — the contract is reserved for the in-product viewer where the UI manages the renderer lifecycle. Integrators that need an external preview of a running broadcast must add a real Destination (HLS, DASH or one of the streaming destinations) on the Live stream and read it from the published URL.",[815,906,908],{"id":907},"logo-apply-or-clear-the-logo-overlay","Logo — apply or clear the logo overlay",[414,910,911],{},"Apply or clear a logo overlay on the running broadcast.",[458,913,914,923,930,964,978],{},[461,915,916,705,918,832,921,467],{},[425,917,828],{},[448,919,920],{},"POST \u002Fc21apiv2\u002Flivestreams\u002F{id}\u002FruntimeOptions\u002Flogo",[448,922,780],{},[461,924,925,705,927,467],{},[425,926,839],{},[448,928,929],{},"{ \"logo\": { \"filename\": \"\u003Casset filename>\", \"position\": \"\u003CLogoPosition>\" } }",[461,931,932,935,936,430,939,430,942,430,945,430,948,430,951,430,954,430,957,430,960,963],{},[425,933,934],{},"Position values."," Canonical enum: ",[448,937,938],{},"Center",[448,940,941],{},"Left",[448,943,944],{},"Right",[448,946,947],{},"Top",[448,949,950],{},"Bottom",[448,952,953],{},"Top-Left",[448,955,956],{},"Top-Right",[448,958,959],{},"Bottom-Left",[448,961,962],{},"Bottom-Right",". The legacy bitmask integer is still accepted on input for compatibility with the Vue UI; responses use the canonical string.",[461,965,966,969,970,973,974,977],{},[425,967,968],{},"Clear the logo."," Send an empty ",[448,971,972],{},"filename"," and keep the previous ",[448,975,976],{},"position",". The position is preserved for a later call to bring the logo back.",[461,979,980,983,984,987,988,991,992,994],{},[425,981,982],{},"Response."," Standard envelope with ",[448,985,986],{},"data: null"," — runtime operations do not echo the applied state. To confirm the logo is what you expect, ",[448,989,990],{},"GET \u002Fc21apiv2\u002Flivestreams\u002F{id}"," and inspect the ",[563,993,436],{}," property of the Live stream.",[414,996,997,998,1000],{},"The Logo tab uses the ",[662,999,154],{"href":155}," catalogue as its filename source.",[414,1002,888,1003,467],{},[662,1004,291],{"href":292},[815,1006,1008],{"id":1007},"blackout-switch-the-program-between-live-black-frame-and-file","Blackout — switch the program between live, black frame and file",[414,1010,1011,1012,1014],{},"Replace the live output with a black frame or a static file, or resume the live input. The blackout can optionally preserve the live audio while only the video is replaced — used for radio-as-video broadcasts where the visual track changes through the day but the audio is always the live input (see ",[662,1013,274],{"href":275},").",[458,1016,1017,1026,1033,1039,1045,1058,1083,1092,1107],{},[461,1018,1019,705,1021,832,1024,467],{},[425,1020,828],{},[448,1022,1023],{},"POST \u002Fc21apiv2\u002Flivestreams\u002F{id}\u002FruntimeOptions\u002Fblackout",[448,1025,795],{},[461,1027,1028,705,1030,467],{},[425,1029,839],{},[448,1031,1032],{},"{ \"mode\": \"Live\" | \"BlackFrame\" | \"File\", \"file\"?: \"\u003Cfilename>\", \"keep_input_audio\"?: \u003Cbool> }",[461,1034,1035,1038],{},[448,1036,1037],{},"Live"," — return to the live input.",[461,1040,1041,1044],{},[448,1042,1043],{},"BlackFrame"," — replace the output with a black frame.",[461,1046,1047,1050,1051,1054,1055,1057],{},[448,1048,1049],{},"File"," — replace the output with the media file referenced by ",[448,1052,1053],{},"file","; ",[448,1056,1053],{}," is required in this mode.",[461,1059,1060,1063,1064,1066,1067,1070,1071,1074,1075,1078,1079,1082],{},[448,1061,1062],{},"keep_input_audio"," — optional flag, applicable in any mode other than ",[448,1065,1037],{},". When ",[448,1068,1069],{},"true",", the slate is generated video-only and the live audio of the input Channel is forwarded untouched. When omitted or ",[448,1072,1073],{},"false",", the slate carries both video and audio (legacy behavior). Idempotency takes this flag into account — switching from ",[448,1076,1077],{},"(BlackFrame, false)"," to ",[448,1080,1081],{},"(BlackFrame, true)"," is a real transition, not a skip.",[461,1084,1085,1086,1089,1090,467],{},"The accepted-but-deprecated alias ",[448,1087,1088],{},"Black Frame"," (with a space) is preserved on write for backwards compatibility. New integrations use ",[448,1091,1043],{},[461,1093,1094,1097,1098,1100,1101,1103,1104,467],{},[425,1095,1096],{},"Error code."," Omitting ",[448,1099,1053],{}," in ",[448,1102,1049],{}," mode, including a path separator or pointing at a file the encoder cannot reach returns ",[448,1105,1106],{},"APIf517",[461,1108,1109,705,1112,1115,1116,1119,1120,1123],{},[425,1110,1111],{},"Response data.",[448,1113,1114],{},"{ mode, file, keep_input_audio, applied_at, changed, warning? }",". ",[448,1117,1118],{},"changed: false"," means the broadcast was already in the requested state (idempotent skip). ",[448,1121,1122],{},"warning"," is present only when the encoder did not acknowledge in time; the new state is persisted and the encoder reconciles on its own.",[414,1125,1126,1129],{},[425,1127,1128],{},"Compatibility."," The UI disables the Blackout tab with a \"not supported\" message when the running broadcast cannot accept a blackout. Reasons surfaced today:",[523,1131,1132,1142],{},[526,1133,1134],{},[529,1135,1136,1139],{},[532,1137,1138],{},"Reason code",[532,1140,1141],{},"What it means",[542,1143,1144,1154,1164,1174],{},[529,1145,1146,1151],{},[547,1147,1148],{},[448,1149,1150],{},"invalid_codec",[547,1152,1153],{},"The bound Encoding's video codec is not H.264 or HEVC. Blackout relay only supports those two codecs.",[529,1155,1156,1161],{},[547,1157,1158],{},[448,1159,1160],{},"hevc_above_1080p",[547,1162,1163],{},"The Encoding is HEVC at a resolution above 1080p. Blackout relay corrupts the stream in that combination.",[529,1165,1166,1171],{},[547,1167,1168],{},[448,1169,1170],{},"hevc_hdr",[547,1172,1173],{},"The Encoding is HEVC with HDR active.",[529,1175,1176,1181],{},[547,1177,1178],{},[448,1179,1180],{},"hevc_hdr_above_1080p",[547,1182,1183],{},"The Encoding is HEVC with HDR and above 1080p.",[414,1185,888,1186,467],{},[662,1187,295],{"href":296},[815,1189,1191],{"id":1190},"source-switch-change-the-input-on-a-running-broadcast","Source switch — change the input on a running broadcast",[414,1193,1194],{},"Change the input Channel of the running broadcast without stopping the Destinations.",[458,1196,1197,1206,1213],{},[461,1198,1199,705,1201,832,1204,467],{},[425,1200,828],{},[448,1202,1203],{},"POST \u002Fc21apiv2\u002Flivestreams\u002F{id}\u002FruntimeOptions\u002FsourceSwitch",[448,1205,810],{},[461,1207,1208,705,1210,467],{},[425,1209,839],{},[448,1211,1212],{},"{ \"channelId\": \u003Cinteger Channel id> }",[461,1214,1215,705,1217,1115,1220,1222,1223,1225],{},[425,1216,1111],{},[448,1218,1219],{},"{ channelId, applied_at, changed, warning? }",[448,1221,1118],{}," means the broadcast was already pointing at this Channel. ",[448,1224,1122],{}," is present only when the encoder did not acknowledge in time; the new Channel is persisted on the running Live stream and the encoder reconciles on its own.",[414,1227,1228,1231,1232,1235],{},[425,1229,1230],{},"Eligibility rules."," The backend enforces every rule with ",[448,1233,1234],{},"HTTP 422",". The UI mirrors them so the tab is disabled when a switch is not possible.",[1237,1238,1239,1250,1286,1296],"ol",{},[461,1240,1241,705,1244,1246,1247,1249],{},[425,1242,1243],{},"The Live stream is running.",[448,1245,489],{}," must be ",[448,1248,493],{}," (Live). A stopped broadcast cannot be source-switched — edit the bound Channel from the Live stream's configuration and start it again.",[461,1251,1252,1255,1256,1259,1260,1263,1264,430,1267,430,1270,430,1273,430,1276,430,1279,852,1282,1285],{},[425,1253,1254],{},"The destination Channel is reachable from the encoder running the broadcast."," A Channel pinned to a different encoder Device fails with ",[448,1257,1258],{},"APIf526",". Virtual ",[448,1261,1262],{},"Channel.type"," values — ",[448,1265,1266],{},"SRT",[448,1268,1269],{},"Stream",[448,1271,1272],{},"RTMP-Push",[448,1274,1275],{},"SRT Cloud",[448,1277,1278],{},"UDP-R Cloud",[448,1280,1281],{},"NDI",[448,1283,1284],{},"Youtube Live"," — have no encoder pin and are reachable from any encoder.",[461,1287,1288,1291,1292,1295],{},[425,1289,1290],{},"The destination Channel has the same Channel type as the current source."," Cross-type swaps (SRT → Youtube Live, Stream → NDI, …) are not supported online and fail with ",[448,1293,1294],{},"APIf527",". To change Channel type, stop the broadcast, edit the bound Channel, and start it again.",[461,1297,1298,1301,1302,1304,1305,430,1307,430,1309,430,1311,430,1313,430,1315,430,1317,1319,1320,430,1323,430,1326,1328,1329,467],{},[425,1299,1300],{},"The current source type is one of the online-switch-supported types."," Supported ",[448,1303,1262],{}," values for the current source: ",[448,1306,1266],{},[448,1308,1269],{},[448,1310,1272],{},[448,1312,1275],{},[448,1314,1278],{},[448,1316,1281],{},[448,1318,1284],{},". Unsupported: ",[448,1321,1322],{},"SDI",[448,1324,1325],{},"AES\u002FEBU",[448,1327,1049],{}," — a switch attempt while one of these is the live source fails with ",[448,1330,1331],{},"APIf528",[414,1333,1334,1335,430,1337,430,1339,1341,1342,1345,1346,1348,1349,1351],{},"The UI groups the three cloud-push variants (",[448,1336,1272],{},[448,1338,1275],{},[448,1340,1278],{},") under the umbrella label ",[425,1343,1344],{},"Stream – C21 Live Cloud"," in the Channel type picker; the eligibility checks above resolve against the underlying enum values. See ",[662,1347,94],{"href":95}," for the full ",[448,1350,1262],{}," enum.",[414,1353,1354,1357,1358,1361,1362,1365,1366,1368],{},[425,1355,1356],{},"Idempotency."," Posting the same ",[448,1359,1360],{},"channelId"," that is already live returns ",[448,1363,1364],{},"200"," with ",[448,1367,1118],{}," and does not generate encoder traffic.",[414,1370,1371,1374],{},[425,1372,1373],{},"No effect on the configured source."," The switch writes only the runtime mirror of the source. A subsequent stop and start reverts to the source configured on the Live stream — to keep the new Channel after a restart, edit the Live stream's bound Channel as well.",[414,1376,888,1377,467],{},[662,1378,300],{"href":301},[453,1380,1382],{"id":1381},"api-surface-every-runtime-endpoint-on-one-page","API surface — every runtime endpoint on one page",[414,1384,1385,1386,1389],{},"Eight POST endpoints sit under ",[448,1387,1388],{},"\u002Fc21apiv2\u002Flivestreams\u002F{livestreamId}\u002F…"," and cover both the config-level options that are persisted on the Live stream and the runtime-only operations that drive a running broadcast. The table below groups them, names the canonical operationId, and flags which ones the UI surfaces — three of them are API-only and have no first-class UI caller today.",[523,1391,1392,1408],{},[526,1393,1394],{},[529,1395,1396,1399,1402,1405],{},[532,1397,1398],{},"Path suffix",[532,1400,1401],{},"operationId",[532,1403,1404],{},"UI Interface",[532,1406,1407],{},"What it does",[542,1409,1410,1462,1479,1506,1529,1546,1565,1594],{},[529,1411,1412,1418,1427,1430],{},[547,1413,1414,1417],{},[448,1415,1416],{},"\u002Foptions"," (PUT or POST)",[547,1419,1420,1423,1424],{},[448,1421,1422],{},"updateLivestreamOptions"," \u002F ",[448,1425,1426],{},"updateLivestreamOptionsPost",[547,1428,1429],{},"Indirect — persisted from configuration flows, not from the On air page",[547,1431,1432,1433,430,1436,852,1439,1442,1443,1446,1447,1450,1451,1454,1455,1458,1459,467],{},"Persists the ",[448,1434,1435],{},"logo",[448,1437,1438],{},"overlay",[448,1440,1441],{},"scte"," union on the Live stream configuration. Supports ",[448,1444,1445],{},"Idempotency-Key",". Cross-field rule: ",[448,1448,1449],{},"scte.cuepoints: true"," requires non-empty ",[448,1452,1453],{},"scte.blackout"," (",[448,1456,1457],{},"APIF519","); an empty body returns ",[448,1460,1461],{},"APIf001",[529,1463,1464,1469,1473,1476],{},[547,1465,1466],{},[448,1467,1468],{},"\u002FruntimeOptions\u002Flogo",[547,1470,1471],{},[448,1472,780],{},[547,1474,1475],{},"Logo tab",[547,1477,1478],{},"Apply or clear the logo overlay on a running broadcast.",[529,1480,1481,1486,1491,1496],{},[547,1482,1483],{},[448,1484,1485],{},"\u002FruntimeOptions\u002Ftext",[547,1487,1488],{},[448,1489,1490],{},"setLivestreamText",[547,1492,1493],{},[425,1494,1495],{},"API-only",[547,1497,1498,1499,1502,1503,467],{},"Apply or update the text\u002Fcrawl overlay on a running broadcast. Supports date-format tokens ",[448,1500,1501],{},"%d %m %Y %H %M %S %C",", font, size, color, absolute x\u002Fy offsets, ",[448,1504,1505],{},"date_offset",[529,1507,1508,1513,1517,1520],{},[547,1509,1510],{},[448,1511,1512],{},"\u002FruntimeOptions\u002Fblackout",[547,1514,1515],{},[448,1516,795],{},[547,1518,1519],{},"Blackout tab",[547,1521,1522,1523,430,1525,627,1527,467],{},"Switch the program between ",[448,1524,1037],{},[448,1526,1043],{},[448,1528,1049],{},[529,1530,1531,1536,1540,1543],{},[547,1532,1533],{},[448,1534,1535],{},"\u002FruntimeOptions\u002FsourceSwitch",[547,1537,1538],{},[448,1539,810],{},[547,1541,1542],{},"Source switch tab",[547,1544,1545],{},"Change the input Channel on a running broadcast.",[529,1547,1548,1553,1558,1562],{},[547,1549,1550],{},[448,1551,1552],{},"\u002FruntimeOptions\u002Fmetadata",[547,1554,1555],{},[448,1556,1557],{},"runtimePushMetadata",[547,1559,1560],{},[425,1561,1495],{},[547,1563,1564],{},"Inject metadata, SCTE-35 cues, ID3 tags into a running broadcast. See subsection below.",[529,1566,1567,1572,1577,1581],{},[547,1568,1569],{},[448,1570,1571],{},"\u002FruntimeOptions\u002Fad-values",[547,1573,1574],{},[448,1575,1576],{},"runtimeSetAdValues",[547,1578,1579],{},[425,1580,1495],{},[547,1582,1583,1584,430,1587,430,1590,1593],{},"Configure runtime ad-pod durations: ",[448,1585,1586],{},"default_ad_duration",[448,1588,1589],{},"max_ad_duration",[448,1591,1592],{},"next_ad_duration"," (all in seconds, all optional — omitted fields keep their previous value).",[529,1595,1596,1601,1605,1608],{},[547,1597,1598],{},[448,1599,1600],{},"\u002FruntimeOptions\u002Fpublishings",[547,1602,1603],{},[448,1604,752],{},[547,1606,1607],{},"Destinations tab",[547,1609,1610],{},"Toggle per-Destination primary \u002F backup state on the running broadcast.",[414,1612,1613,1614,1618,1619,430,1621,852,1623,1625,1626,467],{},"For the full API reference of each endpoint see ",[662,1615,1617],{"href":1616},"\u002Fen\u002Fdevelopers\u002Fapi\u002Freference-streams","API → Live streams reference",". For per-stream configuration of ",[448,1620,1435],{},[448,1622,1438],{},[448,1624,1441],{}," at definition time, see ",[662,1627,1628],{"href":47},"Live stream options",[815,1630,1632],{"id":1631},"authentication-and-roles","Authentication and roles",[414,1634,1635],{},"Every runtime endpoint requires an authenticated session. The header is the standard bearer:",[1637,1638,1644],"pre",{"className":1639,"code":1641,"language":1642,"meta":1643},[1640],"language-text","Authorization: Bearer \u003CYOUR_API_TOKEN>\n","text","",[448,1645,1641],{"__ignoreMap":1643},[414,1647,1648,1649,852,1652,1655,1656,467],{},"The two product roles that can mutate Live streams are ",[425,1650,1651],{},"System Administrator",[425,1653,1654],{},"Operator"," — both can call every runtime endpoint listed above. There are no per-endpoint scopes beyond the role gate. For the role model and how to mint tokens, see ",[662,1657,360],{"href":361},[815,1659,1661],{"id":1660},"response-semantics-shared","Response semantics (shared)",[414,1663,1664,1665,852,1667,1669],{},"Two of the endpoints — ",[448,1666,795],{},[448,1668,810],{}," — return a response envelope that carries two fields integrators should know about:",[458,1671,1672,1683],{},[461,1673,1674,1679,1680,1682],{},[425,1675,1676],{},[448,1677,1678],{},"changed"," — ",[448,1681,1073],{}," when the requested state already matched the persisted state. The call is an idempotent skip and no encoder traffic is generated.",[461,1684,1685,1689],{},[425,1686,1687],{},[448,1688,1122],{}," — present only when the encoder did not acknowledge in time. The new state is persisted on the Live stream and the encoder reconciles on its own; treat the response as a soft success.",[414,1691,1692,1693,1695,1696,1698],{},"The other runtime endpoints return the standard envelope with ",[448,1694,986],{}," (or, for ",[448,1697,752],{},", a small confirmation block listing the updated entry points).",[815,1700,1702,1703],{"id":1701},"metadata-push-runtimepushmetadata","Metadata push — ",[448,1704,1557],{},[414,1706,1707,1708,1711],{},"Inject a single metadata event into a running broadcast. The handler forwards the payload to the encoder's metadata pipeline and returns the standard envelope with ",[448,1709,1710],{},"data: []"," — the call is fire-and-forget and the injected payload is not echoed back.",[458,1713,1714,1721],{},[461,1715,1716,705,1718,467],{},[425,1717,828],{},[448,1719,1720],{},"POST \u002Fc21apiv2\u002Flivestreams\u002F{id}\u002FruntimeOptions\u002Fmetadata",[461,1722,1723],{},[425,1724,839],{},[1637,1726,1730],{"className":1727,"code":1728,"language":1729,"meta":1643,"style":1643},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"type\": \"\u003Cone of the eight type values>\",\n  \"metadata\": { \"name\": \"\u003Cstring>\", \"value\": \"\u003Cstring>\" }\n}\n","json",[448,1731,1732,1741,1769,1821],{"__ignoreMap":1643},[1733,1734,1737],"span",{"class":1735,"line":1736},"line",1,[1733,1738,1740],{"class":1739},"sMK4o","{\n",[1733,1742,1744,1747,1751,1754,1757,1760,1764,1766],{"class":1735,"line":1743},2,[1733,1745,1746],{"class":1739},"  \"",[1733,1748,1750],{"class":1749},"spNyl","type",[1733,1752,1753],{"class":1739},"\"",[1733,1755,1756],{"class":1739},":",[1733,1758,1759],{"class":1739}," \"",[1733,1761,1763],{"class":1762},"sfazB","\u003Cone of the eight type values>",[1733,1765,1753],{"class":1739},[1733,1767,1768],{"class":1739},",\n",[1733,1770,1772,1774,1777,1779,1781,1784,1786,1789,1791,1793,1795,1798,1800,1803,1805,1808,1810,1812,1814,1816,1818],{"class":1735,"line":1771},3,[1733,1773,1746],{"class":1739},[1733,1775,1776],{"class":1749},"metadata",[1733,1778,1753],{"class":1739},[1733,1780,1756],{"class":1739},[1733,1782,1783],{"class":1739}," {",[1733,1785,1759],{"class":1739},[1733,1787,513],{"class":1788},"sBMFI",[1733,1790,1753],{"class":1739},[1733,1792,1756],{"class":1739},[1733,1794,1759],{"class":1739},[1733,1796,1797],{"class":1762},"\u003Cstring>",[1733,1799,1753],{"class":1739},[1733,1801,1802],{"class":1739},",",[1733,1804,1759],{"class":1739},[1733,1806,1807],{"class":1788},"value",[1733,1809,1753],{"class":1739},[1733,1811,1756],{"class":1739},[1733,1813,1759],{"class":1739},[1733,1815,1797],{"class":1762},[1733,1817,1753],{"class":1739},[1733,1819,1820],{"class":1739}," }\n",[1733,1822,1824],{"class":1735,"line":1823},4,[1733,1825,1826],{"class":1739},"}\n",[458,1828,1829],{},[461,1830,1831,1836],{},[425,1832,1833,1835],{},[448,1834,1750],{}," values"," (exactly eight, case-sensitive):",[523,1838,1839,1849],{},[526,1840,1841],{},[529,1842,1843,1846],{},[532,1844,1845],{},"Value",[532,1847,1848],{},"Used for",[542,1850,1851,1864,1876,1890,1900,1913,1925,1944],{},[529,1852,1853,1858],{},[547,1854,1855],{},[448,1856,1857],{},"Metadata",[547,1859,1860,1861,1863],{},"Generic name\u002Fvalue metadata. ",[448,1862,1776],{}," carries the payload.",[529,1865,1866,1871],{},[547,1867,1868],{},[448,1869,1870],{},"CuePoint",[547,1872,1873,1874,1863],{},"Generic cue point. ",[448,1875,1776],{},[529,1877,1878,1883],{},[547,1879,1880],{},[448,1881,1882],{},"DateRange",[547,1884,1885,1886,1889],{},"Date-range marker (HLS ",[448,1887,1888],{},"EXT-X-DATERANGE"," family).",[529,1891,1892,1897],{},[547,1893,1894],{},[448,1895,1896],{},"ID3Tag",[547,1898,1899],{},"ID3 tag emitted in-band on HLS.",[529,1901,1902,1907],{},[547,1903,1904],{},[448,1905,1906],{},"CueIn",[547,1908,1909,1910,1912],{},"Generic cue-in boundary. ",[448,1911,1776],{}," is optional.",[529,1914,1915,1920],{},[547,1916,1917],{},[448,1918,1919],{},"CueOut",[547,1921,1922,1923,1912],{},"Generic cue-out boundary. ",[448,1924,1776],{},[529,1926,1927,1932],{},[547,1928,1929],{},[448,1930,1931],{},"ScteIn",[547,1933,1934,1935,1937,1938,1940,1941,1014],{},"SCTE-35 splice in. ",[448,1936,1776],{}," is optional. The server normalises the value (e.g. ",[448,1939,1931],{}," → ",[448,1942,1943],{},"scte-in",[529,1945,1946,1951],{},[547,1947,1948],{},[448,1949,1950],{},"ScteOut",[547,1952,1953,1954,1956,1957,467],{},"SCTE-35 splice out. ",[448,1955,1776],{}," is optional. Same server-side normalisation as ",[448,1958,1931],{},[458,1960,1961],{},[461,1962,1963,1968,1969,1972,1973,430,1975,430,1977,852,1979,1981,1982,430,1984,430,1986,430,1988,1014],{},[425,1964,1965,1967],{},[448,1966,1776],{}," object."," Serialised as ",[448,1970,1971],{},"name=value"," in the encoder command. Required for ",[448,1974,1857],{},[448,1976,1870],{},[448,1978,1882],{},[448,1980,1896],{},"; optional for the four cue boundaries (",[448,1983,1906],{},[448,1985,1919],{},[448,1987,1931],{},[448,1989,1950],{},[414,1991,1992],{},[425,1993,1994],{},"Examples.",[414,1996,1997],{},"Player-side ad cue via generic metadata:",[1637,1999,2003],{"className":2000,"code":2001,"language":2002,"meta":1643,"style":1643},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST \"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Flivestreams\u002F\u003ClivestreamId>\u002FruntimeOptions\u002Fmetadata\" \\\n  -H \"Authorization: Bearer \u003CYOUR_API_TOKEN>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"type\": \"Metadata\",\n    \"metadata\": { \"name\": \"adbreak\", \"value\": \"preroll-30s\" }\n  }'\n","bash",[448,2004,2005,2027,2041,2054,2064,2070,2076],{"__ignoreMap":1643},[1733,2006,2007,2010,2013,2016,2018,2021,2023],{"class":1735,"line":1736},[1733,2008,2009],{"class":1788},"curl",[1733,2011,2012],{"class":1762}," -X",[1733,2014,2015],{"class":1762}," POST",[1733,2017,1759],{"class":1739},[1733,2019,2020],{"class":1762},"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Flivestreams\u002F\u003ClivestreamId>\u002FruntimeOptions\u002Fmetadata",[1733,2022,1753],{"class":1739},[1733,2024,2026],{"class":2025},"sTEyZ"," \\\n",[1733,2028,2029,2032,2034,2037,2039],{"class":1735,"line":1743},[1733,2030,2031],{"class":1762},"  -H",[1733,2033,1759],{"class":1739},[1733,2035,2036],{"class":1762},"Authorization: Bearer \u003CYOUR_API_TOKEN>",[1733,2038,1753],{"class":1739},[1733,2040,2026],{"class":2025},[1733,2042,2043,2045,2047,2050,2052],{"class":1735,"line":1771},[1733,2044,2031],{"class":1762},[1733,2046,1759],{"class":1739},[1733,2048,2049],{"class":1762},"Content-Type: application\u002Fjson",[1733,2051,1753],{"class":1739},[1733,2053,2026],{"class":2025},[1733,2055,2056,2059,2062],{"class":1735,"line":1823},[1733,2057,2058],{"class":1762},"  -d",[1733,2060,2061],{"class":1739}," '",[1733,2063,1740],{"class":1762},[1733,2065,2067],{"class":1735,"line":2066},5,[1733,2068,2069],{"class":1762},"    \"type\": \"Metadata\",\n",[1733,2071,2073],{"class":1735,"line":2072},6,[1733,2074,2075],{"class":1762},"    \"metadata\": { \"name\": \"adbreak\", \"value\": \"preroll-30s\" }\n",[1733,2077,2079,2082],{"class":1735,"line":2078},7,[1733,2080,2081],{"class":1762},"  }",[1733,2083,2084],{"class":1739},"'\n",[414,2086,2087],{},"SCTE-35 splice pair around an ad break:",[1637,2089,2091],{"className":2000,"code":2090,"language":2002,"meta":1643,"style":1643},"# enter ad break\ncurl -X POST \"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Flivestreams\u002F\u003ClivestreamId>\u002FruntimeOptions\u002Fmetadata\" \\\n  -H \"Authorization: Bearer \u003CYOUR_API_TOKEN>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"type\": \"ScteOut\" }'\n\n# leave ad break\ncurl -X POST \"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Flivestreams\u002F\u003ClivestreamId>\u002FruntimeOptions\u002Fmetadata\" \\\n  -H \"Authorization: Bearer \u003CYOUR_API_TOKEN>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"type\": \"ScteIn\" }'\n",[448,2092,2093,2099,2115,2127,2139,2150,2156,2161,2178,2191,2204],{"__ignoreMap":1643},[1733,2094,2095],{"class":1735,"line":1736},[1733,2096,2098],{"class":2097},"sHwdD","# enter ad break\n",[1733,2100,2101,2103,2105,2107,2109,2111,2113],{"class":1735,"line":1743},[1733,2102,2009],{"class":1788},[1733,2104,2012],{"class":1762},[1733,2106,2015],{"class":1762},[1733,2108,1759],{"class":1739},[1733,2110,2020],{"class":1762},[1733,2112,1753],{"class":1739},[1733,2114,2026],{"class":2025},[1733,2116,2117,2119,2121,2123,2125],{"class":1735,"line":1771},[1733,2118,2031],{"class":1762},[1733,2120,1759],{"class":1739},[1733,2122,2036],{"class":1762},[1733,2124,1753],{"class":1739},[1733,2126,2026],{"class":2025},[1733,2128,2129,2131,2133,2135,2137],{"class":1735,"line":1823},[1733,2130,2031],{"class":1762},[1733,2132,1759],{"class":1739},[1733,2134,2049],{"class":1762},[1733,2136,1753],{"class":1739},[1733,2138,2026],{"class":2025},[1733,2140,2141,2143,2145,2148],{"class":1735,"line":2066},[1733,2142,2058],{"class":1762},[1733,2144,2061],{"class":1739},[1733,2146,2147],{"class":1762},"{ \"type\": \"ScteOut\" }",[1733,2149,2084],{"class":1739},[1733,2151,2152],{"class":1735,"line":2072},[1733,2153,2155],{"emptyLinePlaceholder":2154},true,"\n",[1733,2157,2158],{"class":1735,"line":2078},[1733,2159,2160],{"class":2097},"# leave ad break\n",[1733,2162,2164,2166,2168,2170,2172,2174,2176],{"class":1735,"line":2163},8,[1733,2165,2009],{"class":1788},[1733,2167,2012],{"class":1762},[1733,2169,2015],{"class":1762},[1733,2171,1759],{"class":1739},[1733,2173,2020],{"class":1762},[1733,2175,1753],{"class":1739},[1733,2177,2026],{"class":2025},[1733,2179,2181,2183,2185,2187,2189],{"class":1735,"line":2180},9,[1733,2182,2031],{"class":1762},[1733,2184,1759],{"class":1739},[1733,2186,2036],{"class":1762},[1733,2188,1753],{"class":1739},[1733,2190,2026],{"class":2025},[1733,2192,2194,2196,2198,2200,2202],{"class":1735,"line":2193},10,[1733,2195,2031],{"class":1762},[1733,2197,1759],{"class":1739},[1733,2199,2049],{"class":1762},[1733,2201,1753],{"class":1739},[1733,2203,2026],{"class":2025},[1733,2205,2207,2209,2211,2214],{"class":1735,"line":2206},11,[1733,2208,2058],{"class":1762},[1733,2210,2061],{"class":1739},[1733,2212,2213],{"class":1762},"{ \"type\": \"ScteIn\" }",[1733,2215,2084],{"class":1739},[414,2217,2218],{},"HLS ID3 tag emission:",[1637,2220,2222],{"className":2000,"code":2221,"language":2002,"meta":1643,"style":1643},"curl -X POST \"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Flivestreams\u002F\u003ClivestreamId>\u002FruntimeOptions\u002Fmetadata\" \\\n  -H \"Authorization: Bearer \u003CYOUR_API_TOKEN>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"type\": \"ID3Tag\",\n    \"metadata\": { \"name\": \"TXXX:show\", \"value\": \"evening-news\" }\n  }'\n",[448,2223,2224,2240,2252,2264,2272,2277,2282],{"__ignoreMap":1643},[1733,2225,2226,2228,2230,2232,2234,2236,2238],{"class":1735,"line":1736},[1733,2227,2009],{"class":1788},[1733,2229,2012],{"class":1762},[1733,2231,2015],{"class":1762},[1733,2233,1759],{"class":1739},[1733,2235,2020],{"class":1762},[1733,2237,1753],{"class":1739},[1733,2239,2026],{"class":2025},[1733,2241,2242,2244,2246,2248,2250],{"class":1735,"line":1743},[1733,2243,2031],{"class":1762},[1733,2245,1759],{"class":1739},[1733,2247,2036],{"class":1762},[1733,2249,1753],{"class":1739},[1733,2251,2026],{"class":2025},[1733,2253,2254,2256,2258,2260,2262],{"class":1735,"line":1771},[1733,2255,2031],{"class":1762},[1733,2257,1759],{"class":1739},[1733,2259,2049],{"class":1762},[1733,2261,1753],{"class":1739},[1733,2263,2026],{"class":2025},[1733,2265,2266,2268,2270],{"class":1735,"line":1823},[1733,2267,2058],{"class":1762},[1733,2269,2061],{"class":1739},[1733,2271,1740],{"class":1762},[1733,2273,2274],{"class":1735,"line":2066},[1733,2275,2276],{"class":1762},"    \"type\": \"ID3Tag\",\n",[1733,2278,2279],{"class":1735,"line":2072},[1733,2280,2281],{"class":1762},"    \"metadata\": { \"name\": \"TXXX:show\", \"value\": \"evening-news\" }\n",[1733,2283,2284,2286],{"class":1735,"line":2078},[1733,2285,2081],{"class":1762},[1733,2287,2084],{"class":1739},[414,2289,2290],{},"The injection happens on the next encoder tick; the marker lands on the output stream within a few seconds.",[453,2292,2294],{"id":2293},"faq","FAQ",[2296,2297,2299],"collapsible",{"name":2298},"How often does the list update, and can I make it refresh faster?","The page polls every 5 seconds. The cadence is fixed — there is no per-user setting and no manual refresh button.",[2296,2301,2303,2304,490,2306,2308],{"name":2302},"Why is the runtime panel missing on some rows?","The runtime panel is rendered for rows whose ",[448,2305,489],{},[448,2307,493],{}," (Live). A row in any other state shows only the row, with no inline panel.",[2296,2310,2312],{"name":2311},"Can I edit a Live stream while it is running?","No. The Live stream editor is locked while the broadcast is running. Stop the Live stream first; the editor unlocks and the change applies on the next start.",[2296,2314,2316,2317,430,2319,627,2321,2323],{"name":2315},"Why is the Blackout tab disabled on my UHD HEVC broadcast?","Blackout relay corrupts HEVC streams above 1080p or with HDR active. The UI surfaces the reason as ",[448,2318,1160],{},[448,2320,1170],{},[448,2322,1180],{}," and disables the tab. To use Blackout, downscale the Encoding to 1080p or switch the codec to H.264.",[2296,2325,2327],{"name":2326},"Why does Source switch fail with APIf527 when both Channels look right?","The destination Channel must have the same Channel type as the current source — online switching cannot change the input type at runtime. To cross types (for example SRT → Youtube Live), stop the Live stream, edit the bound Channel, and start the broadcast again.",[2296,2329,2331,2332,467],{"name":2330},"Stopping a scheduled broadcast deleted my Schedule. Is that expected?","Yes. A scheduled broadcast is kept running by the Scheduler; stopping it from On air deletes the active Schedule. To bring the same recurrence back, recreate it from the ",[662,2333,56],{"href":57},[2335,2336,2337],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":1643,"searchDepth":1743,"depth":1743,"links":2339},[2340,2341,2342,2343,2344,2345,2346,2347,2354,2360],{"id":455,"depth":1743,"text":456},{"id":473,"depth":1743,"text":474},{"id":506,"depth":1743,"text":507},{"id":517,"depth":1743,"text":518},{"id":633,"depth":1743,"text":634},{"id":649,"depth":1743,"text":650},{"id":656,"depth":1743,"text":657},{"id":716,"depth":1743,"text":717,"children":2348},[2349,2350,2351,2352,2353],{"id":817,"depth":1771,"text":818},{"id":894,"depth":1771,"text":895},{"id":907,"depth":1771,"text":908},{"id":1007,"depth":1771,"text":1008},{"id":1190,"depth":1771,"text":1191},{"id":1381,"depth":1743,"text":1382,"children":2355},[2356,2357,2358],{"id":1631,"depth":1771,"text":1632},{"id":1660,"depth":1771,"text":1661},{"id":1701,"depth":1771,"text":2359},"Metadata push — runtimePushMetadata",{"id":2293,"depth":1743,"text":2294},"The list of running Live streams, the per-row runtime panel that drives them, and the API surface that automates the same operations.","md",null,{},{"icon":34},{"title":31,"description":2361},"g-twO7mtHt8eC50UHb9kp8sUISZthjvZ33Lou2CpEqw",[2369,2371],{"title":20,"path":21,"stem":22,"description":2370,"icon":23,"children":-1},"Domain glossary for the objects you will work with every day.",{"title":41,"path":42,"stem":43,"description":2372,"icon":44,"children":-1},"Configure, schedule, start and monitor every Live stream from a single list.",1782916481266]