# Streamloop > Live stream pre-recorded video in HDR at up to 4K 60fps, collaborate with multi-user team access, and run 24/7 without OBS or a PC. - [Quickstart](https://streamloop.app/docs/quickstart.md): Go from a video file to a 24/7 live stream in minutes — upload HDR or SDR video, choose quality up to 4K 60fps, connect a destination, and go live. - [Features](https://streamloop.app/docs/features.md): Loop pre-recorded videos and audio as a 24/7 live stream — with HDR, up to 4K 60fps, multi-user team access, and pay-as-you-go pricing. - [How billing works](https://streamloop.app/docs/billing.md): Streamloop is pay-as-you-go — you buy credits and spend them only while a stream is live. No subscription, credits never expire, and free credits to start. - [API tokens and connected apps](https://streamloop.app/docs/account-access.md): Manage personal API tokens and review the OAuth apps and agents that can act on your Streamloop account. - [Reliability](https://streamloop.app/docs/reliability-guarantees.md): How Streamloop keeps your 24/7 stream live — cloud hosting, continuous health monitoring with automatic restart, distributed failover, and encrypted credentials. - [Build and schedule your playlist](https://streamloop.app/docs/build-and-schedule-your-playlist.md): Add videos to a loop, reorder them, play them in order or on shuffle, layer a separate audio track, schedule when the loop goes live, and edit the playlist while you're streaming. - [Custom playlist order](https://streamloop.app/docs/custom-playlist-order.md): Describe in plain language how your playlist should play — pre-rolls, time-of-day stings, weighted rotations — and Streamloop turns it into a sandboxed program that picks the next item on every loop. - [Build a 24/7 music or lofi channel](https://streamloop.app/docs/lofi-music-channel.md): Run a 24/7 lofi, music, or radio stream on YouTube — loop a background video and play a separate audio playlist over it, cheaply and continuously. - [YouTube (managed connection)](https://streamloop.app/docs/platform/youtube.md): Connect your YouTube channel to Streamloop through Google sign-in and let Streamloop create and manage the live broadcast — title, privacy, thumbnail, and schedule. - [YouTube via RTMP stream key](https://streamloop.app/docs/platform/youtube-rtmp.md): Stream a pre-recorded video to YouTube 24/7 using a stream key from YouTube's live control room — manual setup, no account connection. - [Streamloop API](https://streamloop.app/docs/api-reference/introduction.md): Create and control 24/7 loop streams programmatically — over REST, an MCP server for AI agents, or GraphQL. - [Authentication](https://streamloop.app/docs/api-reference/authentication.md): Authenticate Streamloop API requests with an API key or OAuth 2.1, scoped to what each integration needs. - [Conventions](https://streamloop.app/docs/api-reference/conventions.md): Versioning, request and response formats, cursor pagination, and the RFC 7807 error model used across every Streamloop endpoint. - [Quickstart](https://streamloop.app/docs/api-reference/quickstart.md): Go from an API key to a live 24/7 stream with a handful of curl calls. - [Execute up to 20 REST operations.](https://streamloop.app/docs/api-reference/meta/execute-up-to-20-rest-operations.md): Validates the complete envelope before dispatch, then executes operations sequentially through their normal REST routes. Results preserve input order. An operation failure does not stop later operations, and the batch is not transactional. - [This OpenAPI 3.1 document — unauthenticated.](https://streamloop.app/docs/api-reference/meta/this-openapi-31-document-—-unauthenticated.md) - [Service status (liveness/health) — unauthenticated.](https://streamloop.app/docs/api-reference/meta/service-status-livenesshealth-—-unauthenticated.md) - [List invoices](https://streamloop.app/docs/api-reference/billing/list-invoices.md) - [Get billing overview](https://streamloop.app/docs/api-reference/billing/get-billing-overview.md) - [Create a card top-up link](https://streamloop.app/docs/api-reference/billing/create-a-card-top-up-link.md): Purchase credits by dollar amount. amountCents is the dollar amount in cents (e.g. 500 = $5). - [Get usage analytics](https://streamloop.app/docs/api-reference/billing/get-usage-analytics.md) - [List crypto currencies](https://streamloop.app/docs/api-reference/crypto/list-crypto-currencies.md): List all supported cryptocurrencies with live rates. - [Get a crypto deposit address](https://streamloop.app/docs/api-reference/crypto/get-a-crypto-deposit-address.md): Get (or lazily create) a deposit address for the authenticated user. id must be a valid 0xProcessing currency identifier from cryptoCurrencies. - [List destinations](https://streamloop.app/docs/api-reference/destinations/list-destinations.md) - [Create an RTMP destination](https://streamloop.app/docs/api-reference/destinations/create-an-rtmp-destination.md) - [Get your profile](https://streamloop.app/docs/api-reference/account/get-your-profile.md) - [List playlists](https://streamloop.app/docs/api-reference/playlists/list-playlists.md) - [Get a playlist](https://streamloop.app/docs/api-reference/playlists/get-a-playlist.md): Fetches an object given its ID. - [Copy a playlist](https://streamloop.app/docs/api-reference/playlists/copy-a-playlist.md): Spec copy between two playlists the caller owns. Target must be empty. Caller pushes target via stream launch to actually play it. - [Apply playlist operations](https://streamloop.app/docs/api-reference/playlists/apply-playlist-operations.md): Batched spec mutation. Ops apply in order; each sees the state produced by earlier ops. On any validation failure, nothing is written. Does not affect running streams — preparation happens on stream launch. Resources are permanently bound to the workspace that created them and cannot be moved betwee… - [Publish a playlist](https://streamloop.app/docs/api-reference/playlists/publish-a-playlist.md): Publish the draft playlist as the new LIVE snapshot. Always async (ADR 0003): the resolver marks StreamState.processing_state as processing, signals PreparePlaylistWorkflow, and returns. Editor polls Playlist.publishStatus to observe the PREPARING -> IDLE / FAILED transition. Top-level errors carry… - [List streams](https://streamloop.app/docs/api-reference/streams/list-streams.md): List the streams you own. Supply the ids parameter to fetch a specific set; otherwise the full collection is returned, cursor-paginated. - [Create a stream](https://streamloop.app/docs/api-reference/streams/create-a-stream.md) - [Get a stream](https://streamloop.app/docs/api-reference/streams/get-a-stream.md): Fetches an object given its ID. - [Delete a stream](https://streamloop.app/docs/api-reference/streams/delete-a-stream.md) - [Update a stream](https://streamloop.app/docs/api-reference/streams/update-a-stream.md): Update a stream. When `retryMirror: true`, the resolver also writes a fresh MirrorIntent for the latest desired state of this stream's YouTube schedule mirror — used to recover after reauth / quota reset / channel freeing. retryMirror is a sibling argument rather than a field on UpdateStreamInput be… - [Get live stream stats](https://streamloop.app/docs/api-reference/streams/get-live-stream-stats.md): Fetches an object given its ID. - [Check stream readiness](https://streamloop.app/docs/api-reference/streams/check-stream-readiness.md): Runs the same checks as updateStream(status:ACTIVE) without mutating. - [Schedule a stream](https://streamloop.app/docs/api-reference/streams/schedule-a-stream.md): Move the stream into Scheduled with a future start via `streamlifecycle.Transition(_, CmdSchedule{StartAt, EndAt})`. `scheduleEndAt` is optional; open-ended schedules are supported. - [Cancel a stream's schedule](https://streamloop.app/docs/api-reference/streams/cancel-a-streams-schedule.md): Undo a Scheduled stream, returning it to Draft via `streamlifecycle.Transition(_, CmdCancelSchedule)`. - [Start a stream](https://streamloop.app/docs/api-reference/streams/start-a-stream.md): Move the stream into Activating via `streamlifecycle.Transition(_, CmdStart)`. Returns the loaded stream after the lifecycle owner accepted the command. The resolver does not block on the orchestrator/agent observing the change. - [Stop a stream](https://streamloop.app/docs/api-reference/streams/stop-a-stream.md): Move the stream into Stopping via `streamlifecycle.Transition(_, CmdStop)`. Stop is legal from any active branch. - [List uploads](https://streamloop.app/docs/api-reference/uploads/list-uploads.md) - [Create an upload](https://streamloop.app/docs/api-reference/uploads/create-an-upload.md): Creates an upload record for a direct single-PUT transfer. Next, request a presigned URL with POST /uploads/{id}/upload-url, PUT the bytes to it, then mark the upload complete with POST /uploads/{id}/complete. - [Import uploads from a link](https://streamloop.app/docs/api-reference/uploads/import-uploads-from-a-link.md): Confirms asset and quality selections from external-link discovery, starts asynchronous imports, and returns 202 Accepted. Poll GET /uploads/{id} and watch externalSource.state until each upload reaches completed. - [Get an upload](https://streamloop.app/docs/api-reference/uploads/get-an-upload.md): Fetches an object given its ID. - [Delete an upload](https://streamloop.app/docs/api-reference/uploads/delete-an-upload.md) - [Mark an upload complete](https://streamloop.app/docs/api-reference/uploads/mark-an-upload-complete.md) - [Generate a presigned upload URL](https://streamloop.app/docs/api-reference/uploads/generate-a-presigned-upload-url.md) - [MCP server](https://streamloop.app/docs/api-reference/mcp/overview.md): Let AI agents like Claude and ChatGPT run Streamloop as tools — create, control, and monitor streams over the Model Context Protocol. - [MCP tools](https://streamloop.app/docs/api-reference/mcp/tools.md): The 31 Streamloop MCP tools, grouped by domain — what each does and the scope it needs. - [GraphQL API](https://streamloop.app/docs/api-reference/graphql.md): Query Streamloop's GraphQL schema directly for full control over filtering and field selection — the layer the REST API and MCP server are built on. ## OpenAPI Specs - [openapi](https://api.streamloop.app/v1/openapi.json) ## Optional - [Home](https://streamloop.app) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.