Every StreamLive Pro REST API endpoint under /api/v1 with its parameters, request fields and answer fields: lives, chat, stream keys, Shorts, posts, analytics.
The StreamLive Pro REST API runs the same operations as the ChatGPT and Claude tools, for your own code. The base address is https://streamlivepro.io/api/v1. You call it with an API key (Studio plan) as a Bearer token. This page lists every endpoint with its parameters and the fields it returns. Creating and protecting a key is in API keys for developers: create, use and revoke; error codes are in My StreamLive Pro API call fails: error codes and fixes.
The machine-readable description is at https://streamlivepro.io/api/v1/openapi.json. It marks the API as a private beta, so check it before you build.
A first call:
curl https://streamlivepro.io/api/v1/me -H "Authorization: Bearer slp_..."
| Method and path | Permission | What you get |
|---|---|---|
| GET /me | read:account | name, email, plan, on_trial, trial_days_left, can_start_live, streaming_software_allowed, limits (channels_at_once, live_hours_per_month, clips_per_period, storage_gb: a number, or a word instead of a number when the plan sets no cap), usage |
| GET /connections | read:streams | connections with network, account, status (ready or needs_attention), problem, can_go_live, live_needs_key, can_publish_here, destinations (id, name, kind); not_connected_main_networks; connect_url |
| GET /readiness | read:account, read:streams | ready_to_go_live, next_steps in order, ways_to_go_live |
A connection can hold several destinations, for example a Facebook account with several Pages. Use the destination id, not the network name, in the calls below.
| Method and path | Permission | Parameters or body |
|---|---|---|
| GET /lives | read:streams | status (live, scheduled, ready, ended), limit 1-50 (default 20), cursor from next_cursor |
| POST /lives | write:streams | title (1-200, required), destination_ids (1-30, required), description (up to 5,000), source (camera or encoder), youtube_privacy (public, unlisted, private), scheduled_at |
| GET /lives/{id} | read:streams | none |
| PATCH /lives/{id} | write:streams | any of title, description, scheduled_at, destination_ids, youtube_privacy |
| DELETE /lives/{id} | write:streams | none; cancels a live that never aired |
| POST /lives/{id}/end | write:streams | none; ends a live on air on every channel |
| GET /lives/{id}/chat | read:comments | limit 1-100 (default 50) |
| GET /lives/{id}/ingest | read:stream_keys | reveal=true to see the full key |
POST /lives without scheduled_at prepares a live to start now; with scheduled_at it schedules it. Nothing goes on air until video arrives from the browser studio, the phone or an encoder.
A live in the answer has: id, title, description, status (live, scheduled, ready, ended), scheduled_at, started_at, ended_at, duration_seconds, privacy, destinations (id, network, network_name, name), peak_viewers, total_views, recording_available and links. GET /lives/{id} adds video_arriving and destination_problems before and during air time. PATCH adds updated, the list of fields that changed.
Rules the server applies: an ended live cannot be changed; during a live the time and the channels cannot change, while title and description changes are also sent to the networks; a live that already aired is not deleted. Chat messages carry network_name, author, text, from_moderator, from_you and at. The ingest answer carries rtmp_server, srt_url, stream_key (masked as the last four characters unless reveal=true) and revealed; on the trial it is refused, because streaming software is not included.
curl -X POST https://streamlivepro.io/api/v1/lives \
-H "Authorization: Bearer slp_..." -H "Content-Type: application/json" \
-H "Idempotency-Key: weekly-qa-2026-11-10" \
-d '{"title":"Weekly Q&A","destination_ids":["dest_..."],"scheduled_at":"2026-11-10T20:00:00+02:00","source":"camera"}'
| Method and path | Permission | Parameters or body |
|---|---|---|
| GET /clips | read:clips | live_id (optional), limit 1-50 (default 20) |
| POST /clips | write:clips | live_id (required), translate_to: up to 3 language codes |
POST /clips starts cutting Shorts from an ended live that has a recording, with captions in the spoken language. It counts toward the account's Shorts allowance. translate_to accepts he, en, ar, ru, es, fr, de, pt, it, yi, am, uk, tr, hi, zh, ja, ko, nl and pl. The answer says started; the Shorts appear in GET /clips when ready. Each Short has id, live_id, title, duration_seconds, score, status, created_at and files (aspect, caption_language, duration_seconds, download_url).
| Method and path | Permission | Parameters or body |
|---|---|---|
| GET /posts | read:clips | status (scheduled, pending, processing, completed, failed, cancelled, partial), limit 1-50 |
| POST /posts | publish | clip_id and destination_ids and title (1-100) required; description (up to 2,000), publish_at, youtube_privacy, aspect (for example 9:16), caption_language |
| GET /posts/{id} | read:clips | none; adds results per network |
| PATCH /posts/{id} | publish | any of publish_at, title, description, for a post that is still scheduled |
| DELETE /posts/{id} | publish | none; cancels a scheduled post |
POST /posts publishes at once, or at publish_at. Through the API there is no preview step: the request you send is the decision. youtube_privacy is required when a YouTube destination is included. TikTok, Pinterest and WhatsApp destinations are refused with publish_in_app; those posts are made on the publish screen. Per-network results carry network_name, destination, status, post_url and problem.
| Method and path | Permission | Parameters |
|---|---|---|
| GET /analytics/summary | read:analytics | days: 7, 28, 90 or 365 (default 28); network, for example youtube |
| GET /podcasts/feeds | read:streams | none |
| GET /help/search | read:account | q, 2 to 120 characters |
The analytics answer has period_days, data_as_of, totals (views, watch_time_minutes, engagement, posts with current, previous and change_pct; followers; live_hours), networks, top_posts (up to 5), insights (up to 5) and networks_without_numbers. The podcast answer lists each show with feed_url, episodes_in_feed, latest_episode, readiness flags and a state per directory (needs_setup, feed_ready, waiting_for_claim, waiting_for_verification, connected).
POST /uploads, PUT /uploads/{id}/parts/{n}, POST /uploads/{id}/complete and POST /camera-pairings are listed as planned and answer 501 not_implemented today. Any other path answers 404 unknown_endpoint.
The same operations as assistant tools: StreamLive Pro MCP tools: full list for ChatGPT and Claude. What the stream key answer protects: Get your OBS stream key from ChatGPT or Claude. What the tools leave to the app: What ChatGPT and Claude cannot do in StreamLive Pro.
Rate limits and safe retries with Idempotency-Key are explained in API keys for developers: create, use and revoke. Your plan's limits apply to every call, exactly as on the website.
https://streamlivepro.io/api/v1, with an API key sent as a Bearer token.
Send POST /lives with a title, destination ids from GET /connections and scheduled_at. Without scheduled_at the live is prepared to start now.
No. POST /posts publishes as soon as it is accepted. Test with a scheduled post you can cancel.
Not yet. The upload endpoints are planned and answer 501.
TikTok, Pinterest and WhatsApp posts are made on the StreamLive Pro publish screen, not through the API.
Every permission ChatGPT or Claude can get on your StreamLive Pro account, what each one allows, which tools need it, which you can leave off, and how to change them.
What is MCP (Model Context Protocol)? A plain explanationWhat MCP, the Model Context Protocol, means in plain words: servers, tools, OAuth and scopes, and how ChatGPT and Claude use it to work with StreamLive Pro.
StreamLive Pro MCP tools: full list for ChatGPT and ClaudeAll 24 StreamLive Pro MCP tools that ChatGPT and Claude can use: what each one does, which only read, which change things and which need your approval.
Webhooks for developers: events, signature and deliveryStreamLive Pro webhooks for developers: add an https address in Settings, receive stream.started and other events, and verify the HMAC-SHA256 signature in Node or Python.
Want to try it? 7-day trial, no credit card.
Start free