Submit an on-demand transcoding job through the Livepeer Studio API and track it to completion using the Tasks API.
AI-ready summary (for humans and assistants)
- Use the Studio API base URL:
https://livepeer.studio/api
- Submit jobs with
POST /transcode
- Transcoding is asynchronous; poll
GET /task/{id}
- A successful
POST /transcode returns a task.id
- Final technical accuracy review is required from Rick (TD)
Review status
This quickstart is structurally complete and based on the GitHub-validated Studio OpenAPI spec, but Rick (TD) review is required before final publish for canonical flow accuracy and user-facing defaults.
1. Prerequisites
- A Livepeer API key (backend use only)
curl (and optionally jq)
- Input video accessible over HTTP or a S3-compatible source
- Output storage destination (S3-compatible or web3.storage delegation proof)
2. Base URL and authentication
- Base URL:
https://livepeer.studio/api
- Auth header:
Authorization: Bearer <LIVEPEER_API_KEY>
3. Submit a transcode job
The Studio spec requires:
The example below uses:
- HTTP input URL
- S3-compatible storage output
- HLS + MP4 outputs
Example request body
Example curl request
4. Capture the task ID
Transcoding is asynchronous. The response is a task object. Save the id field and poll the task endpoint.
Example response shape (trimmed):
5. Poll the task status
Use GET /task/{id} until status.phase is completed or failed.
Phases defined in the Studio spec include:
pending
waiting
running
failed
completed
cancelled
6. Verify completion and outputs
When status.phase is completed:
- Confirm the task did not report an
errorMessage
- Inspect task output metadata and/or linked asset IDs
- Verify the output paths you requested under
outputs in your destination storage
7. Common failure modes
401 Unauthorized
- Invalid API key
- Missing/incorrect
Authorization header
422 Validation Error
- Missing required top-level fields (
input, storage, outputs)
- Invalid
input schema (URL vs S3 object mismatch)
- Invalid
profiles shape
Task enters failed
- Check
status.errorMessage
- Verify input URL is accessible to the service
- Verify output storage credentials and bucket permissions
- Re-run with a minimal profile/output combination first
8. Rick (TD) review checklist (blocking before final publish)
- Confirm canonical user-facing transcoding flow for 2026 docs
- Confirm recommended default profile example(s)
- Confirm polling expectations and completion verification guidance
- Confirm deprecated legacy examples should be removed/labeled
- Confirm boundary with realtime APIs (what belongs elsewhere)
9. Next steps
Canonical references (source-of-truth first)
Last modified on May 18, 2026