openapi: 3.1.0 info: title: Livepeer API Reference accessControl generate API description: 'Welcome to the Livepeer API reference docs. Here you will find all the endpoints exposed on the standard Livepeer API, learn how to use them and what they return. ' version: 1.0.0 servers: - url: https://livepeer.studio/api security: - apiKey: [] tags: - name: generate description: Operations related to AI generate api paths: /api/generate/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: default: description: Error content: application/json: schema: $ref: '#/components/schemas/studio-api-error' '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: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '401': description: Unauthorized content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '422': description: Validation Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/studio-api-error' '500': description: Internal Server Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' x-speakeasy-name-override: textToImage x-codeSamples: - lang: typescript label: genTextToImage source: "import { Livepeer } from \"livepeer\";\n\nconst livepeer = new Livepeer({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await livepeer.generate.textToImage({\n prompt: \"\",\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" /api/generate/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: default: description: Error content: application/json: schema: $ref: '#/components/schemas/studio-api-error' '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: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '401': description: Unauthorized content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '422': description: Validation Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/studio-api-error' '500': description: Internal Server Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' x-speakeasy-name-override: imageToImage x-codeSamples: - lang: typescript label: genImageToImage source: "import { Livepeer } from \"livepeer\";\nimport { openAsBlob } from \"node:fs\";\n\nconst livepeer = new Livepeer({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await livepeer.generate.imageToImage({\n prompt: \"\",\n image: await openAsBlob(\"example.file\"),\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" /api/generate/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: default: description: Error content: application/json: schema: $ref: '#/components/schemas/studio-api-error' '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: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '401': description: Unauthorized content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '422': description: Validation Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/studio-api-error' '500': description: Internal Server Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' x-speakeasy-name-override: imageToVideo x-codeSamples: - lang: typescript label: genImageToVideo source: "import { Livepeer } from \"livepeer\";\nimport { openAsBlob } from \"node:fs\";\n\nconst livepeer = new Livepeer({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await livepeer.generate.imageToVideo({\n image: await openAsBlob(\"example.file\"),\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" /api/generate/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: default: description: Error content: application/json: schema: $ref: '#/components/schemas/studio-api-error' '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: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '401': description: Unauthorized content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '422': description: Validation Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/studio-api-error' '500': description: Internal Server Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' x-speakeasy-name-override: upscale x-codeSamples: - lang: typescript label: genUpscale source: "import { Livepeer } from \"livepeer\";\nimport { openAsBlob } from \"node:fs\";\n\nconst livepeer = new Livepeer({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await livepeer.generate.upscale({\n prompt: \"\",\n image: await openAsBlob(\"example.file\"),\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" /api/generate/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: default: description: Error content: application/json: schema: $ref: '#/components/schemas/studio-api-error' '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: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '401': description: Unauthorized content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '413': description: Request Entity Too Large content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '415': description: Unsupported Media Type content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '422': description: Validation Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/studio-api-error' '500': description: Internal Server Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' x-speakeasy-name-override: audioToText x-codeSamples: - lang: typescript label: genAudioToText source: "import { Livepeer } from \"livepeer\";\nimport { openAsBlob } from \"node:fs\";\n\nconst livepeer = new Livepeer({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await livepeer.generate.audioToText({\n audio: await openAsBlob(\"example.file\"),\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" /api/generate/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: default: description: Error content: application/json: schema: $ref: '#/components/schemas/studio-api-error' '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: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '401': description: Unauthorized content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '422': description: Validation Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/studio-api-error' '500': description: Internal Server Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' x-speakeasy-name-override: segmentAnything2 x-codeSamples: - lang: typescript label: genSegmentAnything2 source: "import { Livepeer } from \"livepeer\";\nimport { openAsBlob } from \"node:fs\";\n\nconst livepeer = new Livepeer({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await livepeer.generate.segmentAnything2({\n image: await openAsBlob(\"example.file\"),\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" /api/generate/llm: post: tags: - generate summary: LLM description: Generate text using a language model. operationId: genLLM requestBody: content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Body_genLLM' required: true responses: default: description: Error content: application/json: schema: $ref: '#/components/schemas/studio-api-error' '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/LLMResponse' '400': description: Bad Request content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '401': description: Unauthorized content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' '422': description: Validation Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPValidationError' - $ref: '#/components/schemas/studio-api-error' '500': description: Internal Server Error content: application/json: schema: oneOf: - $ref: '#/components/schemas/HTTPError' - $ref: '#/components/schemas/studio-api-error' x-speakeasy-name-override: llm x-codeSamples: - lang: typescript label: genLLM source: "import { Livepeer } from \"livepeer\";\n\nconst livepeer = new Livepeer({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await livepeer.generate.llm({\n prompt: \"\",\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" components: schemas: LLMResponse: properties: response: type: string title: Response tokens_used: type: integer title: Tokens Used type: object required: - response - tokens_used title: LLMResponse ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError HTTPError: properties: detail: allOf: - $ref: '#/components/schemas/APIError' description: Detailed error information. type: object required: - detail title: HTTPError description: HTTP error response model. 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. MasksResponse: properties: masks: type: string title: Masks description: The generated masks. scores: type: string title: Scores description: The model's confidence scores for each generated mask. logits: type: string title: Logits description: The raw, unnormalized predictions (logits) for the masks. type: object required: - masks - scores - logits title: MasksResponse description: Response model for object segmentation. VideoResponse: properties: images: items: $ref: '#/components/schemas/Media' type: array title: Images description: The generated images. type: object required: - images title: VideoResponse description: Response model for image generation. Media: properties: url: type: string title: Url description: The URL where the media can be accessed. seed: type: integer title: Seed description: The seed used to generate the media. nsfw: type: boolean title: Nsfw description: Whether the media was flagged as NSFW. type: object required: - url - seed - nsfw title: Media description: A media object containing information about the generated media. 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: stabilityai/stable-diffusion-x4-upscaler 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 additionalProperties: false TextToImageParams: properties: model_id: type: string title: Model Id description: Hugging Face model ID used for image generation. default: SG161222/RealVisXL_V4.0_Lightning 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: '' prompt: type: string title: Prompt description: Text prompt(s) to guide image generation. Separate multiple prompts with '|' if supported by the model. height: type: integer title: Height description: The height in pixels of the generated image. default: 576 width: type: integer title: Width description: The width in pixels of the generated image. default: 1024 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 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: 50 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 title: TextToImageParams additionalProperties: false Body_genLLM: properties: prompt: type: string title: Prompt model_id: type: string title: Model Id default: meta-llama/Meta-Llama-3.1-8B-Instruct system_msg: type: string title: System Msg default: '' temperature: type: number title: Temperature default: 0.7 max_tokens: type: integer title: Max Tokens default: 256 history: type: string title: History default: '[]' stream: type: boolean title: Stream default: false type: object required: - prompt title: Body_genLLM additionalProperties: false 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: timbrooks/instruct-pix2pix 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 additionalProperties: false studio-api-error: type: object properties: errors: type: array minItems: 1 items: type: string 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: openai/whisper-large-v3 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' type: object required: - audio title: Body_genAudioToText additionalProperties: false 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: stabilityai/stable-video-diffusion-img2vid-xt-1-1 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 additionalProperties: false 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: facebook/sam2-hiera-large 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 additionalProperties: false HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError 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. APIError: properties: msg: type: string title: Msg description: The error message. type: object required: - msg title: APIError description: API error response model. TextResponse: properties: text: type: string title: Text description: The generated text. chunks: items: $ref: '#/components/schemas/Chunk' type: array title: Chunks description: The generated text chunks. type: object required: - text - chunks title: TextResponse description: Response model for text generation. securitySchemes: apiKey: type: http scheme: bearer bearerFormat: JWT HTTPBearer: type: http scheme: bearer