How to Automate a 24/7 Live Stream with the LiveReacting API and MCP

Build a 24/7 live stream that adds a new day of videos by itself. Ask an AI agent through the LiveReacting MCP server, or call the REST API from a script.

How to Automate a 24/7 Live Stream with the LiveReacting API and MCP

You can automate a 24/7 live stream on LiveReacting in two ways. Ask an AI agent such as Claude, ChatGPT, Claude Code, Codex or Cursor, connected to the LiveReacting MCP server. Or call the REST API from a script, n8n or Make. Both build the same thing: a stream that plays a different playlist each day and switches to the next day by itself. Both are included with every paid plan.

Key takeaways

  • The MCP server is the easy path. ChatGPT and Claude connect by account sign-in. You ask in plain words, and the agent builds and starts the stream.
  • The REST API is the developer path. The REST API and key-based MCP clients (Claude Code, Codex, Cursor) share the same lr_ API key.
  • Each day is a scene with a video playlist. When one day's playlist ends, the stream switches to the next day. You can add days while the stream runs.
  • Daily additions need something that runs every day: a scheduled script or an automation workflow. One request to an agent does not repeat itself.
  • A stream that never stops needs the 24/7 plan. Every other plan has a maximum stream length.

Facts in this guide are current as of October 27, 2026.

How 24/7 Streams Work in LiveReacting

Both paths use the same building blocks:

Project
├── Scenes (one active at a time)
│   └── Layers (video playlists, audio playlists, single videos)
│       └── Files (your videos)
├── Streaming Destinations (YouTube, Facebook, Twitch, RTMP)
└── Live Stream (the running broadcast)

Each scene is a block of content. In this guide, one scene is one day. The main layer in each scene is a video playlist that holds your files.

The key feature is automatic scene switching. When Day 1's playlist ends, the stream switches to Day 2. When Day 2 ends, it switches to Day 3. You can add new days while the stream runs.

A playlist does one of two things when it ends: it loops, or it switches to the next scene. It cannot do both. The newest day in the chain must loop. If it plays once and no next day exists, the stream has nothing to play.

Changes you make through the API or an agent update the project. If auto-sync is on, they reach the running stream at once. If it is off, you send them with a sync call.

The easy path: let an AI agent run it (MCP)

MCP (Model Context Protocol) is the standard way an AI app calls outside tools. The LiveReacting MCP server gives an agent 30 tools to import videos, build playlists, start, schedule and watch streams. There is nothing to install. The server address is:

https://mcp.livereacting.com/mcp

ChatGPT and Claude connect by account sign-in. No API key is needed. From the MCP page:

  1. In ChatGPT, open Plugins, find LiveReacting and click Install plugin (details).
  2. In Claude, open Customize, then Connectors, choose Add custom connector, and enter the server URL.
  3. Sign in to your LiveReacting account when asked.

Claude Code, Codex CLI, Cursor, VS Code and Gemini CLI connect with an API key. Create the key in the Developer section of LiveReacting Studio and set it as the LIVEREACTING_API_KEY environment variable. For Claude Code, put this in .mcp.json at the root of your project:

{
  "mcpServers": {
    "livereacting": {
      "type": "http",
      "url": "https://mcp.livereacting.com/mcp",
      "headers": { "Authorization": "Bearer ${LIVEREACTING_API_KEY}" }
    }
  }
}

The MCP page has the configuration for each of the other clients.

Then ask for what you want. Two examples:

  1. "Here are three Google Drive video links. Build a 24/7 live stream on my YouTube channel from them and start it." The agent imports the files, waits until they can be streamed, fills a looping playlist and goes live.
  2. "Add these videos as tomorrow's scene, to start when today's playlist ends." The agent adds a new scene with a playlist and chains it to the previous day while the stream runs.

The agent does the second step only when you ask. To add a day every day without you, run a scheduled script or an n8n or Make workflow that calls the API (see below).

Look before you let it change anything. Add ?read_only=1 to the server URL and the agent gets only the tools that read. It can list your projects, media and stream status, but it cannot create, start or change anything. The two examples above need the full URL without ?read_only=1.

What the agent cannot do:

  • Connect a YouTube channel or another destination. You do that once in LiveReacting Studio.
  • Build text, image or interactive overlays. Build them in Studio. The agent can still run a stream that has them.
  • Import a YouTube playlist URL or a YouTube channel URL. It imports single videos from YouTube, Google Drive, Dropbox or a direct link.

Which tool does each step

StepREST APIMCP tool
Import a videoPOST /files/importlivereacting_import_media or livereacting_import_from_url
Check the importGET /files/import/{fileId}/statuslivereacting_get_import_status
Encode a file that cannot stream yetPOST /files/encodelivereacting_encode_media
Find your YouTube destinationGET /destinationslivereacting_list_destinations
Create the projectPOST /projectslivereacting_create_project
Add Day 1, then each next dayPOST /projects/{id}/scenes and /layers, then POST /projects/{id}/workflows/create-scene-with-autoswitchlivereacting_create_scene_with_playlist
Go live or schedulePOST /projects/{id}/live or /schedulelivereacting_start_stream or livereacting_schedule_stream
Watch the streamGET /projects/{id}livereacting_get_stream_status
Switch the scene on airPOST /projects/{id}/scenes/{sceneId}/activatelivereacting_activate_scene
Push edits to the live streamPOST /projects/{id}/synclivereacting_sync_stream
StopDELETE /projects/{id}/livelivereacting_stop_stream

The full list of tools, inputs and limits is in the MCP reference.

Build it with the REST API

This path is for developers who want a script or an automation workflow to run the channel. It builds a 24/7 YouTube channel that plays different videos each day, with a new day added by your script.

Prerequisites

  • A LiveReacting account on a paid plan. Pick the 24/7 plan for a stream with no time limit. See pricing.
  • An API key from the Developer section of LiveReacting Studio. The Free plan cannot create one.
  • A YouTube channel connected as a streaming destination in LiveReacting Studio. The API cannot connect a destination.

All requests use the base URL https://api.livereacting.com/v1/external and your key as a Bearer token:

Authorization: Bearer lr_your_api_key_here

The rate limit is 150 requests per minute per account, shared by all of its keys. The API documentation has every route, and the daily rotation guide covers this use case. For code generators and agents, the OpenAPI file and auth.md describe the API and how to authenticate.

Step 1: Import Your Videos

Import from Google Drive, Dropbox, a YouTube video or a direct public link to a media file:

curl -X POST https://api.livereacting.com/v1/external/files/import \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://drive.google.com/file/d/abc123/view",
    "type": "video"
  }'

The response returns a fileId. Check the import until its status is completed:

curl https://api.livereacting.com/v1/external/files/import/{fileId}/status \
  -H "Authorization: Bearer lr_your_api_key"

To upload a file from your own computer, use three calls:

  1. POST /files/upload with the file name, type and exact size in bytes. The response has an uploadToken and one or more signed part URLs.
  2. Send each part of the file with a PUT to its URL. These URLs are signed, so they take no Authorization header.
  3. POST /files/upload/complete with the uploadToken. The file joins your media library.

Check that each file can stream before you build a playlist. Read the file with GET /files/{fileId}. If its issues.errors list is not empty (for example an unsupported codec or a bitrate above your plan's limit), queue it for encoding:

curl -X POST https://api.livereacting.com/v1/external/files/encode \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "fileIds": ["VIDEO_1_ID"] }'

Check progress with GET /files/encode/status, then read the file again. Encoding is included in every plan.

To keep each day's files together, create a folder first with POST /folders and a body such as {"name": "Day 1", "type": "video"}. Then pass its folderId in the import request.

Step 2: Create a Project

Get your YouTube destination ID:

curl https://api.livereacting.com/v1/external/destinations \
  -H "Authorization: Bearer lr_your_api_key"

Then create the project:

curl -X POST https://api.livereacting.com/v1/external/projects \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "24/7 Channel",
    "title": "My 24/7 Live Stream",
    "format": "16:9_1080p",
    "destinationIds": ["YOUR_YOUTUBE_DESTINATION_ID"],
    "duration": { "manual": true },
    "autoSynch": true
  }'

Key settings:

  • duration.manual: true: the stream runs until you stop it, up to your plan's maximum stream length. The 24/7 plan has no maximum. Without duration, the project gets a fixed one hour.
  • autoSynch: true: changes reach the running stream at once, so you can add days without stopping the broadcast.
  • title: YouTube needs a broadcast title.

Save the returned project id.

Step 3: Build Day 1

A new project has no scenes. Create the first one and make it active:

curl -X POST https://api.livereacting.com/v1/external/projects/{projectId}/scenes \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Day 1", "setActive": true }'

Save the returned scene id as your Day 1 scene ID. Step 4 needs it.

Add a video playlist layer with your Day 1 videos:

curl -X POST https://api.livereacting.com/v1/external/projects/{projectId}/layers \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "sceneId": "DAY_1_SCENE_ID",
    "type": "videoPlaylist",
    "name": "Day 1 Playlist",
    "settings": {
      "volume": 10,
      "loop": true,
      "files": [
        { "fileId": "VIDEO_1_ID" },
        { "fileId": "VIDEO_2_ID" },
        { "fileId": "VIDEO_3_ID" }
      ]
    }
  }'

Set loop: true. In the REST API a playlist does not loop by default. With loop on, Day 1 keeps playing if Day 2 is not added in time. When you chain Day 2 in Step 4, the API turns loop off on Day 1 by itself.

Step 4: Add Day 2 (and Beyond) with Auto-Switch

The workflow route create-scene-with-autoswitch does three things in one call:

  • Creates a new scene.
  • Creates a video playlist layer in that scene.
  • Sets the previous scene to switch to the new scene when its playlist ends.
curl -X POST https://api.livereacting.com/v1/external/projects/{projectId}/workflows/create-scene-with-autoswitch \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "sceneName": "Day 2",
    "previousSceneId": "DAY_1_SCENE_ID",
    "layer": {
      "settings": {
        "loop": true,
        "files": [
          { "fileId": "VIDEO_4_ID" },
          { "fileId": "VIDEO_5_ID" }
        ]
      }
    }
  }'

The response confirms the link:

{
  "scene": { "id": "new_scene_id", "name": "Day 2", "isActive": false },
  "layer": { "id": "new_layer_id", "type": "videoPlaylist", ... },
  "autoSwitch": {
    "previousScene": {
      "sceneId": "DAY_1_SCENE_ID",
      "sceneName": "Day 1"
    }
  },
  "synced": true
}

synced: true means the change already reached the running stream. Day 1 now switches to Day 2 when its playlist ends.

Repeat the call for Day 3, Day 4 and so on. Each time, pass the previous day's scene ID and loop: true. The newest day then loops until the next one is added.

Step 5: Go Live

curl -X POST https://api.livereacting.com/v1/external/projects/{projectId}/live \
  -H "Authorization: Bearer lr_your_api_key"

The stream starts on YouTube. Day 1 plays, switches to Day 2, and so on through the chain. Twitch and custom RTMP destinations work the same way. Facebook ends a Facebook-only stream after 8 hours. If the project also streams to YouTube or another destination, that destination keeps going after Facebook stops.

You can also schedule the start:

curl -X POST https://api.livereacting.com/v1/external/projects/{projectId}/schedule \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "dates": ["YYYY-MM-DDTHH:MM:00Z"] }'

The date must be between 3 minutes and 28 days ahead. A project with a manual duration takes one date. Several dates need a fixed duration. To schedule in Studio instead, see playlists and scheduling.

Managing Your Running Stream

Once live, the API gives you full control.

Check status and viewers:

curl https://api.livereacting.com/v1/external/projects/{projectId} \
  -H "Authorization: Bearer lr_your_api_key"

It returns liveStatus, viewers, peakViewers and the project's destinations.

See what plays now and next: GET /projects/{projectId}/layers/{layerId}/now-playing.

Skip to a specific video:

curl -X POST https://api.livereacting.com/v1/external/projects/{projectId}/layers/{layerId}/play \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "index": 0, "switchScene": true }'

Update the title or description while live (it updates on YouTube too):

curl -X PATCH https://api.livereacting.com/v1/external/projects/{projectId} \
  -H "Authorization: Bearer lr_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Day 5 - New Episodes!" }'

Restart a stream that looks stuck, without ending the broadcast:

curl -X POST https://api.livereacting.com/v1/external/projects/{projectId}/live/soft-restart \
  -H "Authorization: Bearer lr_your_api_key"

A soft restart reloads the stream with a one-second blink and continues from the same position. If it does not help, POST /projects/{projectId}/live/hard-restart restarts the stream with a 10 to 30 second gap. The docs advise you to wait about 4 minutes of a real problem first, because short drops often recover on their own.

Stop the stream:

curl -X DELETE https://api.livereacting.com/v1/external/projects/{projectId}/live \
  -H "Authorization: Bearer lr_your_api_key"

What Happens If Something Breaks

The stream runs on LiveReacting's servers, not on your computer or your script's machine. Your script only adds content. The platform keeps the stream on air:

  • Multi-cloud failover. Servers run with more than one cloud provider, in several data centers in Europe and the US. If the server behind your stream stops answering, the stream starts again on another server by itself.
  • Files in two storage services. If one storage service fails, playback switches to the other automatically.
  • Auto-reconnect. If a platform drops the connection, LiveReacting reconnects.
  • Broken files are skipped. A corrupted file in the playlist is skipped, not played.

Uptime for the last 90 days is on the status page.

Automate It Further

Every call above is a plain HTTP request, so any automation tool can run it:

  • n8n or Make: each API call becomes an HTTP Request node. Build a daily workflow that imports tomorrow's videos from Google Drive, waits until they can stream, adds a new scene with auto-switch and updates the stream title.
  • Cron job: a short Python or bash script runs once a day and calls create-scene-with-autoswitch with fresh content and loop: true.
  • AI agents: connect the MCP server and ask in plain words (see the MCP section above). Use a scheduled script or workflow for additions that must happen every day.

FAQ

Does the API or the MCP server cost extra?

No. Both are included with every paid plan. An account on the Free plan cannot create an API key. A stream that runs around the clock needs the 24/7 plan, because every other plan has a maximum stream length.

Do I need to write code?

No. Install our ChatGPT plugin, or connect Claude to the MCP server. Then sign in with your LiveReacting account and say what the stream should do. To add new videos every day without asking each time, you need a scheduled script or an automation workflow.

Can I change the stream while it is live?

Yes. With auto-sync on, a new scene, a playlist change or a scene switch reaches the running stream at once. With auto-sync off, the change waits in the project until you send the sync call.

What can the API and the AI agent not do?

They cannot connect a YouTube channel or another destination. You do that once in LiveReacting Studio. They cannot build text, image or interactive overlays, but they can run a stream that has them. Through MCP, an agent cannot import a YouTube playlist or channel URL, only single videos.

Will my 24/7 stream stop by itself?

Not on the 24/7 plan, which has no limit on stream length. Facebook ends a Facebook-only stream after 8 hours. If the project also streams to YouTube or another destination, that destination keeps going after Facebook stops.

What's Next

The API and the MCP server turn a daily manual task into a stream that refills itself. Import content, build the scene chain, go live, and keep adding days without stopping the stream.

  1. Choose a paid plan on the pricing page. Pick the 24/7 plan for a stream with no time limit.
  2. Create your API key in the Developer section of LiveReacting Studio.
  3. Connect an AI agent on the MCP page, or start coding from the API documentation.

Transform Your Live Streams with LiveReacting

Join 10,000+ streamers who are boosting engagement and viewership by adding pre-recorded videos, games, polls, and countdowns to their streams.

Try LiveReacting for free today and take your streams to the next level!

Create a Free account →