Livepeer website screenshot

Livepeer

Livepeer is the open, permissionless protocol for video transcoding, streaming, and AI video inference, coordinated on Ethereum mainnet and Arbitrum One via the Livepeer Token (LPT). The company commercializes the network through Livepeer Studio (a managed REST API for live streaming, VOD, multistream, recording, rooms, access control, and AI generate) and the Livepeer AI Network, where any GPU operator can serve text-to-image, image-to-video, live video-to-video, LLM, audio-to-text, text-to-speech, upscale, and segmentation pipelines for fees settled in ETH via probabilistic micropayments. The reference Go implementation (go-livepeer), official SDKs in TypeScript, Python, and Go, the React UI Kit, the AI worker, and the Gateway are all open source under the Livepeer GitHub organization.

3 APIs 18 Features
VideoLive StreamingVideo On DemandAI VideoDecentralized ComputeGPU NetworkEthereumArbitrumWeb3

APIs

Livepeer Studio API

Managed REST API for the Livepeer network. Create and run live streams via RTMP/SRT/WHIP, ingest VOD assets, run transcode tasks, configure multistream destinations, drive WebRT...

Livepeer AI Network

Open AI inference gateway exposing text-to-image, image-to-image, image-to-video, live video-to-video, upscale, audio-to-text, text-to-speech, LLM (OpenAI-compatible), image-to-...

Livepeer Node CLI HTTP API

Local loopback HTTP API exposed by go-livepeer for Orchestrator and Gateway operators. Endpoints cover node status, protocol parameters, registered orchestrators, bond/unbond/re...

Collections

Arazzo Workflows

Livepeer Clip a Livestream

Create a clip from a live playback ID, poll the clip task, fetch the asset.

ARAZZO

Livepeer Enable Recording on a Stream

Create a stream, enable recording via update, and confirm the change.

ARAZZO

Livepeer Import an Asset from a URL

Upload an asset from an external URL, then poll the processing task.

ARAZZO

Livepeer Inspect a Session Recording

Read a stream session and resolve its recording playback info.

ARAZZO

Livepeer Provision a Live Stream

Create a live stream, confirm it exists, and resolve its playback info.

ARAZZO

Livepeer Provision Multistream Restreaming

Create a stream and attach an inline multistream target to restream it.

ARAZZO

Livepeer Register a Stream Webhook

Create a stream then register a webhook scoped to its lifecycle events.

ARAZZO

Livepeer Secure a Stream with a Signing Key

Create a signing key, create a JWT-gated stream, and resolve playback.

ARAZZO

Livepeer Reuse a Standalone Multistream Target

Create a reusable multistream target, then bind it to a new stream by ID.

ARAZZO

Livepeer Run a Transcode Job

Submit a transcode job to S3/web3.storage and poll the task until done.

ARAZZO

Livepeer Upload and Process an Asset

Request a direct upload URL, then poll the asset and task until ready.

ARAZZO

Pricing Plans

Rate Limits

Livepeer Com Rate Limits

8 limits

RATE LIMITS

FinOps

Features

Decentralized GPU network for transcoding + AI inference
LPT token live on Ethereum mainnet and Arbitrum One
Probabilistic micropayment (PM) tickets for sub-cent settlement
Livepeer Studio managed REST API with Bearer auth
Live streaming via RTMP, SRT, and WHIP ingest
Adaptive bitrate HLS + WebRTC playback
Recording, clipping, and on-demand asset hosting
Multistream simulcast to YouTube, Twitch, Facebook, etc.
WebRTC rooms with optional RTMP egress
Token-gated playback via signing keys, JWT, and webhook policies
Webhooks for stream/asset/recording/task lifecycle
AI pipelines (text-to-image, image-to-video, live video-to-video, LLM, etc.)
Two AI gateways (community + Studio beta) interchangeable per request
Official TypeScript, Python (Studio + AI + Gateway), and Go SDKs
React UI Kit (Player, Broadcast) for client embedding
go-livepeer reference node for operators
NAAP plugin platform for the AI Compute Network
Open governance via Livepeer Improvement Proposals (LIPs)

Use Cases

