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-text, and Segment Anything 2 pipelines against a permissionless network of GPU Orchestrators. Two interchangeable endpoints: the community gateway at https://dream-gateway.livepeer.cloud and Livepeer Studio's managed gateway at https://livepeer.studio/api/beta/generate. Fees settle in ETH on Arbitrum One via probabilistic micropayment tickets.

OpenAPI Specification

livepeer-ai-worker-openapi.yml Raw ↑
# !!Auto-generated by 'gen_openapi.py'. DO NOT EDIT!!
openapi: 3.1.0
info:
  title: Livepeer AI Runner
  description: An application to run AI pipelines
  version: 0.0.0
servers:
  - url: https://dream-gateway.livepeer.cloud
    description: Livepeer Cloud Community Gateway
  - url: https://livepeer.studio/api/beta/generate
    description: Livepeer Studio Gateway
paths:
  /text-to-image:
    post:
      tags:
        - generate
      summary: Text To Image
      description: Generate images from text prompts.
      operationId: genTextToImage
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TextToImageParams"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ImageResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: textToImage
  /image-to-image:
    post:
      tags:
        - generate
      summary: Image To Image
      description: Apply image transformations to a provided image.
      operationId: genImageToImage
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_genImageToImage"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ImageResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: imageToImage
  /image-to-video:
    post:
      tags:
        - generate
      summary: Image To Video
      description: Generate a video from a provided image.
      operationId: genImageToVideo
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_genImageToVideo"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VideoResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: imageToVideo
  /upscale:
    post:
      tags:
        - generate
      summary: Upscale
      description: Upscale an image by increasing its resolution.
      operationId: genUpscale
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_genUpscale"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ImageResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: upscale
  /audio-to-text:
    post:
      tags:
        - generate
      summary: Audio To Text
      description: Transcribe audio files to text.
      operationId: genAudioToText
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_genAudioToText"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TextResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "413":
          description: Request Entity Too Large
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: audioToText
  /segment-anything-2:
    post:
      tags:
        - generate
      summary: Segment Anything 2
      description: Segment objects in an image.
      operationId: genSegmentAnything2
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_genSegmentAnything2"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MasksResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: segmentAnything2
  /llm:
    post:
      tags:
        - generate
      summary: LLM
      description: Generate text using a language model.
      operationId: genLLM
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LLMRequest"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LLMResponse"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: llm
  /image-to-text:
    post:
      tags:
        - generate
      summary: Image To Text
      description: Transform image files to text.
      operationId: genImageToText
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_genImageToText"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ImageToTextResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "413":
          description: Request Entity Too Large
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: imageToText
  /live-video-to-video:
    post:
      tags:
        - generate
      summary: Live Video To Video
      description:
        Apply transformations to a live video streamed to the returned
        endpoints.
      operationId: genLiveVideoToVideo
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LiveVideoToVideoParams"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LiveVideoToVideoResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: liveVideoToVideo
  /text-to-speech:
    post:
      tags:
        - generate
      summary: Text To Speech
      description:
        Generate a text-to-speech audio file based on the provided text input
        and speaker description.
      operationId: genTextToSpeech
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TextToSpeechParams"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AudioResponse"
                x-speakeasy-name-override: data
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPError"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      security:
        - HTTPBearer: []
      x-speakeasy-name-override: textToSpeech
  /health:
    get:
      summary: Health
      operationId: health
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HealthCheck"
  /hardware/info:
    get:
      summary: Hardware Info
      operationId: hardware_info
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HardwareInformation"
  /hardware/stats:
    get:
      summary: Hardware Stats
      operationId: hardware_stats
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HardwareStats"
components:
  schemas:
    APIError:
      properties:
        msg:
          type: string
          title: Msg
          description: The error message.
      type: object
      required:
        - msg
      title: APIError
      description: API error response model.
    AudioResponse:
      properties:
        audio:
          allOf:
            - $ref: "#/components/schemas/MediaURL"
          description: The generated audio.
      type: object
      required:
        - audio
      title: AudioResponse
      description: Response model for audio generation.
    Body_genAudioToText:
      properties:
        audio:
          type: string
          format: binary
          title: Audio
          description: Uploaded audio file to be transcribed.
        model_id:
          type: string
          title: Model Id
          description: Hugging Face model ID used for transcription.
          default: ""
        return_timestamps:
          type: string
          title: Return Timestamps
          description:
            "Return timestamps for the transcribed text. Supported values:
            'sentence', 'word', or a string boolean ('true' or 'false'). Default
            is 'true' ('sentence'). 'false' means no timestamps. 'word' means
            word-based timestamps."
          default: "true"
        metadata:
          type: string
          title: Metadata
          description: Additional job information to be passed to the pipeline.
          default: "{}"
      type: object
      required:
        - audio
      title: Body_genAudioToText
    Body_genImageToImage:
      properties:
        prompt:
          type: string
          title: Prompt
          description: Text prompt(s) to guide image generation.
        image:
          type: string
          format: binary
          title: Image
          description: Uploaded image to modify with the pipeline.
        model_id:
          type: string
          title: Model Id
          description: Hugging Face model ID used for image generation.
          default: ""
        loras:
          type: string
          title: Loras
          description:
            'A LoRA (Low-Rank Adaptation) model and its corresponding weight for
            image generation. Example: { "latent-consistency/lcm-lora-sdxl":
            1.0, "nerijs/pixel-art-xl": 1.2}.'
          default: ""
        strength:
          type: number
          title: Strength
          description:
            Degree of transformation applied to the reference image (0 to 1).
          default: 0.8
        guidance_scale:
          type: number
          title: Guidance Scale
          description:
            Encourages model to generate images closely linked to the text
            prompt (higher values may reduce image quality).
          default: 7.5
        image_guidance_scale:
          type: number
          title: Image Guidance Scale
          description:
            Degree to which the generated image is pushed towards the initial
            image.
          default: 1.5
        negative_prompt:
          type: string
          title: Negative Prompt
          description:
            Text prompt(s) to guide what to exclude from image generation.
            Ignored if guidance_scale < 1.
          default: ""
        safety_check:
          type: boolean
          title: Safety Check
          description:
            Perform a safety check to estimate if generated images could be
            offensive or harmful.
          default: true
        seed:
          type: integer
          title: Seed
          description: Seed for random number generation.
        num_inference_steps:
          type: integer
          title: Num Inference Steps
          description:
            Number of denoising steps. More steps usually lead to higher quality
            images but slower inference. Modulated by strength.
          default: 100
        num_images_per_prompt:
          type: integer
          title: Num Images Per Prompt
          description: Number of images to generate per prompt.
          default: 1
      type: object
      required:
        - prompt
        - image
      title: Body_genImageToImage
    Body_genImageToText:
      properties:
        image:
          type: string
          format: binary
          title: Image
          description: Uploaded image to transform with the pipeline.
        prompt:
          type: string
          title: Prompt
          description: Text prompt(s) to guide transformation.
          default: ""
        model_id:
          type: string
          title: Model Id
          description: Hugging Face model ID used for transformation.
          default: ""
      type: object
      required:
        - image
      title: Body_genImageToText
    Body_genImageToVideo:
      properties:
        image:
          type: string
          format: binary
          title: Image
          description: Uploaded image to generate a video from.
        model_id:
          type: string
          title: Model Id
          description: Hugging Face model ID used for video generation.
          default: ""
        height:
          type: integer
          title: Height
          description: The height in pixels of the generated video.
          default: 576
        width:
          type: integer
          title: Width
          description: The width in pixels of the generated video.
          default: 1024
        fps:
          type: integer
          title: Fps
          description: The frames per second of the generated video.
          default: 6
        motion_bucket_id:
          type: integer
          title: Motion Bucket Id
          description:
            Used for conditioning the amount of motion for the generation. The
            higher the number the more motion will be in the video.
          default: 127
        noise_aug_strength:
          type: number
          title: Noise Aug Strength
          description:
            Amount of noise added to the conditioning image. Higher values
            reduce resemblance to the conditioning image and increase motion.
          default: 0.02
        safety_check:
          type: boolean
          title: Safety Check
          description:
            Perform a safety check to estimate if generated images could be
            offensive or harmful.
          default: true
        seed:
          type: integer
          title: Seed
          description: Seed for random number generation.
        num_inference_steps:
          type: integer
          title: Num Inference Steps
          description:
            Number of denoising steps. More steps usually lead to higher quality
            images but slower inference. Modulated by strength.
          default: 25
      type: object
      required:
        - image
      title: Body_genImageToVideo
    Body_genSegmentAnything2:
      properties:
        image:
          type: string
          format: binary
          title: Image
          description: Image to segment.
        model_id:
          type: string
          title: Model Id
          description: Hugging Face model ID used for image generation.
          default: ""
        point_coords:
          type: string
          title: Point Coords
          description:
            Nx2 array of point prompts to the model, where each point is in
            (X,Y) in pixels.
        point_labels:
          type: string
          title: Point Labels
          description:
            Labels for the point prompts, where 1 indicates a foreground point
            and 0 indicates a background point.
        box:
          type: string
          title: Box
          description:
            A length 4 array given as a box prompt to the model, in XYXY format.
        mask_input:
          type: string
          title: Mask Input
          description:
            A low-resolution mask input to the model, typically from a previous
            prediction iteration, with the form 1xHxW (H=W=256 for SAM).
        multimask_output:
          type: boolean
          title: Multimask Output
          description:
            If true, the model will return three masks for ambiguous input
            prompts, often producing better masks than a single prediction.
          default: true
        return_logits:
          type: boolean
          title: Return Logits
          description:
            If true, returns un-thresholded mask logits instead of a binary
            mask.
          default: true
        normalize_coords:
          type: boolean
          title: Normalize Coords
          description:
            If true, the point coordinates will be normalized to the range
            [0,1], with point_coords expected to be with respect to image
            dimensions.
          default: true
      type: object
      required:
        - image
      title: Body_genSegmentAnything2
    Body_genUpscale:
      properties:
        prompt:
          type: string
          title: Prompt
          description: Text prompt(s) to guide upscaled image generation.
        image:
          type: string
          format: binary
          title: Image
          description: Uploaded image to modify with the pipeline.
        model_id:
          type: string
          title: Model Id
          description: Hugging Face model ID used for upscaled image generation.
          default: ""
        safety_check:
          type: boolean
          title: Safety Check
          description:
            Perform a safety check to estimate if generated images could be
            offensive or harmful.
          default: true
        seed:
          type: integer
          title: Seed
          description: Seed for random number generation.
        num_inference_steps:
          type: integer
          title: Num Inference Steps
          description:
            Number of denoising steps. More steps usually lead to higher quality
            images but slower inference. Modulated by strength.
          default: 75
      type: object
      required:
        - prompt
        - image
      title: Body_genUpscale
    Chunk:
      properties:
        timestamp:
          items: {}
          type: array
          title: Timestamp
          description: The timestamp of the chunk.
        text:
          type: string
          title: Text
          description: The text of the chunk.
      type: object
      required:
        - timestamp
        - text
      title: Chunk
      description: A chunk of text with a timestamp.
    GPUComputeInfo:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        memory_total:
          type: integer
          title: Memory Total
        memory_free:
          type: integer
          title: Memory Free
        major:
          type: integer
          title: Major
        minor:
          type: integer
          title: Minor
      type: object
      required:
        - id
        - name
        - memory_total
        - memory_free
        - major
        - minor
      title: GPUComputeInfo
      description: Model for detailed GPU compute information.
    GPUUtilizationInfo:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        memory_total:
          type: integer
          title: Memory Total
        memory_free:
          type: integer
          title: Memory Free
        utilization_compute:
          type: integer
          title: Utilization Compute
        utilization_memory:
          type: integer
          title: Utilization Memory
      type: object
      required:
        - id
        - name
        - memory_total
        - memory_free
        - utilization_compute
        - utilization_memory
      title: GPUUtilizationInfo
      description: Model for GPU utilization statistics.
    HTTPError:
      properties:
        detail:
          allOf:
            - $ref: "#/components/schemas/APIError"
          description: Detailed error information.
      type: object
      required:
        - detail
      title: HTTPError
      description: HTTP error response model.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: "#/components/schemas/ValidationError"
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    HardwareInformation:
      properties:
        pipeline:
          type: string
          title: Pipeline
        model_id:
          type: string
          title: Model Id
        gpu_info:
          additionalProperties:
            $ref: "#/components/schemas/GPUComputeInfo"
          type: object
          title: Gpu Info
      type: object
      required:
        - pipeline
        - model_id
        - gpu_info
      title: HardwareInformation
      description: Response model for GPU information.
    HardwareStats:
      properties:
        pipeline:
          type: string
          title: Pipeline
        model_id:
          type: string
          title: Model Id
        gpu_stats:
          additionalProperties:
            $ref: "#/components/schemas/GPUUtilizationInfo"
          type: object
          title: Gpu Stats
      type: object
      required:
        - pipeline
        - model_id
        - gpu_stats
      title: HardwareStats
      description: Response model for real-time GPU statistics.
    HealthCheck:
      properties:
        status:
          type: string
          enum:
            - OK
            - ERROR
            - IDLE
          title: Status
          description: The health status of the pipeline
      type: object
      required:
        - status
      title: HealthCheck
    ImageResponse:
      properties:
        images:
          items:
            $ref: "#/components/schemas/Media"
          type: array
          title: Images
          description: The generated images.
      type: object
      required:
        - images
      title: ImageResponse
      description: Response model for image generation.
    ImageToTextResponse:
      properties:
        text:
          type: string
          title: Text
          description: The generated text.
      type: object
      required:
        - text
      title: ImageToTextResponse
      description: Response model for text generation.
    LLMChoice:
      properties:
        index:
          type: integer
          title: Index
        finish_reason:
          type: string
          title: Finish Reason
          default: ""
        delta:
          allOf:
            - $ref: "#/components/schemas/LLMMessage"
        message:
          allOf:
            - $ref: "#/components/schemas/LLMMessage"
      type: object
      required:
        - index
      title: LLMChoice
    LLMMessage:
      properties:
        role:
          type: string
          title: Role
        content:
          type: string
          title: Content
      type: object
      required:
        - role
        - content
      title: LLMMessage
    LLMRequest:
      properties:
        messages:
          items:
            $ref: "#/components/schemas/LLMMessage"
          type: array
          title: Messages
        model:
          type: string
          title: Model
          default: ""
        temperature:
          type: number
          title: Temperature
          default: 0.7
        max_tokens:
          type: integer
          title: Max Tokens
          default: 256
        top_p:
          type: number
          title: Top P
          default: 1.0
        top_k:
          type: integer
          title: Top K
          default: -1
        stream:
          type: boolean
          title: Stream
          default: false
      type: object
      required:
        - messages
      title: LLMRequest
    LLMResponse:
      properties:
        id:
          type: string
          title: Id
        model:
          type: string
          title: Model
        created:
          type: integer
          title: Created
        usage:
          $ref: "#/components/schemas/LLMTokenUsage"
        choices:
          items:
            $ref: "#/components/schemas/LLMChoice"
          type: array
          title: Choices
      type: object
      required:
        - id
        - model
        - created
        - usage
        - choices
      title: LLMResponse
    LLMTokenUsage:
      properties:
        prompt_tokens:
          type: integer
          title: Prompt Tokens
        completion_tokens:
          type: integer
       

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/livepeer-com/refs/heads/main/openapi/livepeer-ai-worker-openapi.yml