Skip to main content
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:
  • input
  • storage
  • outputs
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