Control the stream lifecycle
Create, inspect, update, start, stop, and delete streams from your application or automation.
Create and control scheduled, prerecorded, and 24/7 streams from code. Upload and organize media, build playback queues, manage multistream destinations, and start or stop broadcasts with one REST API.
curl --request POST \
--url https://studio.upstream.so/api/v1/streams \
--header "Authorization: Bearer YOUR_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"name": "Always-on channel",
"platform": "youtube",
"type": "video",
"key": "YOUR_DESTINATION_STREAM_KEY",
"schedule": {
"mode": "continuous",
"continuous_start_type": "now",
"continuous_stop_type": "never",
"stream_duration_hours": 23,
"stream_duration_minutes": 55,
"break_duration_minutes": 5,
"preserve_state": true
}
}'{
"data": {
"id": "stream_uuid",
"name": "Always-on channel",
"type": "video",
"status": "installing",
"schedule": {
"mode": "continuous",
"continuous_start_type": "now",
"continuous_stop_type": "never",
"preserve_state": true
}
}
}Live streaming API, explained
A live streaming API lets an application control broadcasts without repeating every step in a dashboard. It can connect a content system, internal tool, or scheduled job to the streams it needs to run, for example by creating a channel when a campaign is approved or refreshing its queue when new media is ready.
The Upstream live streaming API is the control layer for broadcasts managed on Upstream. It handles streams, schedules, media, playback queues, settings, and destinations. It is designed for broadcast automation rather than viewer playback or CDN delivery.
What you can automate
The same API can prepare the content, configure the stream, decide where it publishes, and control when it goes live.
Create, inspect, update, start, stop, and delete streams from your application or automation.
Set one-off, daily, weekly, or continuous schedules, including breaks and playback resume behavior.
Add, remove, and reorder video, image, primary audio, secondary audio, and external MP4 items.
Create resumable upload tickets, check processing, search media, and organize files with folders and tags.
Add and manage YouTube, Twitch, Facebook, Instagram, Kick, Rumble, Mixcloud, custom RTMP, and SRT destinations.
Control encoding, volume, playback order, transitions, video fit, recording, and stream metadata when your plan supports them.
Live streaming API use cases
Use the API where repeatable live streaming work needs to connect with your content, publishing, or operations systems.
Keep an always-on channel supplied with media, update its queue, and run continuous schedules from your own system.
Explore 24/7 live streamingPrepare prerecorded broadcasts ahead of time, set repeat rules, and start or stop them through a predictable workflow.
Explore stream schedulingKeep destination settings synchronized and control where each stream publishes without repeating the same setup by hand.
Explore multistreamingBuild a control panel, scheduled job, content pipeline, or operations tool around the broadcasts your team runs in Upstream.
Read the API referenceFrom API key to live
Start with a dedicated API key and one read request. Then use the reference examples for the streams, media, queues, and destinations your integration needs.
Sign in to Upstream Studio, open Profile → API Keys, and create a dedicated key for the integration.
Send the key as a Bearer token to the versioned REST base URL. Successful payloads are returned under data.
Create a stream, upload or select media, prepare its queue and destinations, wait until provisioning reaches paused, then start it from code.
Base URL
https://studio.upstream.so/api/v1
Store API keys only in server-side secrets or environment variables. Never ship a key in browser code, a mobile app, or a public repository.
Open API Keyscurl --request GET \
--url https://studio.upstream.so/api/v1/user \
--header "Accept: application/json" \
--header "Authorization: Bearer YOUR_API_TOKEN"A workflow you can automate
Connect Upstream to your content system, catalog, or internal tools. When something is ready to publish, your integration can prepare the broadcast while your team stays focused on the programming.
Your CMS or operations tool triggers the workflow when a video, show, or campaign is approved.
Your integration uploads or selects the media, places it in the queue, and applies the stream settings it needs.
Scheduled or continuous programming uses the updated queue while your team checks status and steps in only when needed.
API or MCP?
The REST API is built for application code, scripts, cron jobs, and automation platforms. The Upstream MCP server exposes supported API operations as discoverable tools for compatible AI clients.
Developer resources
Read endpoint details and examples in the API reference, import the Postman collection, or generate tooling from the OpenAPI specification.
FAQ
What the Upstream API controls, how authentication works, and when to use the API or MCP.
A live streaming API lets software create or control broadcast workflows programmatically. The Upstream live streaming API is a REST API for the broadcast control layer: streams, schedules, media, playback queues, settings, and multistream destinations managed in an Upstream account.
You can create and update streams, start or stop broadcasts, configure one-off or recurring schedules, manage media and folders, build playback queues, organize streams with tags, and manage supported social, RTMP, RTMPS, and SRT destinations.
No. Upstream provides a live streaming orchestration API for broadcasts run on Upstream. It is not a general-purpose video player, viewer-delivery CDN, or video-on-demand API.
Create an API key in Upstream Studio under Profile → API Keys, then send it with every request as Authorization: Bearer YOUR_API_TOKEN. Keep the key in a server-side secret store and never publish it in client-side code or a repository.
API calls are restricted to resources owned by the account that created the token. Keys currently grant full customer API access, do not expire automatically, and remain valid until revoked; an account can keep up to 25 keys. Use a separate key for each integration and revoke it from Profile → API Keys when it is no longer needed. Destination stream keys and the primary stream key are write-only and are not returned in API responses.
Yes. Stream schedules can be one-off, daily, weekly, or continuous. Continuous schedules can define active periods, breaks, a stop condition, and whether playback resumes where it left off.
The current API supports destinations for YouTube, Twitch, Facebook, Instagram, Mixcloud, Rumble, and Kick, plus custom RTMP, RTMPS, and SRT endpoints. Plan and platform requirements still apply.
The customer API allows 60 requests per minute per account. Responses include rate-limit and remaining-request headers, and a 429 response also includes Retry-After so your integration knows when to try again.
Upstream currently provides a versioned REST API, ready-to-run examples in the API reference, an OpenAPI 3.0.3 specification, and a Postman collection. There is no official typed Upstream SDK at this time.
Signed-in Upstream accounts can create API keys. API-created streams and actions use the features, streaming time, storage, quality options, and limits of that account's plan. Plan-gated capabilities remain plan-gated when they are requested through the API. Compare Upstream plans.
Use the REST API from application code, scripts, cron jobs, and automation systems. Use the Upstream MCP server when you want a compatible AI assistant to discover and use supported Upstream tools.
The public developer resources include the API reference, an OpenAPI specification, and a Postman collection.
Create a dedicated key, make your first authenticated request, and start automating streams, schedules, media, queues, and destinations.