User-generated live streaming platforms (creator economy)
On-demand video platforms with low transcoding cost
Web3 / NFT video drops with on-chain provenance
Multistream restreaming to incumbent social platforms
Real-time video AI transformation (Daydream / live video-to-video)
AI avatars and embodied agents (Embody)
Open streaming infrastructure (Stream.place, Frameworks)
Generative video for marketing, advertising, and entertainment
Realtime sports / security / manufacturing video intelligence
LLM inference on decentralized GPU capacity

Integrations

YouTube, Twitch, Facebook Live (multistream targets)
IPFS / Filecoin (asset storage)
Ethereum Mainnet (LPT, governance)
Arbitrum One (PM tickets, AI fee settlement)
The Graph (subgraph for Livepeer protocol)
OBS, Streamlabs, Larix, Restream (ingest tooling)
OpenAI-compatible LLM clients (via /llm endpoint)
Daydream, Embody, Frameworks, Stream.place, Storyboard (ecosystem apps)

Semantic Vocabularies

Livepeer Com Context

72 classes · 0 properties

JSON-LD

API Governance Rules

Livepeer API Rules

8 rules · 2 errors 4 warnings 2 info

SPECTRAL

Livepeer API Rules

11 rules · 2 errors 6 warnings 3 info

SPECTRAL

JSON Structure

Livepeer Platform Structure

0 properties

JSON STRUCTURE

Livepeer Stream Structure

0 properties

JSON STRUCTURE

Example Payloads

Resources

🔗
PostmanWorkspace
PostmanWorkspace
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Website
Website
🌐
StudioPortal
StudioPortal
🔗
Documentation
Documentation
🔗
APIReference
APIReference
💰
Pricing
Pricing
📰
Blog
Blog
📄
ChangeLog
ChangeLog
🔗
Explorer
Explorer
🔗
Forums
Forums
🔗
RoadMap
RoadMap
🟢
StatusPage
StatusPage
📝
Signup
Signup
🔗
Login
Login
📜
TermsOfService
TermsOfService
📜
PrivacyPolicy
PrivacyPolicy
👥
GitHubOrganization
GitHubOrganization
👥
GitHubRepository
GitHubRepository
👥
GitHubRepository
GitHubRepository
👥
GitHubRepository
GitHubRepository
📦
SDKs
SDKs
📦
TypeScriptSDK
TypeScriptSDK
📦
PythonSDK
PythonSDK
📦
PythonSDK
PythonSDK
📦
PythonSDK
PythonSDK
📦
GoSDK
GoSDK
🔗
UIKit
UIKit
🔗
ReferenceImplementation
ReferenceImplementation
🔗
AIWorker
AIWorker
🔗
Plugin
Plugin
🔗
SmartContracts
SmartContracts
🔗
NetworkExplorer
NetworkExplorer
🔗
TokenContractEthereum
TokenContractEthereum
🔗
TokenContractArbitrum
TokenContractArbitrum
🔗
Discord
Discord
🔗
Twitter
Twitter
👥
YouTube
YouTube
🔗
LinkedIn
LinkedIn
🔗
LlmsText
LlmsText
🔗
LlmsText
LlmsText
🔗
SpectralRuleset
SpectralRuleset
🔗
SpectralRuleset
SpectralRuleset
🔗
Vocabulary
Vocabulary
🔗
JSONLD
JSONLD
🔗
JSONStructure
JSONStructure
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Livepeer API Reference
  version: 1.0.0
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
items:
- info:
    name: stream
    type: folder
  items:
  - info:
      name: Retrieve streams
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/stream
      params:
      - name: streamsonly
        value: ''
        type: query
    docs: Retrieve streams
  - info:
      name: Create a stream
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/stream
      body:
        type: json
        data: '{}'
    docs: 'The only parameter you are required to set is the name of your stream,

      but we also highly recommend that you define transcoding profiles

      parameter that suits your specific broadcasting configuration.

      \

      \

      If you do not define transcoding rendition profiles when creating the

      stream, a default set of profiles will be used. These profiles include

      240p,  360p, 480p and 720p.

      \

      \

      The playback policy is set to public by default for new streams. It can

      also be added upon the creation of a new stream by '
  - info:
      name: Retrieve a stream
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/stream/:id
      params:
      - name: id
        value: ''
        type: path
        description: ID of the stream
    docs: Retrieve a stream
  - info:
      name: Update a stream
      type: http
    http:
      method: PATCH
      url: https://livepeer.studio/api/stream/:id
      params:
      - name: id
        value: ''
        type: path
        description: ID of the stream
      body:
        type: json
        data: '{}'
    docs: Update a stream
  - info:
      name: Delete a stream
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/stream/:id
      params:
      - name: id
        value: ''
        type: path
        description: ID of the stream
    docs: 'This will also suspend any active stream sessions, so make sure to wait

      until the stream has finished. To explicitly interrupt an active

      session, consider instead updating the suspended field in the stream

      using the PATCH stream API.

      '
  - info:
      name: Terminates a live stream
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/stream/:id/terminate
      params:
      - name: id
        value: ''
        type: path
        description: ID of the stream
    docs: '`DELETE /stream/{id}/terminate` can be used to terminate an ongoing

      session on a live stream. Unlike suspending the stream, it allows the

      streamer to restart streaming even immediately, but it will force

      terminate the current session and stop the recording.

      \

      \

      A 204 No Content status response indicates the stream was successfully

      terminated.

      '
  - info:
      name: Start ingest for a pull stream
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/stream/:id/start-pull
      params:
      - name: id
        value: ''
        type: path
        description: ID of the stream
    docs: '`POST /stream/{id}/start-pull` can be used to start ingest for a stream

      configured with a pull source. If the stream has recording configured,

      it will also start recording.

      \

      \

      A 204 No Content status response indicates the stream was successfully

      started.

      '
  - info:
      name: Create a clip
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/clip
      body:
        type: json
        data: '{}'
    docs: Create a clip
  - info:
      name: Retrieve clips of a livestream
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/stream/:id/clips
      params:
      - name: id
        value: ''
        type: path
        description: ID of the parent stream or playbackId of parent stream
    docs: Retrieve clips of a livestream
  - info:
      name: Add a multistream target
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/stream/:id/create-multistream-target
      params:
      - name: id
        value: ''
        type: path
        description: ID of the parent stream
      body:
        type: json
        data: '{}'
    docs: Add a multistream target
  - info:
      name: Remove a multistream target
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/stream/:id/multistream/:targetId
      params:
      - name: id
        value: ''
        type: path
        description: ID of the parent stream
      - name: targetId
        value: ''
        type: path
        description: ID of the multistream target
    docs: Remove a multistream target
