Skip to main content
The Streamloop API lets you do what the dashboard does — upload media, build playlists, connect destinations, and start, schedule, and monitor 24/7 loop streams — from your own code or an AI agent. The Scenes API builds and runs live, designed scenes. Everything runs on the same backend as the app, so a stream you create over the API behaves exactly like one created in the dashboard.

Ways to integrate

REST API

A clean, versioned HTTP API at api.streamloop.app/v1. Best for scripts, servers, and backends. Start here.

Scenes API

Build, check, publish and run scenes over HTTP at api.streamloop.app/v1/scenes.

MCP server

A Model Context Protocol server for AI agents (Claude, ChatGPT, and others) to call Streamloop as tools.

GraphQL

Direct access to the underlying GraphQL schema. For advanced clients that want to shape their own queries.
The REST API, the Scenes API and the MCP server cover the same capabilities and share the same accounts, workspaces and scopes — pick whichever fits how you’re building.

Base URLs

What you can do

Streams

Create, update, start, stop, schedule, and monitor 24/7 loop streams; check readiness and live stats.

Media & playlists

Upload video and audio (direct or from a link), then build, reorder, copy, and publish playlists.

Destinations

Add custom RTMP targets, and send one stream to up to 5 destinations (multistream).

Scenes

Write a scene’s frames as JSX, get a picture of each, publish, and put it on a stream.

Workspaces

List your workspaces and act in one with the X-Workspace-Id header.

Billing

Read your credit balance, usage analytics, and invoices, and create top-up links (card or crypto).

Next steps

1

Authenticate

Get an API key or set up OAuth — see Authentication.
2

Learn the conventions

Workspaces, pagination, retries, rate limits and errors are consistent across every endpoint — see Conventions.
3

Make your first call

Follow the Quickstart to go from an API key to a live stream with curl.
The REST endpoint pages in this section are generated directly from the live OpenAPI document, so they always match what the API actually accepts and returns.