Every change Wellknown observed on this agent, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://auth.streamloop.app
Changed the definition of "scene_get", "scene_probe", "scene_remove" and 1 more
⟨174 unchanged words⟩ :"string"},"limit":{"description":"RowsReadingperapagetable's rows (…/rowssource/data/<id>/rows):defaulthow20,manyattomostreturn;20020 when omitted","maximum":200,"minimum":1,"type":"integer"},"offset":{"description":"FirstReadingrowa table's rows (…/rowssource/data/<id>/rows): the 0-based index of the first one; 0 when omitted","maximum":9007199254740991,"minimum":0,"type":"integer"},"overlay":{"description":"Picture: a guide drawn over it to check placement — grid:=lines every 10 %gridlabelledwithindesign-pixeldesignlabels;pixels; ids=: each layer's outline andidid. Omitted: none","enum":["none","grid"," ⟨87 unchanged words⟩
⟨7 unchanged words⟩ ":{"additionalProperties":{},"description":"mcp, with tool: thetool'sarguments to call that tool with, shaped as its input schemasays(a probe without tool lists each tool's schema). Omitted: none","properties":{},"type":"object" ⟨128 unchanged words⟩ ","type":"string"},"url":{"description":"The http(s) address to read: a JSON API, a CSV or spreadsheet file, a Google Sheet, a web page, or with connector mcp an MCP server's endpoint","type":"string"}},"required":[" ⟨4 unchanged words⟩
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"paths":{"description":"The resources to delete, by path as get answers them: frame/intro, frame/intro/title (one layer), source/data/headlines, component/LowerThird","items":{"type":"string"},"minItems" ⟨71 unchanged words⟩
⟨30 unchanged words⟩ ,"type":"string"},"new":{"description":"The text that takes old's place; empty deletes it","type":"string"},"old":{"description" ⟨192 unchanged words⟩
Authorization not required, issuer https://auth.streamloop.app
Changed the definition of "add_stream_destination", "apply_playlist_operations", "assign_playlist_order" and 47 more
⟨50 unchanged words⟩ stream's quality or codec cannot reach (DESTINATION_INCOMPATIBLE). Returns the stream's whole destination list after the change, as list_stream_destinations does.
⟨7 unchanged words⟩ "description":"Destination id (dest_...), fromlist_destinations.list_destinations or list_stream_destinations.","type":"string"},"streamId":{"description":"Stream id (stream_...)., from list_streams.","type":"string"}},"required": ⟨4 unchanged words⟩
Changed the definition of "scene_probe"
⟨35 unchanged words⟩ get from it with connector, pick andheaders.headers — or, with connector mcp, an MCP server's tools, or one tool's rows with tool and args. Use it before creating a URL or MCP table, and to find the pick path ⟨9 unchanged words⟩
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"args":{"additionalProperties":{},"description":"mcp: the tool's arguments, as its input schema says","properties":{},"type":"object"},"connector":{"description":"How to read it as rows (default: from the content type); mcp: the URL is an MCP server","enum":["json","csv","xlsx","sheets","html","mcp"],"type":"string"},"headers":{
Changed the definition of "create_upload"
⟨85 unchanged words⟩ whole file in one request (up to1.55GBGB; a bigger file,5up to 15 GB,onmustacomepaidinplanthrough import_upload_from_url). If the client cannot make requests, ⟨45 unchanged words⟩
Certificate recorded, valid to 2026-12-27
Authorization not required, issuer https://auth.streamloop.app
Changed the definition of "complete_upload", "create_rtmp_destination", "create_upload" and 13 more
before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"markUploadComplete":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"}},"required":["markUploadComplete"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}—
Unknown → Live
First tool surface recorded: 67 tools (server version 0.1.0)
https://mcp.streamloop.app/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 12 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨7 unchanged words⟩ ":{"addStreamDestination":{"additionalProperties":{},"description":"The stream's destination list after the call.","properties":{"destinations":{"items":{"additionalProperties":{},"properties":{"destination":{"additionalProperties":{},"properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"}},"required":["id","name","kind","status"],"type":"object"},"destinationID":{"type":"string"},"disabledReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why it is disabled, when it is."},"enabled":{"type":"boolean"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Delivery state while the stream runs: connecting, live, reconnecting, failed."},"stateReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why it is in that state, e.g. a failure reason."},"stateSince":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["destinationID","enabled"],"type":"object"},"type":"array"},"id":{"description":"The stream's id.","type":"string"}},"required":[" ⟨65 unchanged words⟩
⟨6 unchanged words⟩ "basedOnVersion":{"description":"The playlist `version` from get_playlist this edit was computedagainst. Rejectedagainst:witha CONFLICTifrefusaltheifplaylistit has changed since. Omitted: the edit applies to the playlist as it is now.","maximum":9007199254740991,"minimum":-9007199254740991,"type ⟨41 unchanged words⟩ ,"properties":{"index":{"description":"With position INDEX: the 0-basedinsertpositionindex;theonlyfirstusedaddedwhenitemposition=INDEX.takes.","maximum":9007199254740991,"minimum":-9007199254740991,"type ⟨18 unchanged words⟩ array"},"position":{"description":"Wheretoinplacethe playlist the items go:STARTthe start,ENDthe end, orINDEXthe(thenposition`index`givenisinrequired).`index`.","enum":["START","END"," ⟨63 unchanged words⟩ {"properties":{"index":{"description":"0-basedWithtargetpositionindex;INDEX:onlytheused0-basedwhenpositionposition=INDEX.the item moves to.","maximum":9007199254740991,"minimum":-9007199254740991,"type ⟨10 unchanged words⟩ string"},"position":{"description":"Wheretoinplacethe playlist the items go:STARTthe start,ENDthe end, orINDEXthe(thenposition`index`givenisinrequired).`index`.","enum":["START","END"," ⟨19 unchanged words⟩ ,"properties":{"mode":{"description":"Play order: sequential playsintheorder;items as arranged, shuffle randomises each loop. Omitted: the mode is unchanged.","enum":["sequential","shuffle"], ⟨9 unchanged words⟩ {"description":"Playlist id (pl_...) toedit.edit, from list_playlists (for a stream, pass its streamId there).","type":"string"}},"required": ⟨4 unchanged words⟩
⟨91 unchanged words⟩ run over the playlist at all is refused. Returns dependencyWarnings, the playlist (id, version, compatibility status), the order and the version now pinned.
⟨56 unchanged words⟩ :"string"},"versionId":{"description":"PinAanversionearlieridversionof this order to pin instead,offrom get_playlist_order. Omitted: the order's newest usableone.version (latestReadyVersionID).","type":"string"}},"required": ⟨4 unchanged words⟩
⟨142 unchanged words⟩ start_stream and before relying on a schedule_stream window. Returns streamReadiness: ready, and issues[] each with code, error, suggestion, path and stage.
⟨9 unchanged words⟩ ":{},"properties":{"issues":{"description":"Every blocking issue; empty when ready.","items":{"additionalProperties":{},"properties":{"code":{"type":"string"},"error":{"description":"What blocks the start.","type":"string"},"path":{"description":"Which check raised it: VALIDATION (the configuration) or YOUTUBE.","type":"string"},"stage":{"type":"string"},"suggestion":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"How to fix it."}},"required":["code","error","suggestion","path","stage"],"type":"object"},"type":"array"},"ready":{"description":"true: correctly configured to start.","type":"boolean"}},"required":[" ⟨65 unchanged words⟩
⟨141 unchanged words⟩ skip, a button) blind: read get_scene_state first. Needs a stream playing the published scene (set_stream_scene, start_stream); it changes what is on air, never the draft. Answers streamId, online, frame (on air after the action) and next.
⟨37 unchanged words⟩ ":{"description":"setControl: the control's id,(asthein<id>control/<id>)of control/<id>; scene_get control/* lists them","type":"string"},"op":{"description":"WhatThe action: take a frame todoair, cue the next frame, set a control, replace a table's rows, or skip a playlist source to its next item","enum":["goFrame","next"," ⟨5 unchanged words⟩ ,"rows":{"description":"setData: thetable'snew rows, each an object of column → value; they replace every row the table has now","items":{"additionalProperties":{},"propertyNames ⟨39 unchanged words⟩ :"string"},"streamId":{"description":"WhichThe stream (stream_…) to act on, from get_scene_state; needed only when more than one stream playsitthe scene","minLength":1,"type":"string"} ⟨16 unchanged words⟩ ":{"anyOf":[{"anyOf":[{"description":"The transition style; cut is instant","enum":["cut","fade","slide", ⟨4 unchanged words⟩ "additionalProperties":false,"properties":{"kind":{"description":"The transition style; cut is instant","enum":["cut","fade","slide" ⟨79 unchanged words⟩
⟨25 unchanged words⟩ Fill it with apply_playlist_operations. Each call creates another. Returns the new playlist: id (pl_...), name, sceneId, kind, mode, version, createdAt.
⟨5 unchanged words⟩ ,"properties":{"kind":{"description":"WhatThe media itplays.holds: video items for a picture source, audio items for a sound source.","enum":["video","audio"],"type":"string"},"name":{"description":"WhatA name to tell itisapartcalled.in list_playlists, e.g. 'Lower-third clips'.","minLength":1,"type":"string"} ⟨18 unchanged words⟩
⟨84 unchanged words⟩ was produced; PENDING = still running, poll get_playlist_order. The answer, under createOrderSequencer, also has sequencer (the order: id oseq_..., name, latestReadyVersionID) and version (the version written, or null).
⟨5 unchanged words⟩ ,"properties":{"description":{"description":"LongerA noteforabout theuser'sorderownshownreference.to the user beside its name; it does not change how the order plays.","type":"string"},"intent":{ ⟨77 unchanged words⟩
⟨9 unchanged words⟩ ":{},"properties":{"diagnostics":{"description":"Each problem: stage, code, message, line.","items":{},"type":"array"},"sequencer":{"additionalProperties":{},"description":"The order (oseq_...).","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"},"status":{"description":"READY: usable; INVALID: failed validation; MESSAGE: a question or refusal, nothing produced; PENDING: still running.","type":"string"},"version":{"anyOf":[{"additionalProperties":{},"properties":{"id":{"type":"string"},"version":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id","version"],"type":"object"},{"type":"null"}],"description":"The version written, or null when nothing was produced."}},"required":["status","diagnostics","sequencer","version"],"type":"object"}},"required" ⟨60 unchanged words⟩
⟨22 unchanged words⟩ ), then publish_scene. Each call creates another scene. Answers the scene: id (scn_…), name, version 0, and its timestamps.
⟨5 unchanged words⟩ ,"properties":{"name":{"description":"WhatA name to tell the sceneisapartcalledin list_scenes and the dashboard","maxLength":120,"minLength":1,"type ⟨5 unchanged words⟩
⟨69 unchanged words⟩ own id (ingkey_…) is what revoke_scene_ingest_key takes. Answers id, sourceId, key, keyPrefix, status, live, rtmpUrl and rtmpsUrl.
⟨18 unchanged words⟩ string"},"sourceId":{"description":"Thesource'sid(asof an rtmp or srt source in the scene's draft: the <id> of source/rtmp/<id> or source/srt/<id> (scene_get source/* lists them)","minLength":1,"type":"string" ⟨5 unchanged words⟩
⟨121 unchanged words⟩ until then. When it runs is schedule_stream's job. Returns the new stream under createStream: id (stream_...), name, state, quality, framerate, createdAt.
⟨5 unchanged words⟩ ,"properties":{"framerate":{"description":"OutputFramesframerate.per second the stream is sent at.","enum":["f_24","f_25"," ⟨12 unchanged words⟩ string"},"quality":{"description":"Outputqualityresolution(default:sent to every destination; theaccountaccount'spreference).preferred quality when omitted.","enum":["q_720p","q_1080p"," ⟨63 unchanged words⟩
⟨150 unchanged words⟩ of this and use discover_external_media + import_upload_from_url instead. Returns object (the media record: id obj_..., name, type, mimeType, fileSize, uploaded false, createdAt), uploadUrl and next (the next step).
⟨5 unchanged words⟩ ,"properties":{"duration":{"description":"DurationLength of a video or audio file, insecondsseconds.(video/audio).Omitted: measured from the file once it is processed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"fileSize":{"description":"FileSizesizeof the file inbytesbytes;(recommended).give it when known.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"height":{"description":"PixelHeightheightof(video/image).a video or image, in pixels.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"mimeType":{"description":"The file's MIME type, e.g.video/mp4.video/mp4 or audio/mpeg. The PUT to uploadUrl must send this exact value as its Content-Type header.","type":"string"},"name":{ ⟨6 unchanged words⟩ :"string"},"type":{"description":"MediaThe kind:audio,ofvideomediaortheimage.file holds.","enum":["audio","video","image"],"type":"string"},"width":{"description":"PixelWidthwidthof(video/image).a video or image, in pixels.","exclusiveMinimum":0,"maximum":9007199254740991,"type ⟨7 unchanged words⟩
⟨6 unchanged words⟩ ":{},"properties":{"next":{"description":"What to do next.","type":"string"},"object":{"additionalProperties":{},"description":"The reserved media record; its id (obj_...) is what complete_upload takes.","properties":{"id":{"description":"The ⟨11 unchanged words⟩ :"string"},{"type":"null"}],"description":"Presigned PUT url for the file's bytes."}},"required":["object","uploadUrl", ⟨60 unchanged words⟩
Deletes a saved secret for good: its value cannot be read back, and a table that names it ("$secret:<name>") stops getting it. Only set_scene_secret with the key again restores it. Answers deleted (the name).
⟨28 unchanged words⟩ ,"type":"boolean"},"name":{"description":"The secret's name, as list_scene_inputs lists it","minLength":1,"type":"string"},"scene ⟨17 unchanged words⟩
⟨25 unchanged words⟩ :"string"},"dryRun":{"description":"Onlytrue: only say what would belostlost. Omitted or false: the draft is discarded","type":"boolean"},"scene":{ ⟨17 unchanged words⟩
⟨100 unchanged words⟩ only the user's own or otherwise licensed content. Returns externalLinkContents: provider, and items[] each with id (assetId), name, mime, size, durationSeconds and qualities[] (id = qualityId, label, width, height, fps, estimatedSize).
⟨9 unchanged words⟩ ":{},"properties":{"items":{"description":"Each importable asset.","items":{"additionalProperties":{},"propertyNamesproperties":{"durationSeconds":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"description":"assetId for import_upload_from_url.","type":"string"},"name":{"type":"string"},"qualities":{"description":"The versions on offer, with resolution, fps and estimated size.","items":{"additionalProperties":{},"properties":{"id":{"description":"qualityId for import_upload_from_url.","type":"string"},"label":{"type":"string"}},"required":["id","label"],"type":"object"},"type":"array"}},"required":["id","name","durationSeconds","qualities"],"type":"object"},"type":"array"},"provider":{"description":"Which service the url belongs to.","type":"string"}},"required":[" ⟨65 unchanged words⟩
⟨38 unchanged words⟩ use (get_selected_workspace) or about credits (get_billing_overview). Returns me: id, email, firstName, lastName, avatarURL, role, locale, defaultStreamDuration, createdAt.
⟨9 unchanged words⟩ :[{"additionalProperties":{},"properties":{"createdAt":{"type":"string"},"defaultStreamDuration":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The run length, in seconds, new streams start with."},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"type":"string"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}]},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Theentity'saccount'sid.language."},"role":{"type":"string"}},"required":["id","email","firstName","lastName","role","locale","defaultStreamDuration","createdAt"],"type":"object"},{"type" ⟨62 unchanged words⟩
⟨96 unchanged words⟩ short, point the user at the Streamloop dashboard. Returns me.billing (balance, creditsLeft, goodStanding, eligibleForFreeCredits), spendSummary, activeUsage and pricingTiers.
⟨5 unchanged words⟩ :[{"additionalProperties":{},"properties":{"activeUsage":{"description":"Each stream running now and what it has cost so far.","items":{"additionalProperties":{},"properties":{"elapsedMinutes":{"type":"number"},"estimatedCredits":{"type":"number"},"streamId":{"type":"string"}},"required":["streamId","elapsedMinutes","estimatedCredits"],"type":"object"},"type":"array"},"me":{"anyOf":[{"additionalProperties":{},"properties":{"idbilling":{"anyOf":[{"additionalProperties":{},"properties":{"balance":{"type":"number"},"creditsLeft":{"type":"number"},"goodStanding":{"type":"boolean"}},"required":["balance","creditsLeft","goodStanding"],"type":"object"},{"type":"null"}],"description":"Theentity'sworkspace'sid.credit balance and standing."},"id":{"type":"string"}},"required":["id","billing"],"type":"object"},{"type":"null"}]},"pricingTiers":{"description":"The credit rate of each output quality and framerate.","items":{"additionalProperties":{},"properties":{"creditsPerMinute":{"type":"number"},"framerate":{"type":"string"},"quality":{"type":"string"}},"required":["quality","framerate","creditsPerMinute"],"type":"object"},"type":"array"},"spendSummary":{"additionalProperties":{},"description":"Current burn rate, plus totals spent and streamed.","properties":{"currentCreditsPerHour":{"type":"number"},"currentCreditsPerMinute":{"type":"number"}},"required":["currentCreditsPerMinute","currentCreditsPerHour"],"type":"object"}},"required":["me","spendSummary","activeUsage","pricingTiers"],"type":"object"},{"additionalProperties" ⟨56 unchanged words⟩
⟨5 unchanged words⟩ properties":{"platform":{"description":"Theplatformservice the usernamed.wantsUseto'other'streamforto;anythingother covers any service thattakesissues an RTMP url and stream key.","enum":["youtube","twitch" ⟨13 unchanged words⟩
⟨60 unchanged words⟩ it differs, and any custom playback orderattached.attached: id, name, kind, mode, version, liveVersion, hasUnpublishedChanges, publishStatus, items, liveItems, diff, orderSequencer and its version and status.
⟨5 unchanged words⟩ :[{"additionalProperties":{},"properties":{"diff":{"additionalProperties":{},"description":"added, removed and moved items: the draft against liveItems.","properties":{},"type":"object"},"hasUnpublishedChanges":{"description":"The draft differs from what a running stream plays.","type":"boolean"},"id":{"type":"string"},"items":{"anyOf":[{"items":{"additionalProperties":{},"properties":{"id":{"description":"Item id (plitm_...).","type":"string"},"objectID":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id","objectID","position"],"type":"object"},"type":"array"},{"type":"null"}],"description":"Draft items in play order."},"kind":{"type":"string"},"liveItems":{"description":"What a running stream plays now.","items":{"additionalProperties":{},"properties":{},"type":"object"},"type":"array"},"liveVersion":{"description":"Theentity'sversionid.a running stream plays.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"mode":{"description":"sequential or shuffle.","type":"string"},"name":{"type":"string"},"orderSequencer":{"anyOf":[{"additionalProperties":{},"properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"},{"type":"null"}],"description":"The custom playback order attached, if any."},"publishStatus":{"description":"Progress of a live swap.","type":"string"},"version":{"description":"Draft version: pass as basedOnVersion / expectedDraftVersion.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id","name","kind","mode","version","liveVersion","hasUnpublishedChanges","publishStatus","items","liveItems","diff","orderSequencer"],"type":"object"},{"additionalProperties" ⟨56 unchanged words⟩
⟨61 unchanged words⟩ Do that instead of assigning to find out. Returns orderSequencer (id, name, description, assignedPlaylistsCount, latestReadyVersion with validationStatus and diagnostics) and, with playlistId, againstPlaylist (assignable, missingRefs, dependencyWarnings, blockingDiagnostics, version.dryRun.picks).
⟨5 unchanged words⟩ :[{"additionalProperties":{},"properties":{"againstPlaylist":{"additionalProperties":{},"description":"With playlistId: whether it can run over that playlist, what is missing, and a dry-run of its picks.","properties":{"assignable":{"type":"boolean"}},"required":["assignable"],"type":"object"},"orderSequencer":{"additionalProperties":{},"properties":{"assignedPlaylistsCount":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"description":{"type":"string"},"id":{"type":"string"},"latestReadyVersion":{"anyOf":[{"additionalProperties":{},"properties":{},"type":"object"},{"type":"null"}],"description":"Theid,entity'sversion,id.title, validationStatus, determinism, declaredItemRefs, diagnostics."},"latestReadyVersionID":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"null: no usable version yet."},"name":{"type":"string"}},"required":["id","name","description","assignedPlaylistsCount","latestReadyVersionID","latestReadyVersion"],"type":"object"}},"required" ⟨60 unchanged words⟩
What aGet scenehas onliveairstate
What a scene has on air. Answers streams: each stream that plays it:,thewithstream'sits id (stream), name and state and, under onAir while it runs, ⟨13 unchanged words⟩ each source's status and what its playlists play. With no stream playing it, streams is empty and summary says how to put it on air.
⟨6 unchanged words⟩ ,"properties":{"streams":{"items":{"additionalProperties":{},"properties":{"name":{"type":"string"},"onAir":{"anyOf":[{"additionalProperties":{},"properties":{"frame":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The frame/<id> on air"}},"required":["frame"],"type":"object"},{"type":"null"}],"description":"While it runs: frame, next, controls, sources"},"state":{"type":"string"},"stream":{"description":"The stream's id (stream_…)","type":"string"}},"required":["stream","name","state","onAir"],"type":"object"},"type":"array"},"summary":{"description":"When nothing plays it: what to do","type":"string"}},"required":["streams"],"type ⟨58 unchanged words⟩
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":true,"title":"What aGet scenehas onliveairstate"}
⟨5 unchanged words⟩ :[{"additionalProperties":{},"properties":{"destinations":{"description":"Where it publishes, each with its delivery state while running.","items":{"additionalProperties":{},"properties":{"destinationID":{"type":"string"},"enabled":{"type":"boolean"}},"required":["destinationID","enabled"],"type":"object"},"type":"array"},"framerate":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"quality":{"anyOf":[{"type":"string"},{"type":"null"}]},"scene":{"anyOf":[{"additionalProperties":{},"properties":{"id":{"type":"string"}},"required":["id"],"type":"object"},{"type":"null"}],"description":"Theentity'ssceneid.it plays, or null for a playlist loop."},"scheduleEndAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"scheduleRepeat":{"description":"none, daily or weekly.","type":"string"},"scheduleStartAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"description":"Run state, e.g. inactive, preparing, live.","type":"string"}},"required":["id","name","state","quality","framerate","destinations","scene","scheduleStartAt","scheduleEndAt","scheduleRepeat"],"type":"object"},{"additionalProperties" ⟨56 unchanged words⟩
⟨39 unchanged words⟩ , since those numbers live with that platform. Returns the stream as node: id, name and youtubeLiveStats (watchUrl, lifecycle, concurrentViewers, totalViews, likeCount, fetchedAt, and mirrorStatus / mirrorLastError for the YouTube broadcast sync); youtubeLiveStats is null when there is no connected YouTube broadcast. For whether Streamloop itself considers the stream healthy, read state from get_stream.
⟨6 unchanged words⟩ id":{"description":"Stream id (stream_...)., from list_streams. Ask about a stream that is live to a connected YouTube channel.","type":"string"}},"required": ⟨3 unchanged words⟩
⟨9 unchanged words⟩ ":[{"additionalProperties":{},"properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"youtubeLiveStats":{"anyOf":[{"additionalProperties":{},"properties":{},"type":"object"},{"type":"null"}],"description":"watchUrl, lifecycle, concurrentViewers, totalViews, likeCount, fetchedAt, mirrorStatus, mirrorLastError."}},"type":"object"},{"type":"null"}],"description":"The stream; null when no stream has that id."}},"required":["node"],"type" ⟨58 unchanged words⟩
⟨44 unchanged words⟩ has the current balance and burn rate instead. Returns usageAnalytics: totalMinutes, totalCredits, sessionCount, byQuality[] (quality, minutes, credits) and buckets[] (date, minutes, credits, sessions).
⟨5 unchanged words⟩ ,"properties":{"endDate":{"description":"RFC3339 endEnd of thewindow.windowDefaultsastoan RFC3339 instant. Omitted: now.","type":"string"},"period":{"description":"BucketThesize:span to report on. It sets the buckets (hourly for DAY, daily for WEEK,and MONTH, monthly for QUARTER and YEAR) and, without startDate, the window: the last day, week, month, quarter orYEAR.year.","enum":["DAY","WEEK"," ⟨4 unchanged words⟩ :"string"},"startDate":{"description":"RFC3339 startStart of thewindow.windowDefaultsastoanaRFC3339recentinstant,span.e.g. 2026-09-01T00:00:00Z. Omitted: one period before now.","type":"string"}},"required": ⟨3 unchanged words⟩
⟨8 unchanged words⟩ ":{"additionalProperties":{},"properties":{"buckets":{"description":"One per hour (DAY), day (WEEK, MONTH) or month (QUARTER, YEAR).","items":{"additionalProperties":{},"properties":{"credits":{"type":"number"},"date":{"type":"string"},"minutes":{"type":"number"},"sessions":{"type":"number"}},"required":["date","minutes","credits","sessions"],"type":"object"},"type":"array"},"byQuality":{"items":{"additionalProperties":{},"properties":{"credits":{"type":"number"},"minutes":{"type":"number"},"quality":{"type":"string"}},"required":["quality","minutes","credits"],"type":"object"},"type":"array"},"sessionCount":{"type":"number"},"totalCredits":{"type":"number"},"totalMinutes":{"type":"number"}},"required":["totalMinutes","totalCredits","sessionCount","byQuality","buckets"],"type":"object"}},"required" ⟨60 unchanged words⟩
⟨58 unchanged words⟩ the duration a schedule window has to fit. Returns id, name, type, mimeType, fileSize, uploaded, duration, width, height, fps, hasVideo, hasAudio, downloadUrl, thumbnailUrl, meta and externalSource.
⟨5 unchanged words⟩ :[{"additionalProperties":{},"properties":{"iddownloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"TheTemporaryentity'sdownloadid.link."},"duration":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Seconds."},"externalSource":{"anyOf":[{"additionalProperties":{},"properties":{"url":{"type":"string"}},"required":["url"],"type":"object"},{"type":"null"}],"description":"For a URL import: the source and its download state (status, progress, error)."},"fileSize":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Bytes."},"fps":{"anyOf":[{"type":"number"},{"type":"null"}]},"hasAudio":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"hasVideo":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"height":{"anyOf":[{"type":"number"},{"type":"null"}]},"id":{"type":"string"},"mimeType":{"type":"string"},"name":{"type":"string"},"thumbnailUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string"},"uploaded":{"description":"false: still arriving or processing, not streamable yet.","type":"boolean"},"width":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","name","type","mimeType","fileSize","uploaded","duration","width","height","fps","hasVideo","hasAudio","downloadUrl","thumbnailUrl","externalSource"],"type":"object"},{"additionalProperties" ⟨56 unchanged words⟩
⟨91 unchanged words⟩ promptly rather than storing the link for later. Returns one media record per selection (id obj_..., name, type, uploaded, externalSource with its download state).
⟨24 unchanged words⟩ :"string"},"endSeconds":{"description":"ImportSecondsupintotothethissourceoffsetwhereinsteadthe clip ends, after startSeconds. Omitted: the end of theend.source.","exclusiveMinimum":0,"type":"number"} ⟨37 unchanged words⟩ :"string"},"startSeconds":{"description":"ImportSecondsfromintothistheoffsetsourceinwhere thesourceclipinsteadstarts. Omitted: the beginning of thebeginning.source.","minimum":0,"type":"number"} ⟨24 unchanged words⟩
⟨46 unchanged words⟩ ) before a stream using it will start.FilterReturnsbya page of rows (id, name,substringkind,astatus,singlertmpURL,idytChannelTitleCached,statusarchivedAt,orlastUsedAt,kind.createdAt) plus nextCursor and total.
⟨19 unchanged words⟩ :"string"},"first":{"description":"PageHowsizemany(defaultrows to return on this page; 20,maxwhen100).omitted.","exclusiveMinimum":0,"maximum":100,"type ⟨42 unchanged words⟩ :"string"},"sort":{"description":"SortOrder rows by creationtime:time; newest(default)firstorwhenoldest.omitted.","enum":["newest","oldest"],"type":"string"},"status":{"description":"FilterOnlybydestinationsstatus:inactivethisisstate.theStreams publish onlyonetoaactivestreamones;canneeds_reauthpublishandto.revoked ones need start_youtube_connection again.","enum":["active","needs_reauth"," ⟨6 unchanged words⟩
⟨57 unchanged words⟩ playlist is using is on get_playlist, not here. Returns a page of rows (id, name, description, latestReadyVersionID, retiredAt, createdAt, assignedPlaylistsCount) plus nextCursor and total.
⟨19 unchanged words⟩ :"string"},"first":{"description":"PageHowsizemany(defaultrows to return on this page; 20,maxwhen100).omitted.","exclusiveMinimum":0,"maximum":100,"type ⟨10 unchanged words⟩ :"string"},"sort":{"description":"SortOrder rows by creationtime:time; newest(default)firstorwhenoldest.omitted.","enum":["newest","oldest"], ⟨19 unchanged words⟩
⟨46 unchanged words⟩ a playlist id before any other playlist tool.Rows areReturns asummary;page of rows (id, name, streamID, sceneId, kind, mode, version, createdAt) plus nextCursor and total; get_playlist has the items.
⟨49 unchanged words⟩ :"string"},"first":{"description":"PageHowsizemany(defaultrows to return on this page; 20,maxwhen100).omitted.","exclusiveMinimum":0,"maximum":100,"type":"integer"},"kind":{"description":"FilterOnlybyplaylists of this media kind:videothe picture track oraudio.the background audio track.","enum":["video","audio"], ⟨13 unchanged words⟩ :"string"},"sort":{"description":"SortOrder rows by creationtime:time; newest(default)firstorwhenoldest.omitted.","enum":["newest","oldest"],"type":"string"},"streamId":{"description":"Onlyplayliststhebelongingplayliststoof this stream: its id (stream_...)., from list_streams or create_stream.","type":"string"}},"type":"object"}
⟨21 unchanged words⟩ its IP cameras: what create_scene_ingest_key and set_scene_secret made. Answers ingestKeys (id, sourceId, keyPrefix, status, live, rtmpUrl, rtmpsUrl), secrets (name, updatedAt) and cameras (id, sourceId, url without credentials, transport, the last connection test).
⟨6 unchanged words⟩ ,"properties":{"cameras":{"items":{"additionalProperties":{},"properties":{"id":{"type":"string"},"sourceId":{"type":"string"},"url":{"type":"string"}},"required":["id","sourceId","url"],"type":"object"},"type":"array"},"ingestKeys":{"items":{"additionalProperties":{},"properties":{"id":{"type":"string"},"live":{"type":"boolean"},"sourceId":{"type":"string"},"status":{"type":"string"}},"required":["id","sourceId","status","live"],"type":"object"},"type":"array"},"secrets":{"items":{"additionalProperties":{},"properties":{"name":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","updatedAt"],"type":"object"},"type":"array"}},"required": ⟨62 unchanged words⟩
Lists a scene's published versions, newestfirst:first.numberAnswers items (version,whenpublishedAt,bypublishedBy),whom.nextCursor and hasMore. Read one with scene_get and version.
⟨19 unchanged words⟩ :"string"},"first":{"description":"PageHowsizemany(defaultrows to return on this page; 20,maxwhen100).omitted.","exclusiveMinimum":0,"maximum":100,"type ⟨18 unchanged words⟩
⟨9 unchanged words⟩ :"boolean"},"items":{"items":{"additionalProperties":{},"properties":{"publishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"publishedBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["version","publishedAt","publishedBy"],"type":"object"},"type":"array"},"nextCursor":{ ⟨81 unchanged words⟩
⟨21 unchanged words⟩ (path "" lists what it holds). Answers items (id, name, version, publishedAt, createdAt, updatedAt), nextCursor and hasMore.
⟨19 unchanged words⟩ :"string"},"first":{"description":"PageHowsizemany(defaultrows to return on this page; 20,maxwhen100).omitted.","exclusiveMinimum":0,"maximum":100,"type ⟨3 unchanged words⟩
⟨9 unchanged words⟩ :"boolean"},"items":{"items":{"additionalProperties":{},"properties":{"id":{"type":"string"},"name":{"type":"string"},"publishedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"description":"Last published; 0: never","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id","name","version","publishedAt"],"type":"object"},"type":"array"},"nextCursor":{ ⟨81 unchanged words⟩
⟨25 unchanged words⟩ live, reconnecting, failed with a reason). Returns the stream id and destinations[]: destinationID, enabled, disabledReason, state, stateReason, stateSince, and the destination's id, name, kind and status.
⟨6 unchanged words⟩ streamId":{"description":"Stream id (stream_...)., from list_streams.","type":"string"}},"required": ⟨3 unchanged words⟩
⟨4 unchanged words⟩ },"anyOf":[{"additionalProperties":{},"description":"The stream's destination list after the call.","properties":{"destinations":{"items":{"additionalProperties":{},"properties":{"destination":{"additionalProperties":{},"properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"}},"required":["id","name","kind","status"],"type":"object"},"destinationID":{"type":"string"},"disabledReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why it is disabled, when it is."},"enabled":{"type":"boolean"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Delivery state while the stream runs: connecting, live, reconnecting, failed."},"stateReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why it is in that state, e.g. a failure reason."},"stateSince":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["destinationID","enabled"],"type":"object"},"type":"array"},"id":{"description":"The stream's id.","type":"string"}},"required":[" ⟨61 unchanged words⟩
⟨38 unchanged words⟩ loop without a second call. Filter by namesubstring,status (active = liverunorstatestarting,andscheduledcreation=window.waitingReturnsforaitspagewindow,ofinactiverows=plusneither)nextCursor andcreation window.total. Use get_stream for one stream's full configuration.
⟨49 unchanged words⟩ :"string"},"first":{"description":"PageHowsizemany(defaultrows to return on this page; 20,maxwhen100).omitted.","exclusiveMinimum":0,"maximum":100,"type ⟨10 unchanged words⟩ :"string"},"sort":{"description":"SortOrder rows by creationtime:time; newest(default)firstorwhenoldest.omitted.","enum":["newest","oldest"],"type":"string"},"status":{"description":"Only streams in this run state: active=
⟨25 unchanged words⟩ arriving or processing and cannot be streamed yet.FilterReturnsbya page of rows (id, name,substringtype,kindmimeType,andfileSize,creationuploaded,window;createdAt)useplus nextCursor and total; get_uploadforhas one item's duration, resolution and import progress.
⟨49 unchanged words⟩ :"string"},"first":{"description":"PageHowsizemany(defaultrows to return on this page; 20,maxwhen100).omitted.","exclusiveMinimum":0,"maximum":100,"type ⟨10 unchanged words⟩ :"string"},"sort":{"description":"SortOrder rows by creationtime:time; newest(default)firstorwhenoldest.omitted.","enum":["newest","oldest"],"type":"string"},"type":{"description":"Filter by kind:Onlyaudio,media
⟨88 unchanged words⟩ for workspace administration, which happens in the dashboard. Returns workspaces[] (id, identityId, name, slug, personal, role, active), selectedWorkspaceId and selectionSource (explicit, header, env or token-hint).
⟨10 unchanged words⟩ :"string"},{"type":"null"}],"description":"The workspace this connection works in."},"selectionSource":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Where that choice came from: explicit, header, env or token-hint."},"workspaces":{"description":"Every workspace this account belongs to.","items":{"additionalProperties":{},"properties":{"active":{"type":"boolean"},"id":{"description":"ThePassentity'stoid.select_workspace.","type":"string"},"name":{"type":"string"},"personal":{"type":"boolean"},"role":{"description":"This account's role in it.","type":"string"},"slug":{"type":"string"}},"required":["id","name","slug","personal","role","active"],"type":"object"},"type": ⟨64 unchanged words⟩
⟨9 unchanged words⟩ ":{"additionalProperties":{},"properties":{"channelCountry":{"type":"string"},"channelHandle":{"type":"string"},"channelTitle":{"type":"string"},"effectiveStatus":{"description":"Connection health; anything but active needs start_youtube_connection again.","type":"string"},"googleAccountEmail":{"type":"string"},"hiddenSubscriberCount":{"type":"boolean"},"id":{"description":"ThePassentity'stoid.create_youtube_destination as channelId.","type":"string"},"lastUsedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"subscriberCount":{"type":"number"},"youtubeChannelId":{"description":"YouTube's own channel id (UC...).","type":"string"}},"required":["id","googleAccountEmail","youtubeChannelId","channelTitle","channelHandle","channelCountry","subscriberCount","hiddenSubscriberCount","effectiveStatus","lastUsedAt"],"type":"object"},"type": ⟨62 unchanged words⟩
⟨132 unchanged words⟩ dryRun checks it and lists what would change.TheAnswersanswersummarylists(what happened and what to do next), version, publishedAt, changes (what changed, as resourcepaths.paths), notes, and the streams playing it.
⟨71 unchanged words⟩ they were assigned, until assign_playlist_order is called again. Returns, under refineOrderSequencer, the same status, diagnostics, sequencer and version as create_playlist_order.
⟨29 unchanged words⟩ playlist (pl_...) being composed against on thisturn.turn, so the rewrite sees its real items. Omitted: the items of a playlist this order is assigned to; with none, it writes positional rules only.","type":"string"}},"required": ⟨4 unchanged words⟩
⟨9 unchanged words⟩ ":{},"properties":{"diagnostics":{"description":"Each problem: stage, code, message, line.","items":{},"type":"array"},"sequencer":{"additionalProperties":{},"description":"The order (oseq_...).","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"},"status":{"description":"READY: usable; INVALID: failed validation; MESSAGE: a question or refusal, nothing produced; PENDING: still running.","type":"string"},"version":{"anyOf":[{"additionalProperties":{},"properties":{"id":{"type":"string"},"version":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id","version"],"type":"object"},{"type":"null"}],"description":"The version written, or null when nothing was produced."}},"required":["status","diagnostics","sequencer","version"],"type":"object"}},"required" ⟨60 unchanged words⟩
⟨19 unchanged words⟩ live (STREAM_LIVE): disable it with set_stream_destination_enabled instead. Returns the stream's whole destination list after the change, as list_stream_destinations does.
⟨7 unchanged words⟩ "description":"Destination id (dest_...), fromlist_destinations.list_destinations or list_stream_destinations.","type":"string"},"streamId":{"description":"Stream id (stream_...)., from list_streams.","type":"string"}},"required": ⟨4 unchanged words⟩
⟨7 unchanged words⟩ ":{"removeStreamDestination":{"additionalProperties":{},"description":"The stream's destination list after the call.","properties":{"destinations":{"items":{"additionalProperties":{},"properties":{"destination":{"additionalProperties":{},"properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"}},"required":["id","name","kind","status"],"type":"object"},"destinationID":{"type":"string"},"disabledReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why it is disabled, when it is."},"enabled":{"type":"boolean"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Delivery state while the stream runs: connecting, live, reconnecting, failed."},"stateReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why it is in that state, e.g. a failure reason."},"stateSince":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["destinationID","enabled"],"type":"object"},"type":"array"},"id":{"description":"The stream's id.","type":"string"}},"required":[" ⟨65 unchanged words⟩
RenamesChanges thescenescene's(whatdisplay name, the one list_scenes and the dashboard show. Its draft, published versions andlist_scenesthecallstreams playing it).are untouched. Answers the scene: id, name, version.
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"name":{"description":"The new name","maxLength":120,"minLength":1,"type":" ⟨19 unchanged words⟩
Revokes an ingest key for good: the encoder using it is cut off at once.AIt cannot be restored; a new key for the same source: create_scene_ingest_key. Answers revoked (the key's id).
⟨54 unchanged words⟩ (In a scene's draft; scene: its id.) Answers summary and value (the resource, with its revision and children), or image for as "image"; plus draftRevision (version, for a published version).
⟨5 unchanged words⟩ :[{"additionalProperties":{},"properties":{"summarydraftRevision":{"description":"WhatThehappeneddraft as read: what publish_scene takes","type":"string"},"image":{"additionalProperties":{},"description":"asin\"image\":athesentencepicture's size, scale, what drew and the issues","properties":{},"type":"object"},"summary":{"type":"string"},"value":{"description":"The resource as read, with its revision and children"},"version":{"description":"The published version read, when one was asked for","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["summary"],"type ⟨58 unchanged words⟩
⟨54 unchanged words⟩ purpose); without it the answer is REVISION_REQUIRED. It changes the draft only: viewers see nothing until publish_scene, and discard_scene_draft brings back what was published. Answers summary, removed (the paths) and draftRevision.
⟨5 unchanged words⟩ :[{"additionalProperties":{},"properties":{"summarydraftRevision":{"descriptiontype":"What happenedstring"},in a sentence"removed":{},"summary":{"type":"string"}},"required":["summary","removed","draftRevision"],"type":"object"},{"additionalProperties" ⟨56 unchanged words⟩
⟨5 unchanged words⟩ :[{"additionalProperties":{},"properties":{"summarycreated":{"type":"boolean"},"diff":{"description":"Whathappenedchanged"},"draftRevision":{"description":"Theindraftaassentenceit is now: what publish_scene takes","type":"string"},"path":{"description":"Where it is stored","type":"string"},"revision":{"description":"Its new revision: send it with the next change to it","type":"string"},"summary":{"type":"string"}},"required":["summary","path","revision","created","diff","draftRevision"],"type":"object"},{"additionalProperties" ⟨56 unchanged words⟩
⟨107 unchanged words⟩ with its UTC weekday so this is visible.TimesReplacesmustanycarryexistinganwindow;explicitcancel_stream_schedule disarms it. Returns the stream (id, name, state, scheduleStartAt, scheduleEndAt, scheduleRepeat, scheduleRepeatDays) and committedWindow: the window in UTC,offset.itsReplacesUTCanystartexistingweekday,window;andcancel_stream_schedulethedisarmstimesit.exactly as you sent them.
⟨43 unchanged words⟩ :"array"},"repeat":{"description":"none (default)How=therunwindowonce.recurs:dailyonce=whenre-armomitted,+24h.everyweekly24h,=orre-armevery+77 days,(or on`days`. daily/weekly need scheduleEndAt`days`).
⟨7 unchanged words⟩ ":{"committedWindow":{"additionalProperties":{},"description":"The committed window restated in UTC, to check the time zone was read as meant.","properties":{"asRequested":{"additionalProperties":{},"description":"startAt, endAt and offset exactly as sent.","properties":{},"type":"object"},"endAtUTC":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End instant in UTC; null for an open-ended one-off."},"startAtUTC":{"description":"Start instant in UTC.","type":"string"},"startWeekdayUTC":{"description":"UTC weekday of the start: the day a weekly repeat runs on.","type":"string"}},"required":["startAtUTC","endAtUTC","startWeekdayUTC","asRequested"],"type":"object"},"stream": ⟨75 unchanged words⟩
SaveSetascene secretfor a scene's tables
Saves an API key or token atablescene'ssendstables send (sealed; never shown again). A table names ⟨4 unchanged words⟩ in a header value or a URL's query. A name that exists already has its value replaced, and tables using it send the new one. Only a key the user gave you. Answers name and updatedAt.
⟨5 unchanged words⟩ ,"properties":{"name":{"description":"ItsThe name tables refer to it by, as \"$secret:<name>\", e.g. weatherKey","pattern":"^[A-Za-z0-9_.-]{1 ⟨16 unchanged words⟩ string"},"value":{"description":"The API key or token itself, exactly as the user gave it","minLength":1,"type":"string"} ⟨6 unchanged words⟩
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":false,"title":"SaveSetascene secretfor a scene's tables"}
⟨39 unchanged words⟩ . Enabling is refused while live (STREAM_LIVE). Returns the stream's whole destination list after the change, as list_stream_destinations does.
⟨7 unchanged words⟩ "description":"Destination id (dest_...), fromlist_destinations.list_destinations or list_stream_destinations.","type":"string"},"enabled":{ ⟨12 unchanged words⟩ streamId":{"description":"Stream id (stream_...)., from list_streams.","type":"string"}},"required": ⟨5 unchanged words⟩
⟨7 unchanged words⟩ ":{"setStreamDestinationEnabled":{"additionalProperties":{},"description":"The stream's destination list after the call.","properties":{"destinations":{"items":{"additionalProperties":{},"properties":{"destination":{"additionalProperties":{},"properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"}},"required":["id","name","kind","status"],"type":"object"},"destinationID":{"type":"string"},"disabledReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why it is disabled, when it is."},"enabled":{"type":"boolean"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Delivery state while the stream runs: connecting, live, reconnecting, failed."},"stateReason":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Why it is in that state, e.g. a failure reason."},"stateSince":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["destinationID","enabled"],"type":"object"},"type":"array"},"id":{"description":"The stream's id.","type":"string"}},"required":[" ⟨65 unchanged words⟩
⟨223 unchanged words⟩ time (or every day) use schedule_stream instead. Returns state, started (false when refused), issues (when refused) and startStream (the stream: id, name, state).
⟨31 unchanged words⟩ "},"startStream":{"additionalProperties":{},"description":"The stream after the call: id, name, state.","properties":{"id":{"description":"The ⟨111 unchanged words⟩
⟨34 unchanged words⟩ :"string"},"rtmpKey":{"description":"ReplacementThe new stream key,forcopiedafromcustomthe platform's own streaming settings after it rotated the old one. Custom RTMPdestination.destinations only. Storedencrypted.encrypted and never shown again.","type":"string"}},"required": ⟨3 unchanged words⟩
⟨5 unchanged words⟩ ,"properties":{"framerate":{"description":"OutputFramesframerate.per second the stream is sent at.","enum":["f_24","f_25"," ⟨21 unchanged words⟩ string"},"quality":{"description":"Outputqualityresolution(default:sent to every destination; theaccountaccount'spreference).preferred quality when omitted.","enum":["q_720p","q_1080p"," ⟨3 unchanged words⟩ :"string"},"retryMirror":{"description":"Re-attempttruemirroringre-attempts copying this stream's schedule ontoYouTube.its YouTube broadcast, e.g. after reconnecting the channel.","type":"boolean"},"runBackupStream":{ ⟨115 unchanged words⟩ that case.","properties":{"adFrequency":{"description":"How often Streamloop asks YouTube for a mid-roll ad break. Ads only serve on a channel in the YouTube Partner Program; off sends no breaks.","enum":["off","conservative","balanced","aggressive"],"type":"string"},"ageRestricted":{"description":"Mark the broadcast 18+ on YouTube (yes), clear that mark (no), or leave YouTube's own setting alone (unspecified).","enum":["unspecified","yes","no"],"type":"string"},"categoryID":{"description":"YouTubeYouTube's numeric video categoryid.id, as a string: \"10\" is Music, \"20\" Gaming, \"22\" People & Blogs.","type":"string"},"defaultAudioLanguage":{"description":"Language spoken in the broadcast audio, as a BCP-47languagecodecode.such as en or es-MX.","type":"string"},"defaultLanguage":{"description":"Language of the title and description, as a BCP-47languagecodecode.such as en or es-MX.","type":"string"},"description":{"description":"BroadcastThedescription.text shown under the broadcast on YouTube.","type":"string"},"embeddable":{"description":"Allow other websites to embed the broadcast; false blocks embedding.","type":"boolean"},"enableDvr":{"description":"Let viewers pause and rewind the live broadcast on YouTube.","type":"boolean"},"latencyPreference":{"description":"YouTube's live latency mode: lower latency means faster chat interaction but less buffering against network hiccups.","enum":["normal","low","ultra_low"],"type":"string"},"madeForKids":{"description":"YouTube's required made-for-kids (COPPA) declaration. A stream still at unspecified will not start until it is answered yes or no; ask the user, never assume.","enum":["unspecified","yes","no"],"type":"string"},"privacy":{"description":"BroadcastWhovisibility.can find and watch the broadcast on YouTube: everyone, only people with the link, or only the channel.","enum":["public","unlisted","private"],"type":"string"},"recordFromStart":{"description":"Keep the broadcast on the channel as a video once it ends.","type":"boolean"},"scheduleOnYoutubeWhenScheduled":{"description":"When the stream is scheduled, create its YouTube broadcast right away so it shows as upcoming on the channel, instead of when the stream starts. Cannot change while the stream is live.","type":"boolean"},"tags":{"description":"YouTube search tags for the broadcast; replaces the current tags.","items":{"type":"string"},"type":"array"},"thumbnailObjectID":{"description":"MediaThe image used when thumbnailSource is custom: a media id (obj_...) ofaancustomuploadedthumbnailimage,image.from list_uploads or create_upload.","type":"string"},"thumbnailSource":{"description":"Where the broadcast thumbnail comes from: auto takes a frame of the first video in the playlist, custom uses the image in thumbnailObjectID, none leaves YouTube's own thumbnail untouched.","enum":["auto","custom","none" ⟨14 unchanged words⟩
after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"createRtmpDestination":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"}},"required":["createRtmpDestination"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"next":{"type":"string"},"object":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"},"uploadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["object","uploadUrl","next"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"createYouTubeDestination":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"}},"required":["createYouTubeDestination"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"deleted":{"const":true,"type":"boolean"},"id":{"type":"string"}},"required":["deleted","id"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"externalLinkContents":{"additionalProperties":{},"properties":{"items":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":"array"},"provider":{"type":"string"}},"required":["provider","items"],"type":"object"}},"required":["externalLinkContents"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"me":{"anyOf":[{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"},{"type":"null"}]}},"required":["me"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"me":{"anyOf":[{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"},{"type":"null"}]}},"required":["me"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"selectedWorkspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["selectedWorkspaceId","source"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"usageAnalytics":{"additionalProperties":{},"properties":{"totalCredits":{"type":"number"},"totalMinutes":{"type":"number"}},"required":["totalMinutes","totalCredits"],"type":"object"}},"required":["usageAnalytics"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"createUploadsFromExternalLink":{"items":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["createUploadsFromExternalLink"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"selectedWorkspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"selectionSource":{"anyOf":[{"type":"string"},{"type":"null"}]},"workspaces":{"items":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["workspaces","selectedWorkspaceId","selectionSource"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"listYouTubeChannels":{"items":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"},"type":"array"}},"required":["listYouTubeChannels"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"error":{"description":"Set when the id was refused; the selection did not change.","type":"string"},"selectedWorkspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["selectedWorkspaceId"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"startYouTubeOAuth":{"additionalProperties":{},"properties":{"authorizationUrl":{"type":"string"}},"required":["authorizationUrl"],"type":"object"}},"required":["startYouTubeOAuth"],"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}before
—after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":{},"anyOf":[{"additionalProperties":{},"properties":{"applied":{"additionalProperties":{},"description":"On a partial failure: the changes that DID commit.","propertyNames":{"type":"string"},"type":"object"},"archiveState":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"},"error":{"description":"On a partial failure: what did not apply.","type":"string"},"keyReplaced":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"},"renamed":{"additionalProperties":{},"properties":{"id":{"description":"The entity's id.","type":"string"}},"required":["id"],"type":"object"}},"type":"object"},{"additionalProperties":{},"properties":{"code":{"description":"Stable — branch on it: INVALID_INPUT, REVISION_REQUIRED, STALE_PUBLISH, CONFIRM_REQUIRED, UNAVAILABLE, …","type":"string"},"currentRevision":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CONFLICT: the revision it has now"},"detail":{"description":"What is wrong, in a sentence","type":"string"},"errors":{"description":"Each problem, when a check refused it"}},"required":["code","detail"],"type":"object"}],"properties":{},"type":"object"}