- info:
    name: multistream
    type: folder
  items:
  - info:
      name: Retrieve Multistream Targets
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/multistream/target
    docs: Retrieve Multistream Targets
  - info:
      name: Create a multistream target
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/multistream/target
      body:
        type: json
        data: '{}'
    docs: Create a multistream target
  - info:
      name: Retrieve a multistream target
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/multistream/target/:id
      params:
      - name: id
        value: ''
        type: path
        description: ID of the multistream target
    docs: Retrieve a multistream target
  - info:
      name: Update Multistream Target
      type: http
    http:
      method: PATCH
      url: https://livepeer.studio/api/multistream/target/:id
      params:
      - name: id
        value: ''
        type: path
        description: ID of the multistream target
      body:
        type: json
        data: '{}'
    docs: Update Multistream Target
  - info:
      name: Delete a multistream target
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/multistream/target/:id
      params:
      - name: id
        value: ''
        type: path
        description: ID of the multistream target
    docs: 'Make sure to remove any references to the target on existing

      streams before actually deleting it from the API.

      '
- info:
    name: webhook
    type: folder
  items:
  - info:
      name: Retrieve a Webhook
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/webhook
    docs: Retrieve a Webhook
  - info:
      name: Create a webhook
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/webhook
      body:
        type: json
        data: '{}'
    docs: 'To create a new webhook, you need to make an API call with the events you want to listen for and the URL that will
      be called when those events occur.

      '
  - info:
      name: Retrieve a webhook
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/webhook/:id
      params:
      - name: id
        value: ''
        type: path
    docs: Retrieve a webhook
  - info:
      name: Update a webhook
      type: http
    http:
      method: PUT
      url: https://livepeer.studio/api/webhook/:id
      params:
      - name: id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Update a webhook
  - info:
      name: Delete a webhook
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/webhook/:id
      params:
      - name: id
        value: ''
        type: path
    docs: Delete a webhook
  - info:
      name: Retrieve webhook logs
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/webhook/:id/log
      params:
      - name: id
        value: ''
        type: path
    docs: Retrieve webhook logs
  - info:
      name: Retrieve a webhook log
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/webhook/:id/log/:logId
      params:
      - name: id
        value: ''
        type: path
      - name: logId
        value: ''
        type: path
    docs: Retrieve a webhook log
  - info:
      name: Resend a webhook
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/webhook/:id/log/:logId/resend
      params:
      - name: id
        value: ''
        type: path
      - name: logId
        value: ''
        type: path
    docs: 'Use this API to resend the same webhook request. This is useful when

      developing and debugging, allowing you to easily repeat the same webhook

      to check or fix the behaviour in your handler.

      '
- info:
    name: asset
    type: folder
  items:
  - info:
      name: Retrieve assets
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/asset
    docs: Retrieve assets
  - info:
      name: Upload an asset
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/asset/request-upload
      body:
        type: json
        data: '{}'
    docs: 'To upload an asset, your first need to request for a direct upload URL

      and only then actually upload the contents of the asset.

      \

      \

      Once you created a upload link, you have 2 options, resumable or direct

      upload. For a more reliable experience, you should use resumable uploads

      which will work better for users with unreliable or slow network

      connections. If you want a simpler implementation though, you should

      just use a direct upload.



      ## Direct Upload

      For a direct upload, make a PUT request to t'
  - info:
      name: Upload asset via URL
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/asset/upload/url
      body:
        type: json
        data: '{}'
    docs: Upload asset via URL
  - info:
      name: Retrieves an asset
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/asset/:assetId
      params:
      - name: assetId
        value: ''
        type: path
        description: ID of the asset
    docs: Retrieves an asset
  - info:
      name: Patch an asset
      type: http
    http:
      method: PATCH
      url: https://livepeer.studio/api/asset/:assetId
      params:
      - name: assetId
        value: ''
        type: path
        description: ID of the asset
      body:
        type: json
        data: '{}'
    docs: Patch an asset
  - info:
      name: Delete an asset
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/asset/:assetId
      params:
      - name: assetId
        value: ''
        type: path
        description: ID of the asset
    docs: Delete an asset
- info:
    name: session
    type: folder
  items:
  - info:
      name: Retrieve clips of a session
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/session/:id/clips
      params:
      - name: id
        value: ''
        type: path
        description: ID of the parent session
    docs: Retrieve clips of a session
  - info:
      name: Retrieve sessions
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/session
    docs: Retrieve sessions
  - info:
      name: Retrieve a session
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/session/:id
      params:
      - name: id
        value: ''
        type: path
        description: ID of the session
    docs: Retrieve a session
  - info:
      name: Retrieve Recorded Sessions
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/stream/:parentId/sessions
      params:
      - name: parentId
        value: ''
        type: path
        description: ID of the parent stream
      - name: record
        value: ''
        type: query
        description: 'Flag indicating if the response should only include recorded

          sessions

          '
    docs: Retrieve Recorded Sessions
- info:
    name: room
    type: folder
  items:
  - info:
      name: Create a room
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/room
    docs: 'Create a multiparticipant livestreaming room.

      '
  - info:
      name: Retrieve a room
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/room/:id
      params:
      - name: id
        value: ''
        type: path
    docs: Retrieve a room
  - info:
      name: Delete a room
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/room/:id
      params:
      - name: id
        value: ''
        type: path
    docs: Delete a room
  - info:
      name: Start room RTMP egress
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/room/:id/egress
      params:
      - name: id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: 'Create a livestream for your room.

      This allows you to leverage livestreaming features like recording and HLS output.

      '
  - info:
      name: Stop room RTMP egress
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/room/:id/egress
      params:
      - name: id
        value: ''
        type: path
    docs: Stop room RTMP egress
  - info:
      name: Create a room user
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/room/:id/user
      params:
      - name: id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: 'Call this endpoint to add a user to a room, specifying a display name at a minimum.

      The response will contain a joining URL for Livepeer''s default meeting app.

      Alternatively the joining token can be used with a custom app.

      '
  - info:
      name: Get user details
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/room/:id/user/:userId
      params:
      - name: id
        value: ''
        type: path
      - name: userId
        value: ''
        type: path
    docs: Get user details
  - info:
      name: Update a room user
      type: http
    http:
      method: PUT
      url: https://livepeer.studio/api/room/:id/user/:userId
      params:
      - name: id
        value: ''
        type: path
      - name: userId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Update properties for a user.
  - info:
      name: Remove a user from the room
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/room/:id/user/:userId
      params:
      - name: id
        value: ''
        type: path
      - name: userId
        value: ''
        type: path
    docs: Remove a user from the room
- info:
    name: metrics
    type: folder
  items:
  - info:
      name: Query realtime viewership
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/data/views/now
      params:
      - name: playbackId
        value: ''
        type: query
        description: 'The playback ID to filter the query results. This can be a canonical

          playback ID from Livepeer assets or streams, or dStorage identifiers

          for assets

          '
      - name: creatorId
        value: ''
        type: query
        description: The creator ID to filter the query results
      - name: breakdownBy[]
        value: ''
        type: query
        description: 'The list of fields to break down the query results. Specify this

          query-string multiple times to break down by multiple fields.

          '
    docs: 'Requires a private (non-CORS) API key to be used.

      '
  - info:
      name: Query viewership metrics
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/data/views/query
      params:
      - name: playbackId
        value: ''
        type: query
        description: 'The playback ID to filter the query results. This can be a canonical

          playback ID from Livepeer assets or streams, or dStorage identifiers

          for assets

          '
      - name: from
        value: ''
        type: query
        description: Start timestamp for the query range (inclusive)
      - name: to
        value: ''
        type: query
        description: End timestamp for the query range (exclusive)
      - name: timeStep
        value: ''
        type: query
        description: The time step to aggregate viewership metrics by
      - name: assetId
        value: ''
        type: query
        description: The asset ID to filter metrics for
      - name: streamId
        value: ''
        type: query
        description: The stream ID to filter metrics for
      - name: creatorId
        value: ''
        type: query
        description: The creator ID to filter the query results
      - name: breakdownBy[]
        value: ''
        type: query
        description: 'The list of fields to break down the query results. Specify this

          query-string multiple times to break down by multiple fields.

          '
    docs: 'Requires a private (non-CORS) API key to be used.

      '
  - info:
      name: Query creator viewership metrics
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/data/views/query/creator
      params:
      - name: from
        value: ''
        type: query
        description: Start timestamp for the query range (inclusive)
      - name: to
        value: ''
        type: query
        description: End timestamp for the query range (exclusive)
      - name: timeStep
        value: ''
        type: query
        description: The time step to aggregate viewership metrics by
      - name: assetId
        value: ''
        type: query
        description: The asset ID to filter metrics for
      - name: streamId
        value: ''
        type: query
        description: The stream ID to filter metrics for
      - name: creatorId
        value: ''
        type: query
        description: The creator ID to filter the query results
      - name: breakdownBy[]
        value: ''
        type: query
        description: 'The list of fields to break down the query results. Specify this

          query-string multiple times to break down by multiple fields.

          '
    docs: 'Requires a proof of ownership to be sent in the request, which for now is just the assetId or streamId parameters
      (1 of those must be in the query-string).

      '
  - info:
      name: Query public total views metrics
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/data/views/query/total/:playbackId
      params:
      - name: playbackId
        value: ''
        type: path
        description: 'The playback ID to filter the query results. This can be a canonical

          playback ID from Livepeer assets or streams, or dStorage identifiers

          for assets

          '
    docs: 'Allows querying for the public metrics for viewership about a video.

      This can be called from the frontend with a CORS key, or even

      unauthenticated.

      '
  - info:
      name: Query usage metrics
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/data/usage/query
      params:
      - name: from
        value: ''
        type: query
        description: 'Start millis timestamp for the query range (inclusive)

          '
      - name: to
        value: ''
        type: query
        description: 'End millis timestamp for the query range (exclusive)

          '
      - name: timeStep
        value: ''
        type: query
        description: 'The time step to aggregate viewership metrics by

          '
      - name: creatorId
        value: ''
        type: query
        description: 'The creator ID to filter the query results

          '
      - name: breakdownBy[]
        value: ''
        type: query
        description: 'The list of fields to break down the query results. Currently the

          only supported breakdown is by `creatorId`.

          '
    docs: Query usage metrics
- info:
    name: accessControl
    type: folder
  items:
  - info:
      name: Retrieves signing keys
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/access-control/signing-key
    docs: Retrieves signing keys
  - info:
      name: Create a signing key
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/access-control/signing-key
    docs: 'The publicKey is a representation of the public key, encoded as base 64 and is passed as a string, and  the privateKey
      is displayed only on creation. This is the only moment where the client can save the private key, otherwise it will
      be lost. Remember to decode your string when signing JWTs.

      Up to 10 signing keys can be generated, after that you must delete at least one signing key to create a new one.

      '
  - info:
      name: Retrieves a signing key
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/access-control/signing-key/:keyId
      params:
      - name: keyId
        value: ''
        type: path
        description: ID of the signing key
    docs: Retrieves a signing key
  - info:
      name: Update a signing key
      type: http
    http:
      method: PATCH
      url: https://livepeer.studio/api/access-control/signing-key/:keyId
      params:
      - name: keyId
        value: ''
        type: path
        description: ID of the signing key
      body:
        type: json
        data: '{}'
    docs: Update a signing key
  - info:
      name: Delete Signing Key
      type: http
    http:
      method: DELETE
      url: https://livepeer.studio/api/access-control/signing-key/:keyId
      params:
      - name: keyId
        value: ''
        type: path
        description: ID of the signing key
    docs: Delete Signing Key
- info:
    name: task
    type: folder
  items:
  - info:
      name: Retrieve Tasks
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/task
    docs: Retrieve Tasks
  - info:
      name: Retrieve a Task
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/task/:taskId
      params:
      - name: taskId
        value: ''
        type: path
        description: ID of the task
    docs: Retrieve a Task
- info:
    name: transcode
    type: folder
  items:
  - info:
      name: Transcode a video
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/transcode
      body:
        type: json
        data: '{}'
    docs: '`POST /transcode` transcodes a video file and uploads the results to the

      specified storage service.

      \

      \

      Transcoding is asynchronous so you will need to check the status of the

      task in order to determine when transcoding is complete. The `id` field

      in the response is the unique ID for the transcoding `Task`. The task

      status can be queried using the [GET tasks

      endpoint](https://docs.livepeer.org/reference/api/get-tasks):

      \

      \

      When `status.phase` is `completed`,  transcoding will be complete and

      the'
- info:
    name: playback
    type: folder
  items:
  - info:
      name: Retrieve Playback Info
      type: http
    http:
      method: GET
      url: https://livepeer.studio/api/playback/:id
      params:
      - name: id
        value: ''
        type: path
        description: The playback ID from the asset or livestream, e.g. `eaw4nk06ts2d0mzb`.
    docs: Retrieve Playback Info
- info:
    name: generate
    type: folder
  items:
  - info:
      name: Text To Image
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/api/generate/text-to-image
      body:
        type: json
        data: '{}'
    docs: Generate images from text prompts.
  - info:
      name: Image To Image
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/api/generate/image-to-image
      body:
        type: multipart-form
        data: []
    docs: Apply image transformations to a provided image.
  - info:
      name: Image To Video
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/api/generate/image-to-video
      body:
        type: multipart-form
        data: []
    docs: Generate a video from a provided image.
  - info:
      name: Upscale
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/api/generate/upscale
      body:
        type: multipart-form
        data: []
    docs: Upscale an image by increasing its resolution.
  - info:
      name: Audio To Text
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/api/generate/audio-to-text
      body:
        type: multipart-form
        data: []
    docs: Transcribe audio files to text.
  - info:
      name: Segment Anything 2
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/api/generate/segment-anything-2
      body:
        type: multipart-form
        data: []
    docs: Segment objects in an image.
  - info:
      name: LLM
      type: http
    http:
      method: POST
      url: https://livepeer.studio/api/api/generate/llm
      body:
        type: form-urlencoded
        data: []
    docs: Generate text using a language model.
bundled: true