Restream integration
Restream multistreams one live video to many platforms at once (YouTube, Twitch, custom RTMP and more). An agent can schedule events and attach or detach their destinations, list upcoming, live and past events, read an event's chat history (viewer names, personal data), viewer and chat analytics, recordings and transcriptions, get temporary download links for recordings, chat exports, storage files and AI clips, start AI clip projects, list or delete channels, and manage Restream Studio captions, QR codes and tickers; the platform and ingest server lists are public. Not exposed: stream keys and SRT passphrases, the chat embed URL (it carries a chat token), adding a channel (it takes the destination platform's stream key and RTMP password), and the WebSocket chat and streaming-status APIs. Authentication is OAuth 2.0: connect your Restream account (access tokens last 1 hour and are refreshed automatically; refresh tokens last 1 year).
Say what should happen.
The workflow builds itself.
What you can do with Restream
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Each badge shows the default agent permission of an endpoint (allowed: an agent calls it without asking; ask first: you are asked before an agent calls it, when the agent or chat asks permission for sensitive actions; never: no agent may call it), which every user can change endpoint by endpoint in their credential settings.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Qr code, 6 operations
create_qr_codeCreate qr codePOSTAgents: ask firstCreates a Restream Studio QR code that points viewers to a link, in one of the user's brands, and returns it. Needs the studio.write scope.delete_qr_codeDelete qr codeDELETEAgents: ask firstPermanently deletes a Restream Studio QR code. Needs the studio.write scope.get_qr_codeGet qr codeGETAgents: ask firstReturns one Restream Studio QR code by id, with its title, encoded link, title display setting and brand. Needs the studio.default.read scope.list_qr_codesList qr codesGETAgents: ask firstLists the connected user's Restream Studio QR codes (title, encoded link, whether the title shows, brand), optionally only those of one brand. Needs the studio.default.read scope.reorder_qr_codesReorder qr codesPATCHAgents: ask firstSets the display order of the user's Restream Studio QR codes from an ordered list of their ids. Needs the studio.write scope.update_qr_codeUpdate qr codePATCHAgents: ask firstChanges the title, the link or the title display setting of a Restream Studio QR code and returns it; fields left out keep their current value. Needs the studio.write scope.
Ticker, 6 operations
create_tickerCreate tickerPOSTAgents: ask firstCreates a Restream Studio ticker (a scrolling on-screen message) in one of the user's brands and returns it. Needs the studio.write scope.delete_tickerDelete tickerDELETEAgents: ask firstPermanently deletes a Restream Studio ticker. Needs the studio.write scope.get_tickerGet tickerGETAgents: ask firstReturns one Restream Studio ticker by id, with its text and brand. Needs the studio.default.read scope.list_tickersList tickersGETAgents: ask firstLists the connected user's Restream Studio tickers (scrolling on-screen messages), optionally only those of one brand. Needs the studio.default.read scope.reorder_tickersReorder tickersPATCHAgents: ask firstSets the display order of the user's Restream Studio tickers from an ordered list of their ids. Needs the studio.write scope.update_tickerUpdate tickerPATCHAgents: ask firstChanges the text of a Restream Studio ticker and returns it. Needs the studio.write scope.
Caption, 5 operations
create_captionCreate captionPOSTAgents: ask firstCreates a Restream Studio caption (on-screen text with an optional second line) in one of the user's brands and returns it. Needs the studio.write scope.delete_captionDelete captionDELETEAgents: ask firstPermanently deletes a Restream Studio caption. Needs the studio.write scope.get_captionGet captionGETAgents: ask firstReturns one Restream Studio caption by id, with its text, secondary text and brand. Needs the studio.default.read scope.list_captionsList captionsGETAgents: ask firstLists the connected user's Restream Studio captions (on-screen text with an optional second line), optionally only those of one brand. Needs the studio.default.read scope.update_captionUpdate captionPATCHAgents: ask firstChanges the text or the secondary text of a Restream Studio caption and returns it; fields left out keep their current value. Needs the studio.write scope.
Event, 5 operations
create_eventCreate eventPOSTAgents: ask firstSchedules a new Restream event (a stream the user goes live with later) and returns its id. It has no destinations yet; attach channels with add_event_destination. Needs the stream.write scope.get_eventGet eventGETAgents: ask firstReturns one Restream event by id, with its status (upcoming, in-progress or finished), title, schedule, start and end times and destinations. Needs the stream.default.read scope.list_event_historyList event historyGETAgents: ask firstLists the connected user's past events (status finished or missed), one page at a time, with their times and destinations. Page with page and limit; pagination.pages_total gives the page count. Needs the stream.default.read scope.list_in_progress_eventsList in progress eventsGETAgents: ask firstLists the connected user's events that are live right now, with their status, title, start time and destinations. Needs the stream.default.read scope.list_upcoming_eventsList upcoming eventsGETAgents: ask firstLists the connected user's upcoming Restream events with their status, title, schedule and destinations, optionally filtered by source or to scheduled events only. Needs the stream.default.read scope.
Channel, 3 operations
delete_channelDelete channelDELETEAgents: ask firstPermanently removes a streaming destination (channel) from the Restream account. Any upcoming or in-progress event using it stops delivering to that destination. Needs the channels.write scope.get_channelGet channelGETAgents: ask firstReturns one streaming destination (channel) of the account by id, with its platform, URL and display name. Needs the channels.default.read scope.list_channelsList channelsGETAgents: ask firstLists the streaming destinations (channels) connected to the Restream account, with each one's id, platform, URL and display name. Needs the channels.default.read scope.
Clip project, 3 operations
create_clip_projectCreate clip projectPOSTAgents: ask firstStarts AI clip generation from a source (a Video Storage file, a past event's recording, a public video URL or a YouTube link) and returns the projectId at once; poll get_clip_project. Uses the plan's clip quota. Needs clips.write.get_clip_projectGet clip projectGETAgents: ask firstReturns a clip project with every generated clip (title, virality score, transcript, time range, thumbnail) and its posting history. generatingClipsNow is true while more clips are coming. Needs the clips.default.read scope.list_clip_projectsList clip projectsGETAgents: ask firstLists the connected user's clip projects (one per video source) with clip counts, thumbnails and whether clips are still being generated. Page with limit and cursor (pagination.nextCursor). Needs the clips.default.read scope.
Destination, 2 operations
add_event_destinationAdd event destinationPOSTAgents: ask firstAttaches an existing channel to an event as a destination; Restream will broadcast the event there. For a YouTube channel this sets up a YouTube broadcast, public unless privacyStatus says otherwise. Needs the stream.write scope.delete_event_destinationDelete event destinationDELETEAgents: ask firstDetaches a destination from a scheduled event (the channel itself is kept). Only allowed while the event is still scheduled, not once it is in progress or finished. Needs the stream.write scope.
Storage file, 2 operations
get_storage_fileGet storage fileGETAgents: ask firstReturns one Video Storage file by id with its title, size, duration, processing status (Processing, Ready, Failed) and creation time. Needs the storage.default.read scope.list_storage_filesList storage filesGETAgents: ask firstLists every file in the connected user's Restream Video Storage with its title, size, duration, processing status (Processing, Ready, Failed) and creation time. Needs the storage.default.read scope.
Audio background, 1 operation
list_audio_backgroundsList audio backgroundsGETAgents: ask firstReturns the Restream Studio audio background catalog as categories, groups and channels (the ambient audio a broadcast can play), each channel with its id, name, emoji and icon. Needs the studio.default.read scope.
Brand, 1 operation
list_brandsList brandsGETAgents: ask firstLists the connected user's Restream Studio brands (id and name). Brands group captions, tickers, QR codes, music and fonts; their ids are the brandId the Studio tools take. Needs studio.default.read.
Chat analytics, 1 operation
get_event_chat_analyticsGet event chat analyticsGETAgents: ask firstReturns an event's chat analytics (total messages, unique chatters, a per-minute series of message counts) in total and per channel. Answers 404 for an event that never received a stream. Needs stream.default.read.
Chat history download url, 1 operation
create_chat_history_download_urlCreate chat history download urlPOSTAgents: ask firstGenerates a one-time, short-lived URL that downloads an event's full chat history export (viewer names and messages, personal data). Fetch it without a credential. Needs the chat.default.read scope.
Chat message, 1 operation
list_event_chat_messagesList event chat messagesGETAgents: ask firstReturns an event's chat messages from every connected platform in time order, with each message's author and text (personal data of viewers). Page with pageToken, or jump to a time with timestamp. Needs the chat.default.read scope.
Clip download url, 1 operation
get_clip_download_urlGet clip download urlGETAgents: ask firstReturns a temporary download URL for one clip; take clipId from get_clip_project (clips[].clipId). Each call returns a new URL. Needs the clips.default.read scope.
Countdown music, 1 operation
list_countdown_musicList countdown musicGETAgents: ask firstLists the countdown music tracks available in Restream Studio (the default catalog and the user's brand tracks), each with encoded source variants (URL, duration, bitrate, codec). Needs the studio.default.read scope.
Font, 1 operation
list_fontsList fontsGETAgents: ask firstLists the fonts available in Restream Studio (the default catalog and the user's brand fonts), each with its weight and style variants, source file URLs and rendered previews. Needs the studio.default.read scope.
Ingest server, 1 operation
list_ingest_serversList ingest serversGETAgents: ask firstLists Restream's RTMP ingest servers (the points a user sends a stream to), each with its region name, host, RTMP URL and coordinates. Public reference data; the ids match get_selected_ingest's ingestId.
Platform, 1 operation
list_platformsList platformsGETAgents: ask firstLists every streaming platform Restream can send a stream to (Twitch, YouTube and more), with each platform's id, URL and logo. Public reference data; the ids are the platformId values of channels.
Profile, 1 operation
get_profileGet profileGETAgents: ask firstReturns the connected Restream user's profile (id, username and email address, personal data). Needs the profile.default.read scope.
Recording, 1 operation
list_event_recordingsList event recordingsGETAgents: ask firstLists an event's recording files, grouped into primaryVideos (main recording), secondaryVideos (portrait copy, when both orientations streamed) and audio. Pass a fileName to create_recording_download_url. Needs storage.default.read.
Recording download url, 1 operation
create_recording_download_urlCreate recording download urlPOSTAgents: ask firstGenerates a temporary download URL for one recording file of an event; take fileName from list_event_recordings. Each call returns a new URL. Needs the storage.default.read scope.
Selected ingest, 1 operation
get_selected_ingestGet selected ingestGETAgents: ask firstReturns the id of the ingest server the connected user has selected (match it against list_ingest_servers). Needs the channels.default.read scope.
Storage file download url, 1 operation
create_storage_file_download_urlCreate storage file download urlPOSTAgents: ask firstGenerates a temporary download URL for one file in the user's Video Storage (take its id from list_storage_files). Each call returns a new URL. Needs the storage.default.read scope.
Transcription, 1 operation
list_recording_transcriptionsList recording transcriptionsGETAgents: ask firstLists the transcriptions of an event's recordings with their status (InProgress, Completed, Failed, Unknown) and, once Completed, a download URL. Call again until Completed; expired ones read Failed. Needs storage.default.read.
Viewer analytics, 1 operation
get_event_viewer_analyticsGet event viewer analyticsGETAgents: ask firstReturns an event's viewer analytics (average and peak concurrent viewers, total views, watched time, a per-minute series) in total and per channel. Answers 404 for an event that never received a stream. Needs stream.default.read.
Use Restream from Claude Code, Cursor or Codex
Connect Restream in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Restream operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Restream
- Create your workspace
Sign up free. Nothing to install.
- Connect Restream once
Add your Restream connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Restream integration FAQ
What can you do with the Restream integration?
LiveContext exposes 49 operations on Restream, covering qr code, ticker, caption and event.
