### GET /v1/renders/{render_id}/download Source: https://lipdub.readme.io/reference/download_render_v1_renders__render_id__download_get Get a signed download URL for a finished render. Provide the render ID as a path parameter. Returns a data object with the download URL, or a 400 error if the render is not finished. ```APIDOC ## GET /v1/renders/{render_id}/download ### Description Get a signed download URL for a finished render. ### Method GET ### Endpoint /v1/renders/{render_id}/download ### Parameters #### Path Parameters - **render_id** (integer) - Required - Identifier of the render to download ### Response #### Success Response (200) - **data** (object) - Contains the download URL #### Response Example { "data": { "download_url": "string" } } #### Error Response (400) - The app returns 400 if the render is not finished. #### Validation Error (422) - Validation error response schema. ``` -------------------------------- ### GET /api/v1/projects Source: https://lipdub.readme.io/reference/get_projects_v1_projects_get Retrieves a paginated list of projects. Supports optional page and page_size query parameters. ```APIDOC ## GET /api/v1/projects ### Description Retrieves a list of projects. The response includes project details and supports pagination via the `page` and `page_size` query parameters. ### Method GET ### Endpoint /api/v1/projects ### Parameters #### Query Parameters - **page** (integer) - Optional - Page number for pagination. - **page_size** (integer) - Optional - Number of items per page. ### Response #### Success Response (200) Returns a list of projects with the following structure: - **data** (array of ProjectModel) - List of project objects. - **count** (integer) - Total number of projects. Each ProjectModel contains: - **project_id** (integer) - Unique identifier for the project. - **projects_tenant_id** (integer) - Tenant identifier. - **projects_user_id** (integer) - User identifier. - **project_name** (string) - Name of the project. - **user_email** (string) - Email of the user associated with the project. - **created_at** (string, date-time) - Creation timestamp. - **updated_at** (string, date-time or null) - Last update timestamp. - **dub_only** (boolean) - Indicates if the project is dub-only. - **source_language** (LanguageModel) - Source language details. - **project_identity_type** (string) - Type of project identity. - **language_project_links** (array of LanguageProjectLinkModel or null) - Links to languages. #### Response Example { "data": [ { "project_id": 1, "projects_tenant_id": 1, "projects_user_id": 1, "project_name": "Example Project", "user_email": "user@example.com", "created_at": "2023-01-01T00:00:00Z", "updated_at": null, "dub_only": false, "source_language": { "language_id": 1, "name": "English", "supported": true }, "project_identity_type": "standard", "language_project_links": null } ], "count": 1 } #### Error Response (422) Validation error if query parameters are invalid. ``` -------------------------------- ### OpenAPI definition for GET /v1/renders Source: https://lipdub.readme.io/reference/get_renders_v1_renders_get OpenAPI 3.1.0 definition for the GET /v1/renders endpoint. Use it to understand the request parameters (project_id, shot_id, dub_id, status, page, page_size) and the expected responses (200 with GetRendersResponse, 422 with HTTPValidationError). Requires APIKeyHeader security. ```json { "openapi": "3.1.0", "info": { "title": "LipDub API", "description": "\n## Welcome to the LipDub API.\nThrough this API we want to enable you to generate your own Lipdub in conjunction with the App.\n\n**Please Note**\nThis API currently only supports single actor videos.\n### Getting Started\n- #### Standard Method\n To begin using the standard API method, you must first train the actors you want to use in the App.\n\n 1. Create a project\n 2. Create a scene\n 3. Upload a video\n 4. Label the actors in the video\n 5. Train the actors\n\n Once an actor has been trained on a video, you can then begin using this API to generate a LipDub.\n\n- #### Simplified Method\n We now offer a streamlined approach to creating LipDubs:\n\n 1. Call the `/v1/video` endpoint with a POST request.\n\n 2. This will return:\n - `video_id`: Unique identifier for your uploaded video\n - `upload_url`: URL to upload your video file\n - `success_url`: URL to call when upload succeeds\n - `failure_url`: URL to call when upload fails\n - `project_id`: Automatically created project ID\n - `scene_id`: Automatically created scene ID\n - `actor_id`: Automatically created actor ID\n\n 3. After uploading your video to the `upload_url`:\n - If successful: Call the `success_url`\n - If failed: Call the `failure_url`\n\n When the success callback is triggered, your video will automatically be validated, processed, and trained for dubbing. The success callback response will include a `shot_id` which you'll use to monitor progress and generate LipDubs.\n\n 4. Call the `/v1/shots/{shot_id}/status` with the `shot_id` to check the status of processing and training.\n\n### Upload Audio\nStart by uploading the audio you want to use for the LipDub.\n1. Call the `/v1/audio` endpoint. This will return an `upload_url` which you will use to upload the audio file.\n2. Once audio has been uploaded (or failed), you must use the success or failure callbacks provided in the previous\nresponse.\n\n**Keep track of the `audio_id` returned in the response. This will be used later when generating a result**\n\n### Generate a LipDub\nCall the `/v1/shots/{shot_id}/generate` endpoint using the `audio_id` from the previous step.\n\n**Tip:** You can use the `/v1/shots` endpoint to get a list of all shots and their IDs.\n\n**DEPRECATED:** The `maintain_expression` parameter is deprecated and no longer has any effect.\nOnce you have called the generate endpoint, you will receive a `generate_id`.\nUse this to check the status of the job as well as download the result.\n", "version": "0.0.4" }, "paths": { "/v1/renders": { "get": { "tags": [ "render" ], "summary": "Get Renders", "description": "Get a list of renders with optional filtering.\n\nArgs:\n project_id: Filter by project ID\n shot_id: Filter by shot/input video ID\n dub_id: Filter by dubbing file ID\n status: Filter by job status\n page: Page number for pagination (starts at 1)\n page_size: Number of items per page (max 1000)\n renders_resource: Injected renders resource dependency\n\nReturns:\n Dict containing 'data' (list of renders) and 'count' (total number)", "operationId": "get_renders_v1_renders_get", "security": [ { "APIKeyHeader": [] } ], "parameters": [ { "name": "project_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Project Id" } }, { "name": "shot_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Shot Id" } }, { "name": "dub_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Dub Id" } }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Status" } }, { "name": "page", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetRendersResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } } } } ``` -------------------------------- ### OpenAPI definition for Get Audio Status Source: https://lipdub.readme.io/reference/get_audio_status_v1_audio_status__audio_id__get The OpenAPI specification for the LipDub API, specifically detailing the /v1/audio/status/{audio_id} GET endpoint. ```json { "openapi": "3.1.0", "info": { "title": "LipDub API", "description": "\n## Welcome to the LipDub API.\nThrough this API we want to enable you to generate your own Lipdub in conjunction with the App.\n\n**Please Note**\nThis API currently only supports single actor videos.\n### Getting Started\n- #### Standard Method\n To begin using the standard API method, you must first train the actors you want to use in the App.\n\n 1. Create a project\n 2. Create a scene\n 3. Upload a video\n 4. Label the actors in the video\n 5. Train the actors\n\n Once an actor has been trained on a video, you can then begin using this API to generate a LipDub.\n\n- #### Simplified Method\n We now offer a streamlined approach to creating LipDubs:\n\n 1. Call the `/v1/video` endpoint with a POST request.\n\n 2. This will return:\n - `video_id`: Unique identifier for your uploaded video\n - `upload_url`: URL to upload your video file\n - `success_url`: URL to call when upload succeeds\n - `failure_url`: URL to call when upload fails\n - `project_id`: Automatically created project ID\n - `scene_id`: Automatically created scene ID\n - `actor_id`: Automatically created actor ID\n\n 3. After uploading your video to the `upload_url`:\n - If successful: Call the `success_url`\n - If failed: Call the `failure_url`\n\n When the success callback is triggered, your video will automatically be validated, processed, and trained for dubbing. The success callback response will include a `shot_id` which you'll use to monitor progress and generate LipDubs.\n\n 4. Call the `/v1/shots/{shot_id}/status` with the `shot_id` to check the status of processing and training.\n\n### Upload Audio\nStart by uploading the audio you want to use for the LipDub.\n1. Call the `/v1/audio` endpoint. This will return an `upload_url` which you will use to upload the audio file.\n2. Once audio has been uploaded (or failed), you must use the success or failure callbacks provided in the previous\nresponse.\n\n**Keep track of the `audio_id` returned in the response. This will be used later when generating a result**\n\n### Generate a LipDub\nCall the `/v1/shots/{shot_id}/generate` endpoint using the `audio_id` from the previous step.\n\n**Tip:** You can use the `/v1/shots` endpoint to get a list of all shots and their IDs.\n\n**DEPRECATED:** The `maintain_expression` parameter is deprecated and no longer has any effect.\nOnce you have called the generate endpoint, you will receive a `generate_id`.\nUse this to check the status of the job as well as download the result.\n", "version": "0.0.4" }, "paths": { "/v1/audio/status/{audio_id}": { "get": { "tags": [ "audio" ], "summary": "Get Audio Status", "description": "Get the status of an audio file upload\n\n Args:\n audio_id (str): The audio file id\n\n Returns:\n Dict[str, Any]: The response from the request", "operationId": "get_audio_status_v1_audio_status__audio_id__get", "security": [ { "APIKeyHeader": [] } ], "parameters": [ { "name": "audio_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Audio Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response_AudioStatusModel_" } } } }, "422": { "description": "Validation Errors", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } } } } } }, "components": { "schemas": { "AudioStatusModel": { "properties": { "audio_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Audio Id" }, "upload_status": { "anyOf": [ { "type": "string" ``` -------------------------------- ### Example Full Request Source: https://lipdub.readme.io/reference/methods-to-generate-new-videos A full request combining multiple features: loop_count, start_frame, segments, output_quality, and callback_url. Use this as a template for a complete render request. ```json { "input_video": "input.mp4", "loop_count": 2, "start_frame": 100, "segments": [{"start": 20, "end": 40}], "output_quality": "1080p", "callback_url": "https://yourdomain.com/lipdub/notify" } ``` -------------------------------- ### GET /v1/shots Source: https://lipdub.readme.io/reference/get_shots_v1_shots_get Get a list of shots with optional filtering and pagination. Supports filtering by project ID and job status, with pagination controls. ```APIDOC ## GET /v1/shots ### Description Get a list of shots with optional filtering and pagination. ### Method GET ### Endpoint /v1/shots ### Parameters #### Query Parameters - **project_id** (integer) - Optional - Filter by project ID - **status** (string) - Optional - Filter by job status (defaults to finished shots when omitted) - **page** (integer) - Optional - Page number for pagination (starts at 1) - **page_size** (integer) - Optional - Number of items per page (max 1000) ### Response #### Success Response (200) - **data** (array) - List of shots - **count** (integer) - Total matching shots #### Response Example { "data": [], "count": 0 } ``` -------------------------------- ### LipDub2 One-Call Render with model_type lipdub2 Source: https://lipdub.readme.io/reference/methods-to-generate-new-videos LipDub2 (LTX2) one-call render example. Requires model_type "lipdub2" and output_filename; provide either video_id or video_url, and either audio_id or audio_url. callback_url is optional. ```json { "model_type": "lipdub2", "output_filename": "my_render.mp4", "video_id": 4056, "audio_id": "dadddd0a-2d89-4749-876f-21a483af6965" } ``` -------------------------------- ### Choose Output Video Quality with output_quality Source: https://lipdub.readme.io/reference/methods-to-generate-new-videos Sets output_quality to "720p" for the output video. Additional optional parameters include bitrate and codec. ```json { "input_video": "input.mp4", "output_quality": "720p" } ``` -------------------------------- ### GET /v1/audio/status/{audio_id} Source: https://lipdub.readme.io/reference/get_audio_status_v1_audio_status__audio_id__get Get the status of an audio file upload. Provide the audio_id as a path parameter to retrieve the current upload status. ```APIDOC ## GET /v1/audio/status/{audio_id} ### Description Get the status of an audio file upload. ### Method GET ### Endpoint /v1/audio/status/{audio_id} ### Parameters #### Path Parameters - **audio_id** (string) - Required - The audio file id ### Response #### Success Response (200) - **audio_id** (string or null) - The audio file id - **upload_status** (string) - The upload status of the audio file #### Response Example { "audio_id": "string", "upload_status": "string" } #### Error Response (422) Validation Errors ``` -------------------------------- ### GET /v1/shots/{shot_id}/actors Source: https://lipdub.readme.io/reference/get_shot_actors_v1_shots__shot_id__actors_get Get the actors for a shot. This endpoint requires a shot_id path parameter and returns a list of actors with a count. ```APIDOC ## GET /v1/shots/{shot_id}/actors ### Description Get the actors for a shot. ### Method GET ### Endpoint /v1/shots/{shot_id}/actors ### Parameters #### Path Parameters - **shot_id** (integer) - Required - The ID of the shot. ### Response #### Success Response (200) - **data** (array of ShotActorResponse) - List of actors for the shot. - **count** (integer) - Number of actors. #### Response Example { "data": [ { "actor_id": 1 } ], "count": 1 } #### Error Response (422) Validation error response. ``` -------------------------------- ### POST /v1/renders Source: https://lipdub.readme.io/reference/create_render_v1_renders_post Creates a render directly from provided assets. The request body must contain exactly one of video_id or video_url, and exactly one of audio_id or audio_url. The response is either synchronous (201) with generate_id and credit, or asynchronous (202) with tracking_id. ```APIDOC ## POST /v1/renders ### Description Create a render directly from provided assets (no preprocessing/training). Each side is either a pre-ingested id or a source URL (exactly one per side). When both sides are ids the render is created and dispatched synchronously (201 {generate_id, credit}). When either side is a URL the assets are ingested asynchronously and the render fires once both downloads complete (202 {tracking_id}); poll GET /v1/renders/track/{tracking_id}. ### Method POST ### Endpoint /v1/renders ### Parameters #### Request Body - **video_id** (string) - Optional - Pre-ingested video id. Exactly one of video_id or video_url must be provided. - **video_url** (string) - Optional - Source URL for video. Exactly one of video_id or video_url must be provided. - **audio_id** (string) - Optional - Pre-ingested audio id. Exactly one of audio_id or audio_url must be provided. - **audio_url** (string) - Optional - Source URL for audio. Exactly one of audio_id or audio_url must be provided. - **output_filename** (string) - Optional - Output filename for the render. - **callback_url** (string) - Optional - Callback URL for the render. ### Request Example { "video_id": "string", "video_url": "string", "audio_id": "string", "audio_url": "string", "output_filename": "string", "callback_url": "string" } ### Response #### Success Response (201) - **data** (object) - Contains generate_id and credit. - **generate_id** (string) - Identifier for the generated render. - **credit** (number) - Credit used for the render. #### Response Example (201) { "data": { "generate_id": "string", "credit": 0 } } #### Success Response (202) - **data** (object) - Contains tracking_id. - **tracking_id** (string) - Identifier for tracking the asynchronous render. #### Response Example (202) { "data": { "tracking_id": "string" } } ``` -------------------------------- ### OpenAPI Definition for Get Direct Render Source: https://lipdub.readme.io/reference/get_direct_render_v1_renders_track__tracking_id__get The OpenAPI specification defining the GET /v1/renders/track/{tracking_id} endpoint, including its parameters and response structure. ```json { "openapi": "3.1.0", "info": { "title": "LipDub API", "description": "\n## Welcome to the LipDub API.\nThrough this API we want to enable you to generate your own Lipdub in conjunction with the App.\n\n**Please Note**\nThis API currently only supports single actor videos.\n### Getting Started\n- #### Standard Method\n To begin using the standard API method, you must first train the actors you want to use in the App.\n\n 1. Create a project\n 2. Create a scene\n 3. Upload a video\n 4. Label the actors in the video\n 5. Train the actors\n\n Once an actor has been trained on a video, you can then begin using this API to generate a LipDub.\n\n- #### Simplified Method\n We now offer a streamlined approach to creating LipDubs:\n\n 1. Call the `/v1/video` endpoint with a POST request.\n\n 2. This will return:\n - `video_id`: Unique identifier for your uploaded video\n - `upload_url`: URL to upload your video file\n - `success_url`: URL to call when upload succeeds\n - `failure_url`: URL to call when upload fails\n - `project_id`: Automatically created project ID\n - `scene_id`: Automatically created scene ID\n - `actor_id`: Automatically created actor ID\n\n 3. After uploading your video to the `upload_url`:\n - If successful: Call the `success_url`\n - If failed: Call the `failure_url`\n\n When the success callback is triggered, your video will automatically be validated, processed, and trained for dubbing. The success callback response will include a `shot_id` which you'll use to monitor progress and generate LipDubs.\n\n 4. Call the `/v1/shots/{shot_id}/status` with the `shot_id` to check the status of processing and training.\n\n### Upload Audio\nStart by uploading the audio you want to use for the LipDub.\n1. Call the `/v1/audio` endpoint. This will return an `upload_url` which you will use to upload the audio file.\n2. Once audio has been uploaded (or failed), you must use the success or failure callbacks provided in the previous\nresponse.\n\n**Keep track of the `audio_id` returned in the response. This will be used later when generating a result**\n\n### Generate a LipDub\nCall the `/v1/shots/{shot_id}/generate` endpoint using the `audio_id` from the previous step.\n\n**Tip:** You can use the `/v1/shots` endpoint to get a list of all shots and their IDs.\n\n**DEPRECATED:** The `maintain_expression` parameter is deprecated and no longer has any effect.\nOnce you have called the generate endpoint, you will receive a `generate_id`.\nUse this to check the status of the job as well as download the result.\n", "version": "0.0.4" }, "paths": { "/v1/renders/track/{tracking_id}": { "get": { "tags": [ "render" ], "summary": "Get Direct Render", "description": "Get the status of an async one-call LipDub2 generation.\n\n Args:\n tracking_id: The tracking id returned by POST /v1/renders (async case)\n\n Returns:\n Dict containing 'data' ({tracking_id, status, generate_id, failure_reason}). `generate_id` is\n set once the render is dispatched; use it with GET /v1/renders/{generate_id}/download.", "operationId": "get_direct_render_v1_renders_track__tracking_id__get", "security": [ { "APIKeyHeader": [] } ], "parameters": [ { "name": "tracking_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Tracking ID", "description": "The tracking id of the generation request" }, "description": "The tracking id of the generation request" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response_DirectRenderStatusModel_" } } } }, "422": { "description": "Validation Errors", "content": { "application/json": { "schema": { ``` -------------------------------- ### POST /v1/renders Source: https://lipdub.readme.io/reference/create_render_v1_renders_post Creates a render directly from provided assets. Each side (video and audio) must be provided as either a pre-ingested ID or a source URL, exactly one per side. Returns 201 with render details if both sides are IDs, or 202 with a tracking ID if any URL is provided. ```APIDOC ## POST /v1/renders ### Description Creates a render directly from provided assets (video and audio) without preprocessing. Each side must be provided as either a pre-ingested ID or a source URL, exactly one per side. If both sides are IDs, the render is created and dispatched synchronously. If either side is a URL, assets are ingested asynchronously and a tracking ID is returned for polling. ### Method POST ### Endpoint /v1/renders ### Parameters #### Request Body - **video_id** (integer, nullable) - Optional - Shot id of an already-ingested reference video. - **video_url** (string, nullable) - Optional - Source URL of a reference video to ingest. - **audio_id** (string, nullable) - Optional - Upload id of an already-uploaded target audio. - **audio_url** (string, nullable) - Optional - Source URL of a target audio to ingest. - **output_filename** (string) - Required - Output filename for the render. - **model_type** (string) - Optional - Model type, default is "lipdub2". - **callback_url** (string, nullable, maxLength 2048) - Optional - HTTPS URL to receive a POST request when rendering is complete. ### Request Example { "video_id": 123, "audio_id": "audio-upload-id", "output_filename": "output.mp4", "model_type": "lipdub2", "callback_url": "https://example.com/callback" } ### Response #### Success Response (201) - **generate_id** (integer) - ID of the generated render. - **credit** (object) - Credit balance information. - **balance** (number) - Current credit balance. - **credits_tenant_id** (integer) - Tenant ID for credits. #### Response Example (201) { "generate_id": 456, "credit": { "balance": 100.5, "credits_tenant_id": 789 } } #### Success Response (202) - **tracking_id** (string) - Tracking ID to poll for status via GET /v1/renders/track/{tracking_id}. #### Response Example (202) { "tracking_id": "track-abc123" } #### Error Response (422) - **Validation Errors** - Details about validation failures. #### Response Example (422) { "detail": [ { "loc": ["body", "output_filename"], "msg": "field required", "type": "value_error.missing" } ] } ``` -------------------------------- ### POST /v1/renders (LipDub2) Source: https://lipdub.readme.io/reference/methods-to-generate-new-videos Create a render in a single API call using the LipDub2 (LTX2) generation-only model. Provide each side as either an already-uploaded id or a source URL. Returns a 201 with generate_id if both sides are ids, or a 202 with tracking_id if either side is a URL. ```APIDOC ## [POST] /v1/renders ### Description Create a render in a single API call using the LipDub2 (LTX2) generation-only model. No training or preprocessing required. ### Method POST ### Endpoint /v1/renders ### Parameters #### Request Body - **model_type** (string, required) - must be "lipdub2" - **output_filename** (string, required) - desired output file name - **video_id** (int, optional) - reference video ID (provide video_id or video_url, but not both) - **video_url** (string, optional) - source URL for reference video (provide video_id or video_url, but not both) - **audio_id** (string, optional) - target audio ID (provide audio_id or audio_url, but not both) - **audio_url** (string, optional) - source URL for target audio (provide audio_id or audio_url, but not both) - **callback_url** (string, optional) - HTTPS URL to be notified on completion ### Request Example ```json { "model_type": "lipdub2", "output_filename": "my_render.mp4", "video_id": 4056, "audio_id": "dadddd0a-2d89-4749-876f-21a483af6965" } ``` ### Response #### Success Response (201) - When both sides are IDs - **data.generate_id** - the generation identifier - **data.credit** - credit usage information #### Success Response (202) - When either side is a URL - **data.tracking_id** - the tracking identifier to poll for status #### Response Example (201) ```json { "data": { "generate_id": "generated_id_here", "credit": "credit_here" } } ``` #### Response Example (202) ```json { "data": { "tracking_id": "tracking_id_here" } } ``` ``` -------------------------------- ### OpenAPI definition for Get a shot Source: https://lipdub.readme.io/reference/get_shot_v1_shots__shot_id__get The OpenAPI specification defining the GET /v1/shots/{shot_id} endpoint, including parameters, security requirements, and response schemas. ```json { "openapi": "3.1.0", "info": { "title": "LipDub API", "description": "\n## Welcome to the LipDub API.\nThrough this API we want to enable you to generate your own Lipdub in conjunction with the App.\n\n**Please Note**\nThis API currently only supports single actor videos.\n### Getting Started\n- #### Standard Method\n To begin using the standard API method, you must first train the actors you want to use in the App.\n\n 1. Create a project\n 2. Create a scene\n 3. Upload a video\n 4. Label the actors in the video\n 5. Train the actors\n\n Once an actor has been trained on a video, you can then begin using this API to generate a LipDub.\n\n- #### Simplified Method\n We now offer a streamlined approach to creating LipDubs:\n\n 1. Call the `/v1/video` endpoint with a POST request.\n\n 2. This will return:\n - `video_id`: Unique identifier for your uploaded video\n - `upload_url`: URL to upload your video file\n - `success_url`: URL to call when upload succeeds\n - `failure_url`: URL to call when upload fails\n - `project_id`: Automatically created project ID\n - `scene_id`: Automatically created scene ID\n - `actor_id`: Automatically created actor ID\n\n 3. After uploading your video to the `upload_url`:\n - If successful: Call the `success_url`\n - If failed: Call the `failure_url`\n\n When the success callback is triggered, your video will automatically be validated, processed, and trained for dubbing. The success callback response will include a `shot_id` which you'll use to monitor progress and generate LipDubs.\n\n 4. Call the `/v1/shots/{shot_id}/status` with the `shot_id` to check the status of processing and training.\n\n### Upload Audio\nStart by uploading the audio you want to use for the LipDub.\n1. Call the `/v1/audio` endpoint. This will return an `upload_url` which you will use to upload the audio file.\n2. Once audio has been uploaded (or failed), you must use the success or failure callbacks provided in the previous\nresponse.\n\n**Keep track of the `audio_id` returned in the response. This will be used later when generating a result**\n\n### Generate a LipDub\nCall the `/v1/shots/{shot_id}/generate` endpoint using the `audio_id` from the previous step.\n\n**Tip:** You can use the `/v1/shots` endpoint to get a list of all shots and their IDs.\n\n**DEPRECATED:** The `maintain_expression` parameter is deprecated and no longer has any effect.\nOnce you have called the generate endpoint, you will receive a `generate_id`.\nUse this to check the status of the job as well as download the result.\n", "version": "0.0.4" }, "paths": { "/v1/shots/{shot_id}": { "get": { "tags": [ "shots" ], "summary": "Get a shot", "description": "Returns a single shot by id.", "operationId": "get_shot_v1_shots__shot_id__get", "security": [ { "APIKeyHeader": [] } ], "parameters": [ { "name": "shot_id", "in": "path", "required": true, "schema": { "type": "integer", "minimum": 1, "title": "The shot ID" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Response_ShotModel_" } } } }, "404": { "description": "Shot not found or not accessible for this API key" }, "422": { "description": "Validation Errors", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } } } } } }, "components": { "schemas": { "Response_ShotModel_": { "properties": { "data": { "$ref": "#/components/schemas/ShotModel" } }, "type": "object", "required": [ "data" ], "title": "Response[ShotModel]" }, "ShotModel": { "properties": { "shot_id": { "type": "integer", "title": "Shot Id" }, "shot_label": { "type": "string", "title": "Shot Label" }, "shot_project_id": { ``` -------------------------------- ### GET /v1/renders/{render_id}/status Source: https://lipdub.readme.io/reference/get_render_status_v1_renders__render_id__status_get Get the status of a single render by id. The render_id is provided as a path parameter. Returns a dictionary containing the render status. ```APIDOC ## GET /v1/renders/{render_id}/status ### Description Get the status of a single render by id. ### Method GET ### Endpoint /v1/renders/{render_id}/status ### Parameters #### Path Parameters - **render_id** (integer) - Required - Identifier of the render to check status for ### Response #### Success Response (200) - **status** (string) - The status of the render #### Response Example { "status": "completed" } #### Error Response (422) Validation Errors ``` -------------------------------- ### Start Frame Index with start_frame Source: https://lipdub.readme.io/reference/methods-to-generate-new-videos Sets start_frame to 150 to begin dubbing or processing from that specific frame. Useful for precise synchronization or cropping. ```json { "input_video": "input.mp4", "start_frame": 150 } ``` -------------------------------- ### POST /v1/audio Source: https://lipdub.readme.io/reference/post_audio_v1_audio_post Creates an audio file used for lipdubbing. After calling this endpoint, make a PUT request to the returned upload_url. Once uploaded, make a post request to either the Success or Failure endpoint with the audio_id returned in the response. ```APIDOC ## POST /v1/audio ### Description Create an audio file used for lipdubbing. After this endpoint is called, make a `PUT` request to the `upload_url` returned in the response. Once uploaded, make a post request to either the Success or Failure endpoint with the `audio_id` returned in the response. ### Method POST ### Endpoint /v1/audio ### Parameters #### Request Body - **add_audio** (AddAudioModel) - Required - The audio file to be uploaded ### Request Example ```json { "add_audio": { "file_name": "string", "content_type": "string" } } ``` ### Response #### Success Response (201) - **upload_url** (string) - URL to upload the audio file - **audio_id** (string) - Unique identifier for the audio file - **success_url** (string) - URL to call when upload succeeds - **failure_url** (string) - URL to call when upload fails #### Response Example ```json { "upload_url": "https://example.com/upload", "audio_id": "string", "success_url": "https://example.com/success", "failure_url": "https://example.com/failure" } ``` #### Validation Error (422) - **detail** (array) - List of validation errors #### Validation Error Example ```json { "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ] } ``` ### Security - **APIKeyHeader** - API key required ``` -------------------------------- ### GET /v1/shots/{shot_id}/status Source: https://lipdub.readme.io/reference/get_shot_processing_status_v1_shots__shot_id__status_get Get the processing status of the shot and the AI training status. This endpoint requires the shot_id as a path parameter and returns a response containing the status data. ```APIDOC ## GET /v1/shots/{shot_id}/status ### Description Get the processing status of the shot and the AI training status. ### Method GET ### Endpoint /v1/shots/{shot_id}/status ### Parameters #### Path Parameters - **shot_id** (integer) - Required - The shot ID ### Security - APIKeyHeader ### Response #### Success Response (200) - **data** (object) - The shot status response containing processing and AI training status. #### Response Example { "data": { "status": "processing", "ai_training_status": "completed" } } #### Error Response (422) Validation error if the shot_id is invalid or missing. ``` -------------------------------- ### POST /v1/video Source: https://lipdub.readme.io/reference/post_video_v1_video_post Creates a video file for lipdubbing. After calling this endpoint, make a PUT request to the returned upload_url, then post to either the success or failure endpoint with the video_id. ```APIDOC ## POST /v1/video ### Description Create a video file for lipdubbing. After this endpoint is called, make a PUT request to the upload_url returned in the response. Once uploaded, make a post request to either the Success or Failure endpoint with the video_id returned in the response. ### Method POST ### Endpoint /v1/video ### Parameters #### Request Body - **add_video** (AddVideoModel) - Required - The video model ### Request Example { "add_video": {} } ### Response #### Success Response (201) - **video_id** (string) - Unique identifier for the uploaded video - **upload_url** (string) - URL to upload the video file - **success_url** (string) - URL to call when upload succeeds - **failure_url** (string) - URL to call when upload fails - **project_id** (string) - Automatically created project ID - **scene_id** (string) - Automatically created scene ID - **actor_id** (string) - Automatically created actor ID #### Response Example { "video_id": "string", "upload_url": "string", "success_url": "string", "failure_url": "string", "project_id": "string", "scene_id": "string", "actor_id": "string" } #### Error Response (422) Validation Errors ### Security APIKeyHeader ``` -------------------------------- ### GET /v1/shots/{shot_id}/generate/{generate_id} Source: https://lipdub.readme.io/reference/generate_status_v1_shots__shot_id__generate__generate_id__get Get the status of a generate job. This endpoint requires the shot ID and generate ID as path parameters and returns the current status of the generation job. ```APIDOC ## GET /v1/shots/{shot_id}/generate/{generate_id} ### Description Get the status of a generate job. ### Method GET ### Endpoint /v1/shots/{shot_id}/generate/{generate_id} ### Parameters #### Path Parameters - **shot_id** (integer) - Required - The ID of the shot to generate - **generate_id** (integer) - Required - The ID of the generate job ### Response #### Success Response (200) - **Response_RenderStatusModel_** - The status of the generate job #### Response Example ```json { "status": "string" } ``` #### Error Response (422) - **ValidationErrorResponse** - Validation errors #### Error Response Example ```json { "detail": [ { "loc": ["string"], "msg": "string", "type": "string" } ] } ``` ``` -------------------------------- ### GET /v1/projects/{project_id} Source: https://lipdub.readme.io/reference/get_project_v1_projects__project_id__get Returns a single project by id. This endpoint requires the project_id as a path parameter and an API key for authentication. ```APIDOC ## GET /v1/projects/{project_id} ### Description Returns a single project by id. ### Method GET ### Endpoint /v1/projects/{project_id} ### Parameters #### Path Parameters - **project_id** (integer) - Required - Identifier of the project to fetch. Minimum value: 1. ### Security - APIKeyHeader ### Response #### Success Response (200) Returns a Response_ProjectModel_ object. #### Error Responses - **404**: Project not found or not accessible for this API key - **422**: Validation Errors ```