{
  "openapi": "3.1.0",
  "info": {
    "title": "FastAPI",
    "version": "0.1.0"
  },
  "servers": [
    {
      "url": "https://client.camb.ai/apis"
    }
  ],
  "paths": {
    "/tts": {
      "post": {
        "tags": [
          "APIs",
          "Text-to-Speech"
        ],
        "summary": "Create TTS (Deprecated)",
        "description": "Deprecated. For new integrations, use `POST /tts-stream` for streaming text-to-speech.",
        "deprecated": true,
        "operationId": "create_tts_tts_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTTSRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains the unique identifier for the task. This is used to query the status of the story task that is running. It is returned when a create request is made for a text-to-speech."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/tts/{task_id}": {
      "get": {
        "tags": [
          "Apis",
          "Text-to-Speech"
        ],
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "summary": "Get Tts Result",
        "operationId": "get_tts_result_tts__id__get",
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the text to speech task that is running. It is returned when a create request is made for a text to speech."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/tts-result/{run_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Tts Run Info",
        "operationId": "get_tts_run_info_tts_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam",
              "description": "The unique identifier for the run, which was generated during the Text-to-Speech creation process and returned upon task completion."
            }
          },
          {
            "name": "output_type",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/OutputType",
              "default": "raw_bytes",
              "title": "Format Type"
            },
            "description": "The type of the Text-to-Speech output to return. Either streamable audio bytes or a URL to the generated file."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "audio/flac": {
                "schema": {
                  "$ref": "#/components/schemas/AudioBytesResponse",
                  "description": "The generated audio file bytes in FLAC format, representing the speech created from the Text-to-Speech task."
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudioOutputFileURLResponse",
                  "description": "A JSON that contains a presigned URL for the generated speech FLAC audio file."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/tts-results": {
      "post": {
        "tags": [
          "APIs",
          "Text-to-Speech"
        ],
        "summary": "Fetch Text-to-Speech Results",
        "operationId": "get_tts_results_tts_results_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTTSRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dub": {
      "post": {
        "tags": [
          "Apis"
        ],
        "summary": "End To End Dubbing",
        "description": "Initiate a full end to end dubbing task.",
        "operationId": "dub_dub_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EndToEndDubbingRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains the unique identifier for the task. This is used to query the status of the end to end dubbing task that is running. It is returned when a create request is made for a dub"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dub/{task_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get End To End Dubbing Status",
        "operationId": "get_dub_status_dub__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the dubbing task that is running. It is returned when a create request is made for dubbing."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dub-result/{run_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Dubbed Run Info",
        "description": "",
        "operationId": "get_dubbed_run_info_dubbed_run_info__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            },
            "description": "The unique identifier for the run, which was generated during the end to end dub creation process and returned upon task completion."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunInfoResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dubbing-results": {
      "post": {
        "tags": [
          "Dub"
        ],
        "summary": "Get Dubbing Results in Bulk",
        "operationId": "get_dubbing_results_in_bulk_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkDubbingRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dub-alt-format/{run_id}/{language}": {
      "post": {
        "tags": [
          "Dub"
        ],
        "summary": "Get Dubbed Output in Alt Format",
        "operationId": "get_dubbed_output_in_alt_format_dub_alt_format__run_id___language__post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            }
          },
          {
            "name": "language",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/LanguageInput",
              "description": "Language for this run. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
              "example": "en-us"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DubbedOutputInAltFormatRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/DubAltFormatResponseBody",
                      "description": "A JSON that contains the presigned url of the output file."
                    },
                    {
                      "$ref": "#/components/schemas/TaskID",
                      "description": "A JSON that contains the unique identifier for the task. This is used to query the status of the exporting dubbed output to alt format task that is running. It is returned when a create request is made for fetching the dubbed output in an alt file format, in case it does not exist."
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dub-alt-format/{task_id}": {
      "get": {
        "tags": [
          "Dub"
        ],
        "summary": "Get Dubbed Output in Alt Format Status",
        "operationId": "get_dubbed_output_in_alt_format_status_dub_alt_format__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the generating alt format task that is running. It is returned when a create request is made for generating alt format."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskStatus"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/transcript/{run_id}/{language}": {
      "get": {
        "tags": [
          "Dub"
        ],
        "summary": "Get Dubbed Run Transcript",
        "operationId": "get_dubbed_run_transcript_dub_transcript__run_id___language__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            }
          },
          {
            "name": "language",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/LanguageInput",
              "description": "Language for this run. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
              "example": "en-us"
            }
          },
          {
            "name": "format_type",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/TranscriptFileFormat",
              "default": "txt",
              "title": "Format Type"
            },
            "description": "The format to use for the transcription output. Either `srt`, `vtt` or `txt`. Defaults to `txt`."
          },
          {
            "name": "data_type",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/TranscriptDataType",
              "default": "file",
              "title": "Data Type"
            },
            "description": "The data type for the transcription being returned. Returns the raw data of the transcription or a presigned url for the file that contains the transcript contents in the specified format."
          }
        ]
      }
    },
    "/story": {
      "post": {
        "tags": [
          "Apis",
          "Stories"
        ],
        "summary": "Create Story",
        "operationId": "create_story_story_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateStoryRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains the unique identifier for the task. This is used to query the status of the end to end dubbing task that is running. It is returned when a create request is made for a story."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/story-setup": {
      "post": {
        "tags": [
          "APIs",
          "Stories"
        ],
        "summary": "Setup Story",
        "operationId": "setup_story_story_setup_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateStoryRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorySetupResultResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/story/{task_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Story Status",
        "operationId": "get_story_status_story__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Task Id",
              "description": "A unique identifier for the task. This is used to query the status of the story task that is running. It is returned when a create request is made for a story."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/story-result/{run_id}": {
      "get": {
        "tags": [
          "Apis",
          "Stories"
        ],
        "summary": "Get Story Run Info",
        "operationId": "get_story_run_info_story_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            }
          },
          {
            "name": "include_transcript",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/IncludeTranscriptionQuery"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoryRunInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/stories-results": {
      "post": {
        "tags": [
          "APIs",
          "Stories"
        ],
        "summary": "Get Stories Runs Results in Bulk",
        "operationId": "get_stories_runs_results_stories_results_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkStoriesRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translated-story/{run_id}": {
      "post": {
        "tags": [
          "Apis",
          "Stories"
        ],
        "summary": "Create Translated Story",
        "operationId": "create_translation_for_existing_story__run_id__post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            },
            "description": "The unique identifier of the original story you want to translate. This ID was generated during the original story creation process and returned upon task completion."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTranslatedStoryRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains the unique identifier for the task. This is used to query the status of the translated story task that is running. It is returned when a create request is made for a translated story."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translated-story/{task_id}": {
      "get": {
        "tags": [
          "Apis",
          "Stories"
        ],
        "summary": "Get Translated Story Status",
        "operationId": "get_translated_story_status__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the translated story task that is running. It is returned when a create request is made for a translated story."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translated-story-result/{run_id}/{target_language}": {
      "get": {
        "tags": [
          "Apis",
          "Stories"
        ],
        "summary": "Get Translated Story Run Info",
        "operationId": "get_translated_run_result__run_id__target_language__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            }
          },
          {
            "name": "include_transcript",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/IncludeTranscriptionQuery"
            }
          },
          {
            "name": "target_language",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/LanguageInput",
              "description": "Target language for this run. Pass a locale tag (`fr-fr`, `es-es`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
              "example": "fr-fr"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoryRunInfoResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/text-to-sound": {
      "post": {
        "tags": [
          "Apis",
          "Text-to-Audio"
        ],
        "summary": "Create Sound and Music",
        "operationId": "create_text_to_audio_text_to_audio_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTextToAudioRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains unique identifier for the task. This is used to query the status of the Sound and Music task that is running. It is returned when a create request is made to generate sound from text."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/text-to-sound/{task_id}": {
      "get": {
        "tags": [
          "Apis",
          "Text-to-Audio"
        ],
        "summary": "Get Text To Audio Status",
        "operationId": "get_text_to_audio_statustext_to_audio__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the Sound and Music task that is running. It is returned when a create request is made for Sound and Music."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/text-to-sound-result/{run_id}": {
      "get": {
        "tags": [
          "Apis",
          "Text-to-Audio"
        ],
        "summary": "Get Sound and Music Run Result",
        "operationId": "get_text_to_audio_result_text_to_audio_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            },
            "description": "The unique identifier for the run, which was generated during the text to an audio effect creation process and returned upon task completion."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "contentEncoding": "base64",
                  "description": "The generated audio file bytes in WAV format, representing the audio effect created from the provided text prompt."
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudioOutputFileURLResponse",
                  "description": "A JSON that contains a presigned URL that points to the generated audio effect WAV file."
                }
              }
            }
          }
        }
      }
    },
    "/text-to-sound-results": {
      "post": {
        "tags": [
          "APIs",
          "Text-to-Sound"
        ],
        "summary": "Get Sound and Music Results",
        "operationId": "get_text_to_sound_results_text_to_sound_results_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTextToSoundRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/audio-separation": {
      "post": {
        "tags": [
          "Apis",
          "Audio-Separation"
        ],
        "summary": "Create Audio Separation",
        "operationId": "create_audio_separation_audio_separation_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateAudioSeparationRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains unique identifier for the task. This is used to query the status of the audio separation task that is running. It is returned when a create request is made to separate audio into background and foreground."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/audio-separation/{task_id}": {
      "get": {
        "tags": [
          "Apis",
          "Audio-Separation"
        ],
        "summary": "Get Audio Separation Status",
        "operationId": "get_audio_separation_status_audio_separation__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "The unique identifier returned when you submitted your audio separation request. This serves as the reference point for tracking your specific task."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskStatus"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/audio-separation-result/{run_id}": {
      "get": {
        "tags": [
          "APIs",
          "Audio-Separation"
        ],
        "summary": "Get Audio Separation Run Info",
        "operationId": "get_audio_separation_run_info_audio_separation_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudioSeparationRunInfoResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/audio-separation-results": {
      "post": {
        "tags": [
          "Apis",
          "Audio Separation"
        ],
        "summary": "Get Audio Separation Runs Results",
        "operationId": "get_audio_separation_runs_results_audio_separation_results_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkAudioSeparationRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/create-custom-voice": {
      "post": {
        "tags": [
          "Apis"
        ],
        "summary": "Create Custom Voice",
        "operationId": "create_custom_voice_create_custom_voice_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_create_custom_voice_create_custom_voice_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCustomVoiceOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/transcribe": {
      "post": {
        "tags": [
          "Apis"
        ],
        "summary": "Create Transcription",
        "operationId": "transcribe_transcribe_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_transcribe_transcribe_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains unique identifier for the task. This is used to query the status of the transcription task that is running. It is returned when a create request is made to process speech into text."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/transcribe/{task_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Create Transcription Task Status",
        "operationId": "transcribe_task_status_transcribe__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the transcription task that is running. It is returned when a create request is made for transcription."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/transcription-result/{run_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Transcription Result",
        "description": "Get the result for your transcription-only project by using the run_id. Returns the structured JSON transcript by default (`{\"transcript\": [ {start, end, text, speaker} ]}`). Passing `format_type` (`srt`/`vtt`/`txt`) and/or `data_type` (`raw_data`/`file`) exports the transcript and returns `{\"transcript\": <presigned url | raw text>}`, matching the dubbing `/transcript` endpoint.",
        "operationId": "get_transcription_result_transcription_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "description": "The unique identifier for the run, which was generated during the transcription creation process and returned upon task completion.",
            "schema": {
              "$ref": "#/components/schemas/RunIDParam",
              "title": "Run Id"
            }
          },
          {
            "name": "format_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TranscriptFileFormat"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Format Type"
            },
            "description": "Subtitle format for the transcript export: `srt`, `vtt` or `txt`. When omitted (and `data_type` is also omitted) the structured JSON transcript is returned instead of an exported file."
          },
          {
            "name": "data_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TranscriptDataType"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Data Type"
            },
            "description": "How the exported transcript is returned once `format_type`/`data_type` is set: `file` returns a presigned URL, `raw_data` returns the raw text. Same values and response shape as the dubbing `/transcript` endpoint. In export mode the effective defaults are `format_type=txt`, `data_type=file`."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transcript": {
                      "anyOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/DialogueItem"
                          }
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "title": "Transcript",
                      "description": "Structured dialogue array by default; a string (presigned URL for `data_type=file`, or raw text for `data_type=raw_data`) in export mode."
                    }
                  },
                  "title": "Transcription Result"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/transcription-results": {
      "post": {
        "tags": [
          "APIs",
          "Transcription"
        ],
        "summary": "Get Transcription Results",
        "operationId": "get_transcription_results_transcription_results_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTranscriptionRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/sub": {
      "post": {
        "tags": [
          "Apis"
        ],
        "summary": "Create Subtitle",
        "operationId": "create_subtitle_sub_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubtitleRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains the unique identifier for the task. This is used to query the status of the subtitle task that is running. It is returned when a create request is made to generate subtitles."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/sub/{task_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Subtitle Task Status",
        "operationId": "get_subtitle_task_status_sub__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Task ID",
              "description": "A unique identifier for the task. This is used to query the status of the subtitle task that is running. It is returned when a create request is made for subtitle generation.",
              "example": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/sub-result/{run_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Subtitle Result",
        "description": "Get the result for your subtitle project by using the run_id. Returns the structured JSON transcript for every language on the run by default (a single `SubtitleResult` when the run has one language, or an object keyed by language ID when it has multiple). Passing `format_type` (`srt`/`vtt`/`txt`) and/or `data_type` (`raw_data`/`file`) exports every language and returns either `{ \"transcript\": <presigned url | raw text> }` for one language or `{ \"<lang_id>\": { \"transcript\": <presigned url | raw text> }, ... }` for many — same parameter values as the transcription-result and dubbing `/transcript` endpoints.",
        "operationId": "get_subtitle_result_sub_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "description": "The unique identifier for the run, which was generated during the subtitle creation process and returned upon task completion.",
            "schema": {
              "$ref": "#/components/schemas/RunIDParam",
              "title": "Run Id"
            }
          },
          {
            "name": "format_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TranscriptFileFormat"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Format Type"
            },
            "description": "Subtitle format for the transcript export: `srt`, `vtt` or `txt`. When omitted (and `data_type` is also omitted) the structured JSON transcript is returned instead of an exported file. Applies to every language on the run."
          },
          {
            "name": "data_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TranscriptDataType"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Data Type"
            },
            "description": "How the exported transcript is returned once `format_type`/`data_type` is set: `file` returns a presigned URL, `raw_data` returns the raw text. Same values as the dubbing `/transcript` and transcription-result endpoints. In export mode the effective defaults are `format_type=txt`, `data_type=file`. Applies to every language on the run."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubtitleRunResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/sub-result/{run_id}/{language}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Subtitle Result For Language",
        "description": "Get the subtitle transcript for one language of a completed subtitle project using the run_id. Returns the structured JSON transcript by default (`{\"transcript\": [ {start, end, text, speaker} ]}`). Passing `format_type` and/or `data_type` exports the transcript and returns `{\"transcript\": <presigned url | raw text>}`, matching the dubbing `/transcript` endpoint.",
        "operationId": "get_subtitle_result_for_language_sub_result__run_id___language__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "description": "The unique identifier for the run, which was generated during the subtitle creation process and returned upon task completion.",
            "schema": {
              "$ref": "#/components/schemas/RunIDParam",
              "title": "Run Id"
            }
          },
          {
            "name": "language",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/LanguageInput",
              "description": "The language to fetch, either the run's source language or one of its target languages. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
              "example": ""
            }
          },
          {
            "name": "format_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TranscriptFileFormat"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Format Type"
            },
            "description": "Subtitle format for the transcript export: `srt`, `vtt` or `txt`. When omitted (and `data_type` is also omitted) the structured JSON transcript is returned instead of an exported file."
          },
          {
            "name": "data_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TranscriptDataType"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Data Type"
            },
            "description": "How the exported transcript is returned once `format_type`/`data_type` is set: `file` returns a presigned URL, `raw_data` returns the raw text. Same values and response shape as the dubbing `/transcript` endpoint. In export mode the effective defaults are `format_type=txt`, `data_type=file`."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transcript": {
                      "anyOf": [
                        {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/DialogueItem"
                          }
                        },
                        {
                          "type": "string"
                        }
                      ],
                      "title": "Transcript",
                      "description": "Structured dialogue array by default; a string (presigned URL for `data_type=file`, or raw text for `data_type=raw_data`) in export mode."
                    }
                  },
                  "title": "Subtitle Result"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/sub-results": {
      "post": {
        "tags": [
          "Apis",
          "Subtitles"
        ],
        "summary": "Get Subtitle Results",
        "description": "Bulk fetch subtitle results for multiple run IDs. Each run matches `GET /sub-result/{run_id}`: structured JSON by default, or exported `srt`/`vtt`/`txt` when `format_type` and/or `data_type` query params are set.",
        "operationId": "get_subtitle_results_sub_results_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "format_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TranscriptFileFormat"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Format Type"
            },
            "description": "Subtitle format for the transcript export: `srt`, `vtt` or `txt`. When omitted (and `data_type` is also omitted) the structured JSON transcript is returned instead of an exported file. Applied to every language on each run."
          },
          {
            "name": "data_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/TranscriptDataType"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Data Type"
            },
            "description": "How the exported transcript is returned once `format_type`/`data_type` is set: `file` returns a presigned URL, `raw_data` returns the raw text. In export mode the effective defaults are `format_type=txt`, `data_type=file`. Applied to every language on each run."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkSubtitleRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translate": {
      "post": {
        "tags": [
          "Apis"
        ],
        "summary": "Create Translation",
        "operationId": "translate_translate_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_translate_translate_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains unique identifier for the task. This is used to query the status of the translation task that is running. It is returned when a create request is made for translation."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translate/{task_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Create translation Task Status",
        "operationId": "translate_task_status_translate__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the translation task that is running. It is returned when a create request is made for translation."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translation-result/{run_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Translation Result",
        "description": "Get the result for your translation only project by using the run_id",
        "operationId": "get_translation_result_translation_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "description": "The unique identifier for the run, which was generated during the translation creation process and returned upon task completion.",
            "schema": {
              "$ref": "#/components/schemas/RunIDParam",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranslationResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translation-results": {
      "post": {
        "tags": [
          "Apis",
          "Translation"
        ],
        "summary": "Get Translation Results",
        "operationId": "get_translation_results_translation_results_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTranslationRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translated-tts": {
      "post": {
        "tags": [
          "Apis"
        ],
        "summary": "Create Translated Tts",
        "operationId": "translated-tts_translated-tts_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTranslatedTTSRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/translated-tts/{task_id}": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Create Translated Tts Task Status",
        "operationId": "translated-tts_task_status_translated-tts__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the translated text to speech task that is running. It is returned when a create request is made for translated text to speech."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/list-voices": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "List Voices",
        "operationId": "list-voices_list-voices_get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVoice"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/delete-voice/{voice_id}": {
      "delete": {
        "tags": [
          "Apis"
        ],
        "summary": "Delete Voice",
        "operationId": "delete_voice_delete_voice__voice_id__delete",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "voice_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "title": "Voice Id",
              "description": "The unique identifier of the custom voice to delete.",
              "default": 147320
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "example": {
                  "status": "ok"
                },
                "schema": {
                  "type": "object",
                  "description": "Deletion confirmation payload for the requested voice.",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "ok"
                      ],
                      "description": "Indicates successful deletion."
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dictionaries": {
      "get": {
        "tags": [
          "Apis",
          "Dictionaries"
        ],
        "summary": "Get Workspace Dictionaries",
        "description": "Get a list of dictionaries in the workspace.",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Dictionary"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dictionaries/create-from-file": {
      "post": {
        "tags": [
          "Apis",
          "Dictionaries"
        ],
        "summary": "Create Dictionary From File",
        "operationId": "create_dictionary_from_file_dictionaries_create_from_file_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateDictionaryFromFileRequestBody"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryCreated",
                  "description": "A `201` status code indicates that your dictionary was created successfully and all terminology content from your uploaded file was processed and integrated into the CAMB.AI system. This represents the ideal outcome where file parsing, content validation, and dictionary population all completed without issues, resulting in a fully functional dictionary ready for immediate use across your audio processing tasks."
                }
              }
            }
          },
          "206": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryCreated",
                  "description": "A `206` status code indicates a more complex outcome where the dictionary container was created successfully, but some terminology entries from your uploaded file could not be processed or integrated. This partial success scenario reflects the reality that large terminology collections often contain edge cases or formatting variations that require individual attention, even when the majority of content processes correctly."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dictionaries/{dictionary_id}": {
      "get": {
        "tags": [
          "Apis",
          "Dictionaries"
        ],
        "summary": "Get Dictionary Info",
        "operationId": "get_dictionary_info_dictionaries__dictionary_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "dictionary_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DictionaryIDPathParam"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Dictionary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Apis",
          "Dictionaries"
        ],
        "summary": "Delete Dictionary",
        "operationId": "delete_dictionary_dictionaries__dictionary_id__delete",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "dictionary_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DictionaryIDPathParam"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryCreated"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dictionaries/{dictionary_id}/full-details": {
      "get": {
        "tags": [
          "Apis",
          "Dictionaries"
        ],
        "summary": "Get Dictionary Details",
        "operationId": "get_dictionary_details_dictionaries__dictionary_id__full_details_get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "dictionary_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DictionaryIDPathParam"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "nullable": true,
              "description": "Limit how many terms are returned when fetching the dictionary details. You can specify exactly how many terms you want to see. For example, setting `limit=50` will return only the first 50 terms from the dictionary. This is especially useful for implementing pagination in user interfaces or when you only need a sample of the dictionary's content.",
              "title": "Limit"
            }
          },
          {
            "name": "search_term",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "title": "Search Term",
              "nullable": true,
              "description": "When you provide a search term, the API acts like a search function within the dictionary. Rather than returning all terms, it will filter the results to show only those terms that match or contain your search string. This transforms the endpoint from a 'show me everything' request into a 'show me what I'm looking for' request, making it much more efficient when you're looking for specific terminology."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryWithTerms"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dictionaries/{dictionary_id}/add-term": {
      "post": {
        "tags": [
          "Apis",
          "Dictionaries"
        ],
        "summary": "Add Term To Dictionary",
        "operationId": "add_term_to_dictionary_dictionaries__dictionary_id__add_term_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "dictionary_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DictionaryIDPathParam"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddDictionaryTermPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryCreated"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/dictionaries/term/{dictionary_id}/{term_id}": {
      "put": {
        "tags": [
          "Apis",
          "Dictionaries"
        ],
        "summary": "Update Term Translation In Dictionary Using Term Id",
        "operationId": "update_term_translation_in_dictionary_using_term_id_dictionaries_term__dictionary_id___term_id__put",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "dictionary_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DictionaryIDPathParam"
            }
          },
          {
            "name": "term_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "title": "Term Id",
              "description": "The unique identifier of the term. This must be a positive integer that corresponds to an existing term in the system."
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTermTranslationsPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryCreated"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Apis",
          "Dictionaries"
        ],
        "summary": "Delete Dictionary Term",
        "operationId": "delete_dictionary_term_dictionaries_term__dictionary_id___term_id__delete",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "dictionary_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DictionaryIDPathParam"
            }
          },
          {
            "name": "term_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "title": "Term Id",
              "description": "The unique identifier of the term. This must be a positive integer that corresponds to an existing term in the system."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DictionaryCreated"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/folders": {
      "get": {
        "tags": [
          "Apis",
          "Folders"
        ],
        "summary": "List Folders",
        "operationId": "list_folders_folders_get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "nullable": true,
              "description": "Control the maximum number of folder items returned in a single API response to optimize performance and manage data consumption. Set this value between 1 and 100 based on your application's needs - use smaller limits for faster initial loading and pagination scenarios, or larger limits when you need comprehensive folder overviews. This parameter helps balance API response speed with data completeness, ensuring your workspace queries remain responsive even with extensive folder collections."
            }
          },
          {
            "name": "search_query",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 255,
              "nullable": true,
              "title": "Search Query",
              "description": "Filter folders by entering partial or complete folder names to quickly locate specific organizational containers within your CAMB.AI workspace. The search functionality matches against folder names using case-insensitive partial matching, allowing you to find folders like 'Marketing Projects' by searching for terms like 'market' or 'proj'. This targeted filtering becomes invaluable as your workspace grows, enabling rapid navigation to relevant project folders without scrolling through extensive folder lists."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFolders"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/folders/create": {
      "post": {
        "tags": [
          "APIs",
          "Folders"
        ],
        "summary": "Create Folder",
        "operationId": "create_folder_folders_create_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFolderPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateFolderResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/source-languages": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Source Languages",
        "operationId": "get_source_languages_source_languages_get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguageArray"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/target-languages": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Get Target Languages",
        "operationId": "get_target_languages_target_languages_get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguageArray"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/tts-stream": {
      "post": {
        "tags": [
          "Apis",
          "Text-to-Speech"
        ],
        "summary": "Stream Text-to-Speech Audio",
        "description": "Generate speech from text and stream audio bytes back as they’re produced for low-latency playback.",
        "operationId": "tts_tts_stream_post",
        "requestBody": {
          "description": "Streaming Text-to-Speech request parameters.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStreamTTSRequestPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Streaming audio response",
            "headers": {
              "X-Credits-Required": {
                "schema": {
                  "type": "string",
                  "description": "Number of credits required for this request"
                }
              }
            },
            "content": {
              "audio/wav": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "description": "Binary audio stream in WAV format."
                }
              },
              "audio/flac": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "description": "Binary audio stream in FLAC format."
                }
              },
              "audio/aac": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "description": "Binary audio stream in AAC/ADTS format."
                }
              },
              "audio/mpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "description": "Binary audio stream in MP3 format."
                }
              },
              "audio/x-pcm": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "description": "Raw PCM audio stream (use `output_configuration.format` to control sample format and endianness)."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/live-tts/ws": {
      "get": {
        "tags": [
          "Apis"
        ],
        "summary": "Live TTS (WebSocket)",
        "description": "Open a WebSocket connection to stream text in and receive synthesized speech audio + optional word-level timestamps back. This entry documents the WS **upgrade handshake** for completeness; the full bidirectional message protocol (`session.start`, `text.chunk`, `text.done` → `session.ready`, `segment.start`, binary audio, `segment.done`, `segment.skipped`, `session.done`, `session.error`) is documented on the [Live TTS (WebSocket)](/api-reference/websockets/live-tts) page.\n\nClients connect with `Upgrade: websocket` and `Connection: Upgrade`. Authenticate with the `x-api-key` header, or fall back to the `?api_key=...` query parameter when headers are not configurable.",
        "operationId": "live_tts_ws_handshake",
        "parameters": [
          {
            "name": "Upgrade",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "const": "websocket"
            },
            "description": "Must be `websocket` for the upgrade handshake."
          },
          {
            "name": "Connection",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "const": "Upgrade"
            }
          },
          {
            "name": "api_key",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Fallback for clients that cannot set headers. Prefer the `x-api-key` header when possible."
          }
        ],
        "responses": {
          "101": {
            "description": "Switching Protocols. The WebSocket session is now open and the client must send `session.start` as the first frame."
          },
          "401": {
            "description": "Missing or invalid API key (rejected before the WebSocket upgrade completes)."
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ]
      }
    },
    "/translation/stream": {
      "post": {
        "tags": [
          "Apis"
        ],
        "summary": "Create Translation Stream (Deprecated)",
        "description": "Deprecated. Stream real-time text translation between languages. For new integrations, use the standard translation task flow with `POST /translation`.",
        "operationId": "create_translation_stream",
        "deprecated": true,
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTranslationStreamRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Text translation stream",
            "headers": {
              "X-Credits-Required": {
                "schema": {
                  "type": "string",
                  "description": "Number of credits required for this request"
                }
              }
            },
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/text-to-voice": {
      "post": {
        "tags": [
          "Apis",
          "Text-to-Voice"
        ],
        "summary": "Create Voice from Description",
        "operationId": "create_text_to_voice_text_to_voice_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTextToVoiceRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains the unique identifier for the task. This is used to query the status of the text to voice task that is running. It is returned when a create request is made for creating a text to voice task."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/text-to-voice/{task_id}": {
      "get": {
        "tags": [
          "Apis",
          "Text-to-Voice"
        ],
        "summary": "Get Text-to-Voice Task Status",
        "description": "Get the status of a text-to-voice task by its ID.",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam",
              "description": "A unique identifier for the task. This is used to query the status of the text to voice task that is running. It is returned when a create request is made for text to voice."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/text-to-voice-result/{run_id}": {
      "get": {
        "tags": [
          "Apis",
          "Text-to-Voice"
        ],
        "summary": "Get Text-to-Voice Run Result",
        "operationId": "get_text_to_voice_result_text_to_voice_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            },
            "description": "The unique identifier for the run, which was generated during the text to voice creation process and returned upon task completion."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TextToVoiceRunInfoResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/project-setup": {
      "post": {
        "tags": [
          "Apis",
          "Project Setup"
        ],
        "summary": "Create Project",
        "operationId": "create_project_project_setup_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateProjectSetupRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskID",
                  "description": "A JSON that contains the unique identifier for the task. This is used to query the status of the text to voice task that is running. It is returned when a create request is made for setting up a project task."
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/project-setup/{task_id}": {
      "get": {
        "tags": [
          "Apis",
          "Project Setup"
        ],
        "summary": "Create Project Setup Task Status",
        "operationId": "create_project_setup_task_status_project_setup__task_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TaskIDParam"
            },
            "description": "A unique identifier for the task. This is used to query the status of the project setup task that is running. It is returned when a request is made to setup a project."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrchestratorPipelineResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/project-setup-result/{run_id}": {
      "get": {
        "tags": [
          "Apis",
          "Project Setup"
        ],
        "summary": "Get Project Setup Result",
        "description": "Retrieves the final result of a completed project setup.\n\nThis endpoint provides access to the final results of a completed project setup.\nIt verifies that the authenticated user has access to the requested run_id and\nvalidates that the run is of the correct type (`DUB_PROJECT`) before returning results.\n\nNote:\n    This endpoint should only be called by users to retrieve their run results via API.\n    Access validation is performed to ensure users can only access their own runs.\n\nArgs:\n    run_id: Positive integer ID of the project setup run.\n    api_key_obj: API key authentication data from dependency.\n    traceparent: OpenTelemetry trace header for distributed tracing.\n\nReturns:\n    GetCreateProjectSetupResponse: Project setup results including run details.\n\nRaises:\n    HTTPException:\n        - 404: If the run_id is not found\n        - 400: If the run type is not valid for this endpoint (must be DUB_PROJECT)",
        "operationId": "get_project_setup_result_project_setup_result__run_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RunIDParam"
            },
            "description": "The unique identifier for the run, which was generated during the project setup process and returned upon task completion."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCreateProjectSetupResponse",
                  "title": "Response Get Project Setup Result Project Setup Result  Run Id  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/project-setup-results": {
      "post": {
        "tags": [
          "APIs",
          "Project Setup"
        ],
        "summary": "Get Project Setup Runs Results",
        "operationId": "get_project_setup_runs_results_project_setup_results_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunIDsRequestPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkProjectSetupRunsResults"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/stream": {
      "post": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Create Stream",
        "operationId": "create_stream_stream_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStreamRequestPayload"
              },
              "example": {
                "name": "Saturday Match Live Dub",
                "description": "Football match commentary dubbed from English into Spanish",
                "end_time": "2026-08-01T21:45:00Z",
                "timezone": "UTC",
                "voices": [],
                "source_stream": {
                  "id": "match-feed",
                  "url": "srt://ingest.example.com:9000",
                  "latency": 2000,
                  "category": 2
                },
                "audio_selections": [
                  {
                    "id": "commentary",
                    "source": "$first_audio",
                    "source_language": 1
                  }
                ],
                "processing_profiles": [
                  {
                    "id": "dubbing",
                    "demixing": "best_model",
                    "transcribing": "best_model",
                    "translating": "best_model",
                    "revoicing": "best_model"
                  }
                ],
                "pipelines": [
                  {
                    "id": "spanish",
                    "profile": "dubbing",
                    "audio_selection": "commentary",
                    "outputs": [
                      {
                        "id": "es-audio",
                        "kind": "audio",
                        "language": 54
                      },
                      {
                        "id": "es-subtitle",
                        "kind": "subtitle",
                        "language": 54
                      }
                    ]
                  }
                ],
                "target_streams": [
                  {
                    "id": "spanish-out",
                    "url": "srt://delivery.example.com:9100",
                    "type": 1,
                    "inputs": [
                      {
                        "asset_id": "es-audio"
                      },
                      {
                        "passthrough_selector": "v:0"
                      }
                    ]
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateStreamOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "description": "Create a live stream: ingest a source, process it with one or more AI pipelines, and publish the results to one or more targets."
      }
    },
    "/stream/{stream_id}": {
      "get": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Get Stream Status",
        "operationId": "get_stream_result_stream__stream_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "stream_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Stream Id"
            },
            "description": "Identifier returned when the stream was created."
          }
        ],
        "responses": {
          "200": {
            "description": "Current state of the stream.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamView"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Retrieve the current status of a stream, including source connection details and the state and URLs of every output."
      },
      "patch": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Update Stream",
        "operationId": "patch_stream_data_stream__stream_id__patch",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "stream_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Stream Id"
            },
            "description": "Identifier of the stream to update."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStreamDataRequestPayload"
              },
              "example": {
                "pipeline_patches": [
                  {
                    "pipeline_id": "spanish",
                    "dubbing_enabled": false
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Patch Stream Data Stream  Stream Id  Patch"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Update a stream's configuration (merged by `id`, never removing existing entries) and apply live runtime adjustments such as toggling dubbing on or off. Allowed while the stream is scheduled, setting up, or started."
      },
      "delete": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Delete Stream",
        "description": "Delete a stream. If the stream is live, processing stops and outputs are finalised; a scheduled stream is cancelled. The stream's status becomes `4` (ended) and its record remains readable via `GET /stream/{stream_id}`. A deleted stream cannot be restarted.",
        "operationId": "destroy_stream_stream__stream_id__delete",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "stream_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Stream Id"
            },
            "description": "Identifier of the stream to delete."
          }
        ],
        "responses": {
          "200": {
            "description": "Deletion confirmation.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Delete Stream Response"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/stream/probe/": {
      "post": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Probe Stream",
        "description": "Inspect a source URL and list its video, audio, and data tracks before creating a stream. Note the trailing slash in the path.",
        "operationId": "get_probe_stream_stream_probe_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetProbeStreamIn"
              },
              "example": {
                "url": "srt://ingest.example.com:9000"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tracks discovered in the source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetProbeStreamOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/stream/templates/": {
      "post": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Create a Stream Template",
        "description": "Save a created stream's configuration as a named template in your workspace. Applying the template later replays that stream's creation payload. Template names are unique per workspace, and each workspace can hold at most 20 templates.",
        "operationId": "create_stream_template_stream_templates__post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStreamTemplateRequestPayload"
              },
              "example": {
                "name": "matchday-dubbing",
                "stream_id": 4821
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created template.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamTemplateOut"
                }
              }
            }
          },
          "404": {
            "description": "The stream does not exist in your workspace."
          },
          "409": {
            "description": "A template with this name already exists, or the workspace has reached the 20-template limit."
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "List Stream Templates",
        "description": "List the stream templates saved in your workspace. A template is a named snapshot of a previously created stream's configuration. Retrieve its payload with Use a Stream Template.",
        "operationId": "list_stream_templates_stream_templates__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "The templates saved in your workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListStreamTemplatesOut"
                }
              }
            }
          }
        }
      }
    },
    "/stream/templates/{template_id}/payload": {
      "get": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Use a Stream Template",
        "description": "Retrieve a template's stream creation payload: the exact configuration of the stream it was saved from. Adjust start_time and end_time, then post it to Create Stream.",
        "operationId": "get_stream_template_payload_stream_templates__template_id__payload_get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "template_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "title": "Template Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The template's stream creation payload.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStreamTemplatePayloadOut"
                }
              }
            }
          },
          "404": {
            "description": "No template with this id exists in your workspace."
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/stream/templates/{template_id}": {
      "delete": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Delete a Stream Template",
        "description": "Delete a stream template from your workspace. The stream it was saved from is unaffected. Each workspace can hold at most 20 templates, so delete one to make room when the limit is reached.",
        "operationId": "delete_stream_template_stream_templates__template_id__delete",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "template_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "title": "Template Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted template's id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteStreamTemplateOut"
                }
              }
            }
          },
          "404": {
            "description": "No template with this id exists in your workspace."
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/flows": {
      "post": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Create Flow",
        "description": "Create a stream flow: a standing SRT endpoint, independent of any stream, that you can use as the source or a target of streams. In `listener` mode Camb.ai hosts an endpoint your encoder pushes to; in `caller` mode Camb.ai pulls from your upstream and re-serves it.",
        "operationId": "create_flow_flows_post",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlowCreateIn"
              },
              "example": {
                "label": "stadium-encoder",
                "mode": "listener",
                "failover": true
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created flow, including its play and push URLs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowOut"
                }
              }
            }
          },
          "403": {
            "description": "Your subscription does not include streaming."
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "List Flows",
        "description": "List all flows belonging to your team.",
        "operationId": "list_flows_flows_get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Flows belonging to your team.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlowSummary"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/flows/{flow_id}": {
      "get": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Get Flow",
        "description": "Retrieve a flow, including its play and push URLs.",
        "operationId": "get_flow_flows__flow_id__get",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "flow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Flow Id"
            },
            "description": "Identifier of the flow."
          }
        ],
        "responses": {
          "200": {
            "description": "The flow.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowOut"
                }
              }
            }
          },
          "404": {
            "description": "Flow not found."
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Update Flow",
        "description": "Rename a flow or bring its relay online/offline.",
        "operationId": "update_flow_flows__flow_id__patch",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "flow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Flow Id"
            },
            "description": "Identifier of the flow."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlowUpdateIn"
              },
              "example": {
                "active": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated flow.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowOut"
                }
              }
            }
          },
          "404": {
            "description": "Flow not found."
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Apis",
          "Streaming"
        ],
        "summary": "Delete Flow",
        "description": "Delete a flow and shut down its relay endpoint.",
        "operationId": "delete_flow_flows__flow_id__delete",
        "security": [
          {
            "APIKeyHeader": []
          }
        ],
        "parameters": [
          {
            "name": "flow_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Flow Id"
            },
            "description": "Identifier of the flow."
          }
        ],
        "responses": {
          "200": {
            "description": "Deletion confirmation.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "deleted"
                    },
                    "id": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Flow not found."
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CreateTranslatedTTSRequestPayload": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateTaskWithNameAndDescription"
          },
          {
            "properties": {
              "text": {
                "type": "string",
                "title": "Text",
                "description": "The input text content that you want to translate and convert to speech. Provide clear, well-structured text for optimal results."
              },
              "voice_id": {
                "type": "integer",
                "title": "Voice Id",
                "description": "A unique identifier for the specific voice to use for speech synthesis in the target language. Each voice has distinct characteristics including tone, accent, and speaking style.",
                "default": 147320
              },
              "age": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Age",
                "default": 28,
                "description": "The simulated age of the speaker in years, which influences voice characteristics. Defaults to `28` if not specified. Set to null to use the default voice age."
              },
              "formality": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Formalities"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": 2,
                "description": "The level of formality to use for the translation. Values range from casual (`1`), with a default of `2` (formal). This affects the translation's tone and word choice based on cultural norms of the target language."
              },
              "gender": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Gender"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": 1,
                "description": "The gender of the synthesized voice. Influences voice characteristics based on typical speech patterns. Defaults to `1` (typically representing male)."
              },
              "source_language": {
                "$ref": "#/components/schemas/LanguageInput",
                "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
                "example": "en-us"
              },
              "target_language": {
                "$ref": "#/components/schemas/LanguageInput",
                "example": "fr-fr",
                "description": "The target output language. Pass a locale tag (`fr-fr`, `es-es`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages)."
              },
              "chosen_dictionaries": {
                "$ref": "#/components/schemas/ChosenDictionariesSchema"
              }
            },
            "type": "object",
            "required": [
              "text",
              "voice_id",
              "source_language",
              "target_language"
            ]
          }
        ],
        "title": "CreateTranslatedTTSRequestPayload",
        "description": "Parameters for initiating a translation and text-to-speech task, including source text, language preferences, and voice characteristics."
      },
      "CreateStoryRequestPayload": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "file": {
                "type": "string",
                "format": "binary",
                "title": "File",
                "description": "The text file (`.txt`) or Word document (`.docx`) containing your story content. This document will be used as the basis for the audio book."
              },
              "title": {
                "type": "string",
                "title": "Title",
                "description": "A descriptive title for your story, making it easier to identify and organize.",
                "minLength": 3,
                "maxLength": 255,
                "nullable": true,
                "default": null,
                "example": null
              },
              "description": {
                "type": "string",
                "title": "Description",
                "description": "A brief synopsis of your story, helping to set context and expectations.",
                "minLength": 3,
                "maxLength": 5000,
                "nullable": true,
                "default": null,
                "example": null
              },
              "source_language": {
                "$ref": "#/components/schemas/LanguageInput",
                "title": "Source Language",
                "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
                "example": "en-us"
              },
              "narrator_voice_id": {
                "type": "integer",
                "title": "Narrator Voice ID",
                "description": "The identifier of the AI voice that will narrate your story. This determines the tone, accent, and delivery style.",
                "default": 147320
              },
              "chosen_dictionaries": {
                "$ref": "#/components/schemas/ChosenDictionariesSchema"
              }
            },
            "required": [
              "file",
              "source_language"
            ]
          }
        ],
        "title": "CreateStoryRequestPayload"
      },
      "CreateTranslatedStoryRequestPayload": {
        "type": "object",
        "properties": {
          "target_language": {
            "$ref": "#/components/schemas/LanguageInput",
            "title": "Target Language",
            "description": "The target output language. Pass a locale tag (`fr-fr`, `es-es`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
            "example": "fr-fr"
          }
        }
      },
      "CreateTextToAudioRequestPayload": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateTaskWithNameAndDescription"
          },
          {
            "type": "object",
            "properties": {
              "prompt": {
                "type": "string",
                "title": "Prompt",
                "required": true,
                "description": "A textual description of the sound you want to generate. This required field should contain a clear, descriptive explanation of the desired audio effect. While our system can process lengthy descriptions, concise prompts typically yield more accurate results."
              },
              "duration": {
                "type": "number",
                "title": "Duration",
                "description": "Specify how long you want your generated audio to be, measured in seconds. This optional parameter defaults to `8.0` seconds if not explicitly set. The duration value directly impacts how the audio evolves over time, with longer durations allowing for more complex sonic development.",
                "default": 8.0
              },
              "audio_type": {
                "$ref": "#/components/schemas/TextToAudioType"
              }
            }
          }
        ],
        "title": "CreateTextToAudioRequestPayload"
      },
      "DubbedOutputInAltFormatRequestPayload": {
        "properties": {
          "output_format": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioOutputType"
              },
              {
                "$ref": "#/components/schemas/VideoOutputTypeWithoutAVI"
              }
            ],
            "title": "Output Format"
          }
        },
        "type": "object",
        "required": [
          "output_format"
        ],
        "title": "DubbedOutputInAltFormatRequestPayload"
      },
      "CreateProjectSetupRequestPayload": {
        "properties": {
          "project_name": {
            "type": "string",
            "title": "Project Name",
            "description": "Enter a distinctive name for your project that reflects its purpose or content. This name will be displayed in your CAMB.AI workspace dashboard and used to organize related assets, transcriptions, etc.. . Choose something memorable that helps you quickly identify this specific project among your other voice, audio and localization tasks.",
            "minLength": 3,
            "maxLength": 255,
            "nullable": true,
            "example": null
          },
          "project_description": {
            "type": "string",
            "title": "Project Description",
            "description": "Provide details about your project's goals and specifications. Include information such as the target languages for translation or dubbing, desired voice characteristics, emotional tones to capture, or specific audio processing requirements, outlining the workflow here can serve as valuable documentation for organizational purposes.",
            "minLength": 3,
            "maxLength": 5000,
            "nullable": true,
            "example": null
          },
          "media_url": {
            "type": "string",
            "format": "uri",
            "title": "Media Url",
            "description": "The source location of your media content. This URI can point to YouTube videos, Google Drive files, or direct media file URLs. The system validates accessibility and begins media analysis immediately upon receipt. Think of this as telling the system where to find your raw material for processing"
          },
          "source_language": {
            "$ref": "#/components/schemas/LanguageInput",
            "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
            "example": "en-us"
          },
          "target_languages": {
            "items": {
              "$ref": "#/components/schemas/LanguageInput"
            },
            "type": "array",
            "title": "Target Languages",
            "description": "Languages to generate output in. Pass locale tags (`es-es`, `fr-fr`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
            "example": [
              "es-es",
              "fr-fr"
            ]
          },
          "selected_audio_tracks": {
            "items": {
              "type": "integer",
              "required": true
            },
            "type": "array",
            "nullable": true,
            "uniqueItems": true,
            "description": "Optional array of one or two zero‑based audio track indices to dub. Only supported for `MXF` files. If omitted, the first audio track (index 0) is used by default.",
            "minItems": 1,
            "maxItems": 2,
            "default": null
          },
          "add_output_as_an_audio_track": {
            "type": "boolean",
            "nullable": true,
            "default": null,
            "description": "Optional flag to append the dubbed audio as a new audio track in the output file. Only supported for `MXF` files. If `true`, the dubbed audio is added as an additional track; if `false` or omitted, the source would be returned with only dubbed audio."
          },
          "chosen_dictionaries": {
            "$ref": "#/components/schemas/ChosenDictionariesSchema"
          },
          "folder_id": {
            "type": "integer",
            "title": "Folder ID",
            "description": "Specify the organizational folder within your CAMB.AI workspace where this task should be created and stored. The folder must already exist in your workspace and be accessible through your current API key authentication. This helps maintain project organization by grouping related tasks together, making it easier to manage and locate your projects.",
            "minimum": 1,
            "nullable": true,
            "example": "<number>"
          }
        },
        "type": "object",
        "required": [
          "media_url",
          "source_language",
          "target_languages"
        ],
        "title": "CreateProjectSetupRequestPayload"
      },
      "GetCreateProjectSetupResponse": {
        "properties": {
          "run_id": {
            "type": "integer",
            "minimum": 0,
            "title": "Run ID",
            "description": "The unique identifier for the run, which was generated during the Project setup process and returned upon task completion."
          },
          "project_details": {
            "$ref": "#/components/schemas/RunDetails"
          }
        }
      },
      "RunDetails": {
        "type": "object",
        "properties": {
          "project_name": {
            "type": "string",
            "title": "Project Name",
            "minLength": 3,
            "maxLength": 255,
            "description": "This represents the human-readable project identifier you provided when creating the project setup. Think of this as the project's display name that appears throughout CAMB.AI Studio, helping your team quickly identify which content piece they're working with."
          },
          "project_description": {
            "type": "string",
            "title": "Project Description",
            "minLength": 3,
            "maxLength": 5000,
            "nullable": true,
            "description": "This field contains the detailed project context you provided during setup, serving as documentation that travels with your project throughout its lifecycle. The description becomes particularly valuable when projects move between team members or when you return to work after time has passed."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "This timestamp in UTC timezone marks the exact moment your project setup was initiated, providing crucial information for workflow coordination and project management."
          },
          "source_language": {
            "$ref": "#/components/schemas/LanguageInput",
            "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
            "example": "en-us"
          },
          "target_languages": {
            "items": {
              "$ref": "#/components/schemas/LanguageInput"
            },
            "type": "array",
            "title": "Target Languages",
            "description": "Languages to generate output in. Pass locale tags (`es-es`, `fr-fr`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
            "example": [
              "es-es",
              "fr-fr"
            ]
          },
          "folder_id": {
            "type": "integer",
            "minimum": 0,
            "nullable": true,
            "description": "This optional field indicates the organizational folder where your project resides within your team's workspace structure. Think of this as your project's filing location within CAMB.AI Studio, helping maintain organized project management as your content library grows.",
            "example": "<number>"
          },
          "studio_url": {
            "type": "string",
            "description": "This field contains the direct URL link to access your project within CAMB.AI Studio's web interface. Once your project setup is complete, this URL serves as the primary entry point for all creative work, allowing you and your team members to navigate directly to the project's workspace where you can review transcripts, adjust timing, refine translations, and manage the dubbing process. "
          }
        }
      },
      "CreateFolderResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Indicates the outcome of the folder creation operation. Returns 'success' when the folder is created successfully, enabling your application to implement appropriate success handling, user notifications, and workflow continuation logic."
          },
          "folder_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The unique identifier assigned to your newly created folder. This ID serves as the primary reference for all subsequent folder operations, including adding projects to the folder, retrieving folder contents, or managing folder permissions. Store this value for future API calls that require folder specification.",
            "example": "<number>"
          },
          "folder_name": {
            "type": "string",
            "description": "The exact name assigned to your folder as stored in the system. This field confirms the final folder name after any processing, validation, or normalization that may have occurred during creation, ensuring your application displays the precise name that appears in CAMB.AI Studio and other system interfaces."
          },
          "message": {
            "type": "string",
            "description": "Human-readable feedback about the folder creation operation. This field provides descriptive information suitable for displaying to users in success notifications, logging for debugging purposes, or integration with monitoring systems that track workspace organization activities."
          }
        }
      },
      "StoryDetails": {
        "type": "object",
        "properties": {
          "story_title": {
            "type": "string",
            "title": "Project Name",
            "minLength": 3,
            "maxLength": 255,
            "description": "This represents the human-readable project identifier for your story project. Think of this as the project's display name that appears throughout CAMB.AI Studio, helping you and your team quickly identify which story content you're working with during the story creation process."
          },
          "story_description": {
            "type": "string",
            "title": "Project Description",
            "minLength": 3,
            "maxLength": 5000,
            "nullable": true,
            "description": "This field contains the detailed project context and story synopsis you provided during setup, serving as documentation that travels with your audiobook project throughout its lifecycle. The description becomes particularly valuable for understanding the story's context, genre, and target audience when projects move between team members or when you return to work after time has passed."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At",
            "description": "This timestamp in UTC timezone marks the exact moment your story project setup was initiated, providing crucial information for workflow coordination and project management throughout the narration process."
          },
          "source_language": {
            "$ref": "#/components/schemas/LanguageInput",
            "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
            "example": "en-us"
          },
          "target_languages": {
            "items": {
              "$ref": "#/components/schemas/LanguageInput"
            },
            "type": "array",
            "title": "Target Languages",
            "description": "Languages to generate output in. Pass locale tags (`es-es`, `fr-fr`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
            "example": [
              "es-es",
              "fr-fr"
            ]
          },
          "folder_id": {
            "type": "integer",
            "minimum": 0,
            "nullable": true,
            "description": "This optional field indicates the organizational folder where your story resides within your team's workspace structure. Think of this as your project's filing location within CAMB.AI Studio, helping maintain organized project management as your audiobook library grows and you manage multiple story projects.",
            "example": "<number>"
          },
          "studio_url": {
            "type": "string",
            "description": "This field contains the direct URL link to access your audiobook project within CAMB.AI Studio's web interface. Once your project setup is complete, this URL serves as the primary entry point for all creative work, allowing you and your team members to navigate directly to the project's workspace where you can review generated audio, adjust narrator settings, refine pronunciation guides, manage chapter breaks, and oversee the entire audiobook production process."
          }
        }
      },
      "RunIDsRequestPayload": {
        "properties": {
          "run_ids": {
            "items": {
              "type": "integer",
              "exclusiveMinimum": 0.0
            },
            "type": "array",
            "maxItems": 5,
            "minItems": 2,
            "uniqueItems": true,
            "title": "Run IDs",
            "description": "An array of unique positive integers, each representing the ID of a specific run. You must provide between 2 and 5 IDs, and all IDs must correspond to the same run type (e.g., all text-to-speech or all dubbing runs).",
            "example": [
              12345,
              6789
            ]
          }
        },
        "type": "object",
        "required": [
          "run_ids"
        ],
        "title": "RunIDsRequestPayload"
      },
      "TTSStreamOutputFormat": {
        "type": "string",
        "enum": [
          "wav",
          "flac",
          "adts",
          "pcm_s16le",
          "pcm_s32le"
        ]
      },
      "AudioOutputType": {
        "type": "string",
        "enum": [
          "flac",
          "wav",
          "mp3",
          "aac"
        ],
        "title": "Audio Output"
      },
      "VideoOutputTypeWithoutAVI": {
        "type": "string",
        "enum": [
          "mkv",
          "mp4",
          "mov"
        ],
        "title": "Video Output Type"
      },
      "CreateAudioSeparationRequestPayload": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateTaskWithNameAndDescription"
          },
          {
            "properties": {
              "media_file": {
                "type": "string",
                "format": "binary",
                "title": "Media File",
                "description": "Media file to processed. AAC, FLAC, MP3 and WAV formats are supported.",
                "required": true
              }
            },
            "type": "object"
          }
        ],
        "title": "CreateAudioSeparationRequestPayload"
      },
      "Formalities": {
        "type": "integer",
        "enum": [
          1,
          2
        ],
        "title": "Formalities"
      },
      "Body_create_custom_voice_create_custom_voice_post": {
        "properties": {
          "voice_name": {
            "type": "string",
            "title": "Voice Name",
            "description": "The name or label to be assigned to the voice."
          },
          "gender": {
            "$ref": "#/components/schemas/Gender",
            "description": "Represents the gender of the speaker in the provided audio. Values are encoded as integers."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "title": "Description",
            "default": null,
            "description": "A brief summary of the custom voice—e.g. its intended use, tone or character traits."
          },
          "age": {
            "type": "integer",
            "title": "Age",
            "default": 30,
            "description": "The estimated or actual age of the speaker in the reference audio.",
            "minimum": 1
          },
          "file": {
            "type": "string",
            "format": "binary",
            "title": "File",
            "description": "The reference audio file that will be used to create the custom voice. The file should have clear speech to ensure optimal cloning accuracy. Supported formats include `.aac`, `.flac`, `.mp3` and `.wav`."
          },
          "enhance_audio": {
            "type": "boolean",
            "default": "false",
            "title": "Enhance Audio",
            "description": "If set to `true`, the system will apply audio enhancement techniques such as noise reduction and volume normalization to improve voice clarity."
          },
          "language": {
            "$ref": "#/components/schemas/LanguageInput",
            "title": "Language",
            "default": null,
            "description": "Language of the reference audio (e.g. `en-us`).",
            "example": "en-us"
          }
        },
        "type": "object",
        "required": [
          "voice_name",
          "gender",
          "file"
        ],
        "title": "Body_create_custom_voice_create_custom_voice_post"
      },
      "CreateAPIKeyRequestPayload": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "team_id": {
            "type": "integer",
            "title": "Team Id"
          }
        },
        "type": "object",
        "required": [
          "name",
          "team_id"
        ],
        "title": "CreateAPIKeyRequestPayload"
      },
      "CreateTTSRequestPayload": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateTaskWithNameAndDescription"
          },
          {
            "properties": {
              "text": {
                "type": "string",
                "title": "Text",
                "description": "The text to be converted to speech"
              },
              "voice_id": {
                "type": "integer",
                "title": "Voice Id",
                "description": "The voice ID to be used to generate speech.",
                "default": 147320
              },
              "language": {
                "$ref": "#/components/schemas/LanguageInput",
                "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
                "example": "en-us"
              },
              "gender": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Gender"
                  }
                ],
                "default": 1
              },
              "age": {
                "title": "Age",
                "description": "The age of the speaker of in the speech to be generated."
              }
            },
            "type": "object",
            "required": [
              "text",
              "voice_id",
              "language"
            ]
          }
        ],
        "title": "CreateTTSRequestPayload"
      },
      "CreateTTSStreamRequestPayload": {
        "properties": {
          "text": {
            "type": "string",
            "title": "Text",
            "description": "The content you want converted into spoken audio. This can be anything from a single sentence to paragraphs of text, supporting punctuation for natural speech patterns."
          },
          "voice_id": {
            "type": "integer",
            "title": "Voice ID",
            "description": "The unique identifier for your selected voice profile. You can obtain available voice IDs from the `/list-voices` endpoint or create custom voices with the `/create-custom-voice` endpoint.",
            "default": 147320
          },
          "language": {
            "$ref": "#/components/schemas/LanguageInput",
            "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
            "example": "en-us"
          },
          "gender": {
            "$ref": "#/components/schemas/Gender",
            "default": null,
            "nullable": true,
            "description": "The preferred gender characteristics of the synthesized voice (`0 = Not Specified, 1 = Male, 2 = Female, 9 = Not Applicable`). Defaults to `null`."
          },
          "age": {
            "type": "integer",
            "nullable": true,
            "title": "Age",
            "description": "The approximate age (between 1-100 years) to be reflected in the voice characteristics. This parameter helps fine-tune the timbre and speech patterns to match different age groups."
          },
          "output_format": {
            "title": "Output Format",
            "$ref": "#/components/schemas/TTSStreamOutputFormat",
            "description": "The audio file format for the generated speech stream.",
            "default": "adts"
          }
        },
        "type": "object",
        "required": [
          "text",
          "voice_id",
          "language"
        ],
        "title": "CreateTTSStreamRequestPayload"
      },
      "StreamTTSOutputConfiguration": {
        "properties": {
          "format": {
            "$ref": "#/components/schemas/OutputFormat",
            "default": "wav",
            "description": "Audio format for the streamed response. Choose a container (`mp3`, `wav`, `flac`, `adts`) or a raw PCM format (`pcm_*`)."
          },
          "sample_rate": {
            "type": "integer",
            "title": "Sample Rate",
            "description": "Optional sample rate in Hz. Use this to control the audio quality and compatibility with different devices.",
            "example": 48000,
            "nullable": true
          },
          "apply_enhancement": {
            "type": "boolean",
            "title": "Apply Enhancement",
            "description": "If `true`, applies output audio enhancement (loudness, denoising, polish). Defaults to `true` for most models; `false` for the speed-oriented `mars-flash` and `mars-8.1-flash-beta` models. Set explicitly to override the per-model default.",
            "nullable": true,
            "example": true
          }
        },
        "type": "object",
        "title": "StreamTTSOutputConfiguration"
      },
      "StreamTTSVoiceSettings": {
        "properties": {
          "enhance_reference_audio_quality": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enhance Reference Audio Quality",
            "default": false,
            "description": "Remove noise from reference audio. (useful when the reference has background noise or compression).",
            "example": false
          },
          "maintain_source_accent": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maintain Source Accent",
            "default": false,
            "description": "Maintain the accent from the original source audio.",
            "example": false
          },
          "speaking_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Speaking Rate",
            "default": 1.0,
            "description": "Controls playback speed for generated speech.",
            "example": 1.5
          }
        },
        "type": "object",
        "title": "StreamTTSVoiceSettings"
      },
      "StreamTTSInferenceOptions": {
        "properties": {
          "stability": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Stability",
            "description": "Balances voice consistency and audio quality. Lower values keep the voice closer to the original speaker, higher values improve clarity and smoothness—especially useful for weaker reference audio.",
            "example": 0.6
          },
          "temperature": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 4.0,
                "minimum": 0.01
              },
              {
                "type": "null"
              }
            ],
            "title": "Temperature",
            "description": "Controls randomness. Higher values increase variation and expressiveness.",
            "example": 0.8
          },
          "inference_steps": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 200,
                "minimum": 5
              },
              {
                "type": "null"
              }
            ],
            "title": "Inference Steps",
            "description": "Higher values may improve fidelity at the cost of latency.",
            "example": 15
          },
          "speaker_similarity": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Speaker Similarity",
            "description": "Adjusts how closely the generated voice matches the original speaker’s voice.",
            "example": 0.7,
            "default": 0.7
          },
          "localize_speaker_weight": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Accent Boost",
            "default": 0.0,
            "description": "Controls how much the voice shifts toward a native accent in the target language, at the cost of changing the speaker’s original voice identity slightly."
          },
          "acoustic_quality_boost": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acoustic Quality Boost",
            "default": null,
            "description": "Reduce acoustic noise at the cost of slightly worse speaker similarity."
          }
        },
        "type": "object",
        "title": "StreamTTSInferenceOptions"
      },
      "OutputFormat": {
        "type": "string",
        "enum": [
          "wav",
          "flac",
          "adts",
          "mp3",
          "pcm_s16le",
          "pcm_s16be",
          "pcm_s32be",
          "pcm_s32le",
          "pcm_f32le",
          "pcm_f32be"
        ],
        "description": "Supported audio formats for streaming output.",
        "example": "mp3",
        "title": "OutputFormat"
      },
      "SpeechModels": {
        "type": "string",
        "enum": [
          "mars-8.1-flash-beta",
          "mars-8.1-pro-beta",
          "mars-flash",
          "mars-pro",
          "mars-instruct"
        ],
        "description": "Selects which speech model variant to use for synthesis.",
        "example": 1,
        "title": "SpeechModels"
      },
      "CreateStreamTTSRequestPayload": {
        "properties": {
          "text": {
            "type": "string",
            "maxLength": 3000,
            "minLength": 3,
            "title": "Text",
            "description": "The text to synthesize into speech (3–3000 characters). For `mars-8.1-flash-beta` and `mars-8.1-pro-beta`, you can include inline controls such as CMU phonemes (`[B EY1 S]`) and non-verbal tags (`[laughter]`).",
            "example": "[laughter] He plays the [B EY1 S] guitar while catching a [B AE1 S] fish."
          },
          "language": {
            "type": "string",
            "enum": [
              "ro-ro",
              "nl-nl",
              "es-es",
              "zh-tw",
              "en-uk",
              "el-gr",
              "cs-cz",
              "vi-vn",
              "bn-bd",
              "ar-tn",
              "de-de",
              "fr-ca",
              "ar-xa",
              "th-th",
              "ar-eg",
              "ar-sa",
              "ar-sy",
              "pa-in",
              "zh-cn",
              "ar-jo",
              "ru-ru",
              "bn-in",
              "uk-ua",
              "es-us",
              "ja-jp",
              "ar-ae",
              "mr-in",
              "en-au",
              "de-ch",
              "pt-pt",
              "ar-kw",
              "ar-qa",
              "as-in",
              "hi-in",
              "fr-be",
              "fi-fi",
              "fr-fr",
              "ar-dz",
              "fr-ch",
              "it-it",
              "de-at",
              "en-in",
              "ko-kr",
              "en-us",
              "zh-hk",
              "ar-om",
              "ar-ma",
              "pl-pl",
              "ar-ly",
              "es-mx",
              "tr-tr",
              "ar-iq",
              "ar-lb",
              "ml-in",
              "pt-br",
              "id-id",
              "ar-bh",
              "kn-in",
              "nl-be",
              "te-in",
              "ar-ye",
              "ta-in",
              "af-za",
              "am-et",
              "az-az",
              "bg-bg",
              "bgc-in",
              "bho-in",
              "bs-ba",
              "ca-es",
              "cy-gb",
              "da-dk",
              "en-ca",
              "en-gb",
              "en-hk",
              "en-ie",
              "en-ke",
              "en-ng",
              "en-nz",
              "en-ph",
              "en-sg",
              "en-tz",
              "en-za",
              "es-ar",
              "es-bo",
              "es-cl",
              "es-co",
              "es-cr",
              "es-cu",
              "es-do",
              "es-ec",
              "es-gq",
              "es-gt",
              "es-hn",
              "es-ni",
              "es-pa",
              "es-pe",
              "es-pr",
              "es-py",
              "es-sv",
              "es-uy",
              "es-ve",
              "et-ee",
              "eu-es",
              "fa-ir",
              "fil-ph",
              "ga-ie",
              "gl-es",
              "gu-in",
              "he-il",
              "hr-hr",
              "hu-hu",
              "hy-am",
              "is-is",
              "jv-id",
              "ka-ge",
              "kk-kz",
              "km-kh",
              "lo-la",
              "lt-lt",
              "lv-lv",
              "mk-mk",
              "mn-mn",
              "ms-my",
              "mt-mt",
              "my-mm",
              "nb-no",
              "ne-np",
              "ps-af",
              "si-lk",
              "sk-sk",
              "sl-si",
              "so-so",
              "sq-al",
              "sr-rs",
              "sv-se",
              "sw-ke",
              "sw-tz",
              "ta-lk",
              "ta-my",
              "ta-sg",
              "ur-in",
              "ur-pk",
              "uz-uz",
              "zh-cn-henan",
              "zh-cn-liaoning",
              "zh-cn-shaanxi",
              "zh-cn-shandong",
              "zh-cn-sichuan",
              "zu-za",
              "sa-in",
              "tl-ph",
              "es-xl",
              "or-in",
              "mai-in",
              "sd-in",
              "kok-in",
              "mni-in",
              "ks-in",
              "doi-in",
              "brx-in",
              "sat-in",
              "yue-hk",
              "no-no",
              "rw-rw",
              "be-by",
              "eo-xx",
              "kab-dz",
              "lg-ug",
              "ug-cn",
              "mhr-ru",
              "ba-ru",
              "ars-sa",
              "npi-np",
              "ckb-iq",
              "dgo-in",
              "knn-in",
              "kbd-ru",
              "ary-ma",
              "afb-kw",
              "bo-cn",
              "fy-nl",
              "kmr-xx",
              "ab-ge",
              "adx-cn",
              "ky-kg",
              "kln-xx",
              "dv-mv",
              "luo-xx",
              "ady-ru",
              "mrj-xx",
              "tt-ru",
              "ltg-xx",
              "br-fr",
              "phr-xx",
              "cv-ru",
              "arz-eg",
              "gui-bo",
              "acw-sa",
              "acx-xx",
              "orc-xx",
              "mvy-xx",
              "aeb-xx",
              "gjk-xx",
              "phl-xx",
              "odk-xx",
              "lus-xx",
              "ayl-xx",
              "fue-ne",
              "hno-xx",
              "kxp-xx",
              "brh-pk",
              "plt-xx",
              "gbm-in",
              "bmm-xx",
              "rof-xx",
              "ydd-xx",
              "mi-nz",
              "ln-cd",
              "xmv-mg",
              "tkg-xx",
              "ha-ng",
              "nan-xx",
              "bzc-xx",
              "oc-fr",
              "oru-xx",
              "ksf-cm",
              "an-es",
              "bft-pk",
              "nnh-xx",
              "sah-xx",
              "pms-xx",
              "lij-xx",
              "yo-ng",
              "vro-xx",
              "apc-xx",
              "khw-xx",
              "uzn-xx",
              "fui-cm",
              "bnm-cm",
              "trw-xx",
              "fuc-xx",
              "kam-xx",
              "msh-xx",
              "ff-sn",
              "fuf-xx",
              "pwn-xx",
              "ig-xx",
              "ext-es",
              "tok-xx",
              "ia-xx",
              "xh-za",
              "scn-xx",
              "koo-xx",
              "fub-cm",
              "plk-xx",
              "ewo-cm",
              "nso-xx",
              "gby-ng",
              "gdf-ng",
              "ceb-ph",
              "gwt-af",
              "kw-gb",
              "bhr-mg",
              "dua-cm",
              "gbr-ng",
              "txy-xx",
              "mxu-xx",
              "kna-ng",
              "kfp-xx",
              "its-xx",
              "haw-us",
              "tcy-xx",
              "bjn-id",
              "wbl-xx",
              "pbt-xx",
              "xmw-xx",
              "szy-xx",
              "xmf-xx",
              "twu-xx",
              "nlv-xx",
              "qxw-xx",
              "pst-af",
              "wji-xx",
              "fat-gh",
              "bhh-il",
              "tlp-mx",
              "ldb-ng",
              "ndi-xx",
              "elm-ng",
              "jns-xx",
              "hwo-xx",
              "bbl-ge",
              "afo-ng",
              "abb-cm",
              "jal-xx",
              "idu-xx",
              "bew-id",
              "qup-xx",
              "noe-xx",
              "byc-xx",
              "bug-id",
              "btm-id",
              "hia-xx",
              "deg-ng",
              "kvx-xx",
              "pcm-xx",
              "ijn-xx",
              "ala-ng",
              "pbu-xx",
              "bjj-xx",
              "cjk-ao",
              "mrr-xx",
              "qvi-xx",
              "bgp-pk",
              "bag-xx"
            ],
            "title": "Language",
            "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
            "example": "en-us",
            "default": "en-us"
          },
          "voice_id": {
            "type": "integer",
            "minimum": 1,
            "title": "Voice Id",
            "description": "Voice profile ID to use for synthesis. Get available IDs from `/list-voices`.",
            "example": 147320,
            "default": 147320
          },
          "speech_model": {
            "$ref": "#/components/schemas/SpeechModels",
            "default": "mars-8.1-flash-beta",
            "description": "Speech model variant to use for synthesis. Use `mars-8.1-flash-beta` or `mars-8.1-pro-beta` to leverage inline pronunciation and non-verbal controls in `text`.",
            "example": "mars-8.1-flash-beta"
          },
          "enhance_named_entities_pronunciation": {
            "type": "boolean",
            "title": "Enhance Named Entities Pronunciation",
            "default": false,
            "description": "If `true`, improves pronunciation of names, brands, and other named entities.",
            "example": true
          },
          "output_configuration": {
            "$ref": "#/components/schemas/StreamTTSOutputConfiguration",
            "description": "Controls output format and enhancement options for the stream.",
            "example": {
              "format": "wav"
            }
          },
          "voice_settings": {
            "$ref": "#/components/schemas/StreamTTSVoiceSettings",
            "description": "Voice behavior preferences such as accent preservation and reference enhancement.",
            "example": {
              "enhance_reference_audio_quality": false,
              "maintain_source_accent": false,
              "speaking_rate": 1.5
            }
          }
        },
        "type": "object",
        "required": [
          "text",
          "language",
          "voice_id"
        ],
        "title": "CreateStreamTTSRequestPayload",
        "description": "Request body for `/tts-stream`."
      },
      "EndToEndDubbingRequestPayload": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "source_transcript": {
                "allOf": [{ "$ref": "#/components/schemas/DubSRTInput" }],
                "nullable": true,
                "default": null,
                "description": "Optional original-language SRT contents. Send the file text in JSON, not a file path or URL."
              },
              "target_transcripts": {
                "type": "array",
                "items": { "$ref": "#/components/schemas/DubTargetSRTInput" },
                "maxItems": 100,
                "nullable": true,
                "default": null,
                "description": "Optional translated SRTs, one per requested target language. Languages must be unique after normalization. Source and target SRT contents must not exceed 10 MiB UTF-8 combined."
              },
              "video_url": {
                "type": "string",
                "title": "Video Url",
                "description": "The URL of the media file to be used to create the end-to-end dubbing task.",
                "nullable": true,
                "example": null
              },
              "source_language": {
                "$ref": "#/components/schemas/LanguageInput",
                "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
                "example": "en-us"
              },
              "target_languages": {
                "items": {
                  "$ref": "#/components/schemas/LanguageInput"
                },
                "type": "array",
                "description": "Languages to generate output in. Pass locale tags (`es-es`, `fr-fr`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
                "example": [
                  "es-es",
                  "fr-fr"
                ]
              }
            },
            "required": [
              "source_language"
            ]
          },
          {
            "$ref": "#/components/schemas/CreateTaskWithNameAndDescription"
          },
          {
            "type": "object",
            "properties": {
              "selected_audio_tracks": {
                "items": {
                  "type": "integer",
                  "required": true
                },
                "type": "array",
                "nullable": true,
                "description": "Optional array of one or two zero‑based audio track indices to dub. Only supported for `MXF` files. If omitted, the first audio track (index 0) is used by default.",
                "minItems": 1,
                "maxItems": 2,
                "default": null
              },
              "add_output_as_an_audio_track": {
                "type": "boolean",
                "nullable": true,
                "default": null,
                "description": "Optional flag to append the dubbed audio as a new audio track in the output file. Only supported for `MXF` files. If `true`, the dubbed audio is added as an additional track; if `false` or omitted, the source would be returned with only dubbed audio."
              },
              "chosen_dictionaries": {
                "$ref": "#/components/schemas/ChosenDictionariesSchema"
              },
              "target_language": {
                "$ref": "#/components/schemas/LanguageInput",
                "description": "The target output language. Pass a locale tag (`fr-fr`, `es-es`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
                "example": "fr-fr"
              },
              "transcription_mode": {
                "type": "string",
                "enum": [
                  "fast",
                  "slow"
                ],
                "title": "Transcription Mode",
                "description": "Transcription mode. `fast` (default) is quicker; `slow` takes longer and may produce a more accurate transcript.",
                "default": "fast"
              },
              "include_music_in_fg": {
                "type": "boolean",
                "default": true,
                "description": "Keep music in the foreground audio during source separation. When `true` (default), background music is preserved alongside speech; set to `false` to strip music out of the foreground.",
                "example": true
              }
            }
          }
        ],
        "title": "EndToEndDubbingRequestPayload"
      },
      "DubSRTInput": {
        "type": "object",
        "additionalProperties": false,
        "required": ["content"],
        "properties": {
          "format": {
            "type": "string",
            "enum": ["srt"],
            "default": "srt"
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2097152,
            "description": "SRT file contents, limited to 2 MiB encoded as UTF-8. Must contain at least one cue parsed by the srt library with parse errors enabled. No additional cue-count, numbering, timing, ordering, control-character, or dialogue-content checks are imposed beyond the parser. Overlapping and out-of-order cues are accepted. BOM and CRLF/CR line endings are normalized. Scripts are stored under temp/ in the workspace's configured storage.",
            "example": "1\n00:00:00,500 --> 00:00:02,800\nWelcome back.\n"
          }
        }
      },
      "DubTargetSRTInput": {
        "type": "object",
        "additionalProperties": false,
        "required": ["language", "content"],
        "properties": {
          "language": { "$ref": "#/components/schemas/LanguageInput" },
          "format": {
            "type": "string",
            "enum": ["srt"],
            "default": "srt"
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2097152,
            "description": "Translated SRT file contents. The same parser validation and 2 MiB UTF-8 limit as source_transcript apply.",
            "example": "1\n00:00:00,500 --> 00:00:02,800\nBienvenidos de nuevo.\n"
          }
        }
      },
      "CreateTextToVoiceRequestPayload": {
        "properties": {
          "text": {
            "title": "Text",
            "description": "The text content that will be converted into synthesized speech. This text will be spoken by your generated voice and serves as a sample of the voice's capabilities.",
            "type": "string"
          },
          "voice_description": {
            "title": "Voice Description",
            "description": "A detailed description (minimum 18 words/100+ characters) of the desired voice characteristics. Be specific about gender, age, accent, emotional tone, speaking style, or cultural context to guide the synthesis engine in creating an authentic voice.",
            "type": "string"
          }
        },
        "required": [
          "text",
          "voice_description"
        ]
      },
      "ExpireAPIKeyRequestPayload": {
        "properties": {
          "api_key_id": {
            "type": "integer",
            "title": "Api Key Id"
          }
        },
        "type": "object",
        "required": [
          "api_key_id"
        ],
        "title": "ExpireAPIKeyRequestPayload"
      },
      "Gender": {
        "type": "integer",
        "enum": [
          0,
          1,
          2,
          9
        ],
        "title": "Gender",
        "description": "The gender of the speaker."
      },
      "TaskStatus": {
        "type": "string",
        "enum": [
          "SUCCESS",
          "PENDING",
          "TIMEOUT",
          "ERROR",
          "PAYMENT_REQUIRED"
        ],
        "title": "TaskStatus"
      },
      "OrchestratorPipelineResult": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/TaskStatus"
          },
          "run_id": {
            "type": [
              "integer",
              "null"
            ],
            "title": "Run ID"
          }
        },
        "type": "object",
        "title": "OrchestratorPipelineResult"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "LanguageItem": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "ID",
            "description": "The id property represents a unique numerical identifier assigned to each language in the system."
          },
          "language": {
            "type": "string",
            "title": "Language",
            "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
            "example": "en-us"
          },
          "short_name": {
            "type": "string",
            "title": "Short Name",
            "description": "The short name is a standardized identifier for each language and locale combination, represented in the format of <language code>-<country code>."
          }
        },
        "type": "object",
        "title": "LanguageItem"
      },
      "LanguageArray": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/LanguageItem"
        },
        "title": "LanguageArray"
      },
      "TaskID": {
        "properties": {
          "task_id": {
            "type": "string",
            "title": "Task ID"
          }
        },
        "type": "object",
        "title": "Task ID"
      },
      "CreateCustomVoiceOut": {
        "properties": {
          "voice_id": {
            "type": "integer",
            "title": "Voice ID"
          }
        },
        "type": "object",
        "title": "CreateCustomVoiceOut"
      },
      "Body_transcribe_transcribe_post": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateTaskWithNameAndDescription"
          },
          {
            "properties": {
              "language": {
                "$ref": "#/components/schemas/LanguageInput",
                "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
                "example": "en-us"
              },
              "file": {
                "type": "string",
                "format": "binary",
                "title": "Media File",
                "description": "Media file for transcription",
                "deprecated": true
              },
              "media_file": {
                "type": "string",
                "format": "binary",
                "title": "Media File",
                "description": "Media file for transcription"
              },
              "audio_url": {
                "type": "string",
                "title": "Audio URL",
                "description": "Audio URL for transcription. (Supports both video and audio files). Leave blank when uploading a file.",
                "deprecated": true,
                "example": ""
              },
              "media_url": {
                "type": "string",
                "title": "Media URL",
                "description": "Media URL for transcription. (Supports both video and audio files). Leave blank when uploading `media_file`.",
                "example": ""
              },
              "transcription_mode": {
                "type": "string",
                "enum": [
                  "fast",
                  "slow"
                ],
                "title": "Transcription Mode",
                "description": "Transcription mode. `fast` (default) is quicker; `slow` takes longer and may produce a more accurate transcript.",
                "default": "fast"
              },
              "include_music_in_fg": {
                "type": "boolean",
                "default": true,
                "title": "Include Music In Fg",
                "description": "Keep music in the foreground audio during source separation. When `true` (default), background music is preserved alongside speech; set to `false` to strip music out of the foreground."
              },
              "formatting_options": {
                "type": "string",
                "title": "Formatting Options",
                "description": "Optional JSON string of subtitle formatting options. When provided, subtitle segmentation also runs on the resulting transcript, in the same language. Supported keys: `max_segment_duration_in_seconds` (default `7.0`), `min_segment_duration_in_seconds` (default `1.0`), `max_characters_in_segment` (default `42`).",
                "example": "{\"max_segment_duration_in_seconds\": 7, \"min_segment_duration_in_seconds\": 1, \"max_characters_in_segment\": 42}"
              }
            },
            "type": "object",
            "required": [
              "language"
            ]
          }
        ],
        "title": "Body_transcribe_transcribe_post"
      },
      "Body_translate_translate_post": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateTaskWithNameAndDescription"
          },
          {
            "properties": {
              "source_language": {
                "$ref": "#/components/schemas/LanguageInput",
                "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
                "example": "en-us"
              },
              "target_language": {
                "$ref": "#/components/schemas/LanguageInput",
                "example": "fr-fr",
                "description": "The target output language. Pass a locale tag (`fr-fr`, `es-es`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages)."
              },
              "texts": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "title": "Texts",
                "description": "An array of strings to be translated. This field is required and can contain multiple text segments for batch translation."
              },
              "age": {
                "type": "integer",
                "title": "Age",
                "description": "An integer representing the intended audience age. This helps adjust vocabulary and expressions to be age-appropriate, which is particularly important when translating content for children, teenagers, or specific age demographics."
              },
              "formality": {
                "$ref": "#/components/schemas/Formalities",
                "title": "Formality",
                "description": "Specifies whether the translated text should be formal or informal. This affects the tone and word choices in languages."
              },
              "gender": {
                "$ref": "#/components/schemas/Gender",
                "description": "Specifies grammatical gender preferences when relevant in the target language. In many languages, adjectives, nouns, and verbs may change form based on gender, and this parameter helps ensure the translation uses the appropriate forms."
              },
              "chosen_dictionaries": {
                "$ref": "#/components/schemas/ChosenDictionariesSchema",
                "description": " An optional parameter that allows you to specify specialized vocabulary dictionaries to use during translation. This ensures that technical terms are translated appropriately for specific fields like medicine, law, technology, or other industries."
              }
            },
            "type": "object",
            "required": [
              "source_language",
              "target_language",
              "texts"
            ]
          }
        ],
        "title": "Body_translate_translate_post"
      },
      "RunInfoResponse": {
        "properties": {
          "video_url": {
            "type": "string",
            "title": "Output Video URL",
            "description": "Direct link to download the complete dubbed video file."
          },
          "audio_url": {
            "type": "string",
            "title": "Output Audio URL",
            "description": "Direct link to download the isolated dubbed audio track."
          },
          "transcript": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DialogueItem"
            },
            "title": "Transcript",
            "description": "Array of dialogue items containing speaker identification, timing information and textual transcript for each dialogue item."
          }
        },
        "type": "object",
        "title": "RunInfoResponse"
      },
      "StorySetupResultResponse": {
        "properties": {
          "run_id": {
            "type": "integer",
            "minimum": 0,
            "title": "Run ID",
            "description": "The unique identifier for the run, which was generated during the Story setup process and returned upon task completion."
          },
          "story_details": {
            "$ref": "#/components/schemas/StoryDetails"
          }
        }
      },
      "StoryRunInfoResponse": {
        "properties": {
          "audio_url": {
            "type": "string",
            "title": "Story Output Audio URL",
            "description": "The URL pointing to the generated audio file for the story."
          },
          "dialogue_url": {
            "type": "string",
            "title": "Story Dialogue Audio URL",
            "description": "The URL pointing to the audio file that contains the story's dialogue."
          },
          "transcript": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DialogueItem"
            },
            "title": "Story Transcript",
            "description": "A collection of dialogue items representing the textual transcript of the story."
          }
        }
      },
      "AudioSeparationRunInfoResponse": {
        "properties": {
          "foreground_audio_url": {
            "type": "string",
            "title": "Audio Separation Foreground Audio URL",
            "description": "The URL pointing to the generated audio file for the detected foreground audio."
          },
          "background_audio_url": {
            "type": "string",
            "title": "Audio Separation Background Audio URL",
            "description": "The URL pointing to the generated audio file for the detected background audio."
          }
        }
      },
      "TextToVoiceRunInfoResponse": {
        "properties": {
          "previews": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Text to Voice Audio URLs",
            "description": "An array of two distinct URL strings, each pointing to a unique voice sample generated from your text prompt. These samples represent different voice interpretations based on your description, allowing you to compare options before selecting your preferred voice for further use. ",
            "required": true
          }
        }
      },
      "DubAltFormatResponseBody": {
        "properties": {
          "output_url": {
            "title": "The URL pointing to the generated media file in the format that specified.",
            "schema": {
              "$ref": "#/components/schemas/VideoOutputTypeWithoutAVI"
            },
            "description": "A presigned URL that points to the dubbed media file that was exported in the file format that was requested by the user."
          }
        },
        "title": "Output URL"
      },
      "TaskIDParam": {
        "type": "string",
        "title": "Task ID",
        "description": "This parameter represents a unique identifier for a task. It is used in various API endpoints to query the status or result of a specific task. The `task_id` is typically returned when a task is created."
      },
      "RunIDParam": {
        "type": "integer",
        "title": "Run ID",
        "description": "The unique identifier for the run, which was generated during the creation process and returned upon task completion."
      },
      "IncludeTranscriptionQuery": {
        "type": "boolean",
        "default": false,
        "description": "The optional `include_transcript` query parameter determines whether the detailed transcript data should be included in the response.",
        "title": "Include Transcript"
      },
      "DictionaryIDPathParam": {
        "type": "integer",
        "title": "Dictionary Id",
        "description": "This parameter tells the API exactly which dictionary you're interested in. Each dictionary in the system has a unique numerical ID that serves as its primary identifier."
      },
      "FolderItem": {
        "properties": {
          "team_id": {
            "type": "integer",
            "title": "Team ID",
            "description": "Unique identifier for the team that owns this folder within the CAMB.AI workspace. This establishes the organizational hierarchy and ensures that folder access permissions align with your team's collaboration settings, allowing team members to share and manage projects collectively while maintaining proper access control."
          },
          "folder_id": {
            "type": "integer",
            "title": "Folder ID",
            "description": "Unique system identifier for this specific folder within your CAMB.AI workspace. This ID serves as the primary reference when creating new tasks, organizing existing projects, or performing folder-related operations through the API, ensuring precise folder targeting across all workspace interactions.",
            "example": "<number>"
          },
          "folder_name": {
            "type": "string",
            "title": "Folder Name",
            "description": "Display name for the folder as it appears in your CAMB.AI workspace dashboard. Choose meaningful names that reflect the folder's purpose or project category, such as 'Marketing Audio Projects' or 'Podcast Transcriptions', to help you and your team quickly identify and navigate to the right organizational container for your tasks."
          },
          "run_count": {
            "type": "integer",
            "minimum": 0,
            "title": "Run Count",
            "description": "Total number of completed tasks and processing runs currently stored within this folder. This metric provides valuable insight into folder activity levels and helps you monitor project volume, making it easier to assess workspace utilization and identify your most active project categories for better resource planning and organization."
          }
        }
      },
      "VoiceItem": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "ID",
            "description": "A unique identifier for the voice record. This ID serves as the primary reference when using the voice in other API operations."
          },
          "voice_name": {
            "type": "string",
            "title": "Voice Name",
            "description": "The name or label assigned to the voice. For public voices, this typically indicates the voice character (e.g., 'Sarah' or 'Michael'). For custom voices, this is the name you provided during creation."
          },
          "gender": {
            "type": "integer",
            "nullable": true,
            "title": "Gender",
            "description": "Represents the gender of the voice, encoded as an integer value. Common values include `1` for male and `2` for female, though other values may be used to represent non-binary or other gender identities."
          },
          "age": {
            "type": "integer",
            "nullable": true,
            "title": "Age",
            "description": "The approximate age of the voice, represented as an integer. This helps you select voices that match your desired demographic characteristics. May be `null` if age information is not available."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "title": "Description",
            "default": null,
            "description": "A brief summary describing the custom voice's characteristics—such as its tone, emotional quality, or intended use cases. This field provides context beyond the basic demographic information. May be `null` for voices without descriptions."
          },
          "transcript": {
            "type": "string",
            "nullable": true,
            "title": "Transcript",
            "default": null,
            "description": "The transcribed text of the source recording used to create custom voices. This can be helpful to understand the vocal range and quality demonstrated in the original sample. May be `null` if no transcript is available."
          },
          "is_published": {
            "type": "boolean",
            "nullable": true,
            "title": "Is Published",
            "description": "Indicates whether the voice is shared on the marketplace (`true`) or private to your account (`false`). This allows you to identify shared voices that others can access."
          },
          "language": {
            "$ref": "#/components/schemas/LanguageInput",
            "title": "Language",
            "default": null,
            "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
            "example": "en-us"
          }
        },
        "type": "object",
        "title": "VoiceItem"
      },
      "DialogueItem": {
        "type": "object",
        "description": "A JSON that represents a single piece of dialogue or speech within a given time range. It includes details about the timing (start and end), the content of the dialogue (text), and the speaker who delivers the dialogue",
        "properties": {
          "start": {
            "type": "number",
            "format": "float",
            "title": "Start Time",
            "description": "The start time (in seconds) of the dialogue."
          },
          "end": {
            "type": "number",
            "format": "float",
            "title": "End Time",
            "description": "The end time (in seconds) of the dialogue."
          },
          "text": {
            "type": "string",
            "title": "Dialogue Text",
            "description": "The actual text content of the dialogue spoken by the speaker."
          },
          "speaker": {
            "type": "string",
            "title": "Speaker Name",
            "description": "The name or identifier of the speaker delivering the dialogue."
          }
        },
        "required": [
          "start",
          "end",
          "text",
          "speaker"
        ],
        "title": "DialogueItem"
      },
      "ListDialogue": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/DialogueItem"
        },
        "title": "ListDialogue"
      },
      "ListFolders": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/FolderItem"
        },
        "title": "List Folders"
      },
      "TranslationResult": {
        "type": "object",
        "properties": {
          "texts": {
            "description": "An array of strings containing the translated output texts. Each item in the array corresponds to one translated text",
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "translated texts"
          }
        },
        "title": "Translation Result"
      },
      "AudioOutputFileURLResponse": {
        "type": "object",
        "properties": {
          "output_url": {
            "title": "Output URL",
            "type": "string",
            "description": "A presigned URL that points to the output audio file."
          }
        }
      },
      "AudioBytesResponse": {
        "type": "string",
        "contentEncoding": "base64",
        "title": "Audio Bytes Response"
      },
      "ListVoice": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/VoiceItem"
        },
        "title": "ListVoice"
      },
      "CreateDictionaryFromFileRequestBody": {
        "properties": {
          "dictionary_file": {
            "type": "string",
            "format": "binary",
            "title": "Dictionary File",
            "description": "CSV or Excel Sheet Matching the required structure for a dictionary."
          },
          "dictionary_name": {
            "type": "string",
            "maxLength": 100,
            "title": "Dictionary Name",
            "description": "The name of the dictionary to be created. This is mainly used for organizational purposes."
          },
          "dictionary_description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "title": "Dictionary Description",
            "description": "The description of the dictionary to be created. This is an optional field that is used to help you provide some info about your dictionaries for better organization."
          }
        },
        "type": "object",
        "required": [
          "dictionary_file",
          "dictionary_name"
        ],
        "title": "CreateDictionaryFromFileRequestBody"
      },
      "DictionaryCreated": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message",
            "description": "Human-readable feedback that communicates the outcome of the dictionary operation with actionable context for your application users. This message provides essential information about operation success, partial completion scenarios, or guidance for addressing any issues that occurred during processing."
          },
          "status": {
            "type": "string",
            "title": "Status",
            "description": "Standardized operation outcome indicator that enables programmatic response handling across all dictionary management workflows. This status field provides consistent, machine-readable confirmation of operation results, allowing your application logic to branch appropriately between success scenarios, partial completion cases, and error conditions."
          }
        }
      },
      "UpdateTermTranslationsPayload": {
        "properties": {
          "translations": {
            "items": {
              "$ref": "#/components/schemas/TermTranslation"
            },
            "type": "array",
            "title": "Translations"
          }
        },
        "description": "Represents the payload used to update one or more translations for a given term. This object contains an array of TermTranslation entries, each specifying a translated text and its target language. When submitted, the existing set of translations for the term will be replaced or augmented according to the provided list.",
        "type": "object",
        "required": [
          "translations"
        ],
        "title": "UpdateTermTranslationsPayload"
      },
      "AddDictionaryTermPayload": {
        "properties": {
          "translations": {
            "items": {
              "$ref": "#/components/schemas/TermTranslation"
            },
            "type": "array",
            "title": "Translations"
          }
        },
        "type": "object",
        "description": "Represents the payload used to add one or more translations for a given term. This object contains an array of entries, each specifying a translated text and its target language. When submitted, the existing set of translations for the term will be replaced or augmented according to the provided list.",
        "required": [
          "translations"
        ],
        "title": "AddDictionaryTermPayload"
      },
      "TermTranslation": {
        "properties": {
          "translation": {
            "type": "string",
            "maxLength": 255,
            "title": "Translation",
            "description": "The translated text of the term in the specified target language. This should be the most accurate and contextually appropriate translation of the original term."
          },
          "language": {
            "$ref": "#/components/schemas/LanguageInput",
            "description": "The target output language. Pass a locale tag (`fr-fr`, `es-es`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
            "example": "fr-fr"
          }
        },
        "type": "object",
        "required": [
          "translation",
          "language"
        ],
        "title": "TermTranslation",
        "description": "Represents a single translation of a term into a specific target language. Each object contains the translated text along with its corresponding language identifier, enabling multilingual term management and localization workflows."
      },
      "TextToAudioType": {
        "type": "string",
        "enum": [
          "sound",
          "music"
        ],
        "description": "Controls the kind of audio to generate. Use `music` to create musical content (melody, harmony, rhythm). Use `sound` to create non-musical sound effects (foley, ambience, UI cues, impacts).",
        "default": "sound"
      },
      "TranscriptFileFormat": {
        "type": "string",
        "enum": [
          "srt",
          "vtt",
          "txt"
        ],
        "default": "txt",
        "title": "TranscriptFileFormat"
      },
      "TranscriptDataType": {
        "type": "string",
        "enum": [
          "raw_data",
          "file"
        ],
        "default": "file",
        "title": "TranscriptDataType"
      },
      "OutputType": {
        "type": "string",
        "enum": [
          "raw_bytes",
          "file_url"
        ],
        "default": "raw_bytes",
        "title": "Output Type"
      },
      "OutputAPIKey": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id"
          },
          "api_key": {
            "type": "string",
            "title": "Api Key"
          },
          "api_key_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Key Name"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "expiry_time": {
            "type": "string",
            "format": "date-time",
            "title": "Expiry Time"
          },
          "team_id": {
            "type": "integer",
            "title": "Team Id"
          },
          "is_valid": {
            "type": "boolean",
            "title": "Is Valid"
          }
        },
        "type": "object",
        "required": [
          "id",
          "api_key",
          "created_at",
          "expiry_time",
          "team_id",
          "is_valid"
        ],
        "title": "OutputAPIKey"
      },
      "ChosenDictionariesSchema": {
        "type": "array",
        "nullable": true,
        "items": {
          "type": "integer"
        },
        "uniqueItems": true,
        "minItems": 1,
        "default": null,
        "description": "An optional list of dictionary IDs selected by the user. Each entry must be an integer corresponding to a valid dictionary ID. If provided, at least one ID is required."
      },
      "Dictionary": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Dictionary ID",
            "description": " The Dictionary's Unique Identifier. This integer value serves as the dictionary's permanent address in the system. Once assigned, this ID never changes - It's how the system definitively identifies this particular collection of terms."
          },
          "name": {
            "type": "string",
            "title": "Dictionary Name",
            "description": " The Dictionary's Display Name. This string contains the human-readable name that identifies the dictionary to users. Unlike the ID, which is purely functional, the name is designed to be meaningful to people who are choosing which dictionary to work with."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "title": "Dictionary Description",
            "description": "Detailed Dictionary Information. This optional field can contain a longer explanation of what the dictionary covers, its intended audience, or special characteristics that set it apart from other dictionaries. The description might explain the scope of terms included, the expertise level assumed, or specific domains covered."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Creation Date",
            "description": "Dictionary Creation Timestamp. This date-time value tells you exactly when someone first created this dictionary in the system. Understanding creation dates helps you gauge how established a dictionary is and can be useful for administrative purposes, auditing, or simply satisfying curiosity about a dictionary's history. The timestamp includes both date and time information, giving you precise historical context."
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Update Date",
            "description": "Last Modification Timestamp. Perhaps one of the most practically useful pieces of metadata, this timestamp shows when someone last made changes to the dictionary. This could mean adding new terms, modifying existing definitions, updating the dictionary's name or description, or any other modification. For applications where content freshness matters, this timestamp helps you and your users understand how current the dictionary's information might be."
          }
        }
      },
      "DictionaryTermTranslationsList": {
        "type": "array",
        "minItems": 0,
        "items": {
          "$ref": "#/components/schemas/TermTranslationItem"
        }
      },
      "DictionaryWithTerms": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Dictionary"
          },
          {
            "properties": {
              "dictionary_terms": {
                "$ref": "#/components/schemas/TermTranslation"
              }
            }
          }
        ]
      },
      "TermTranslationItem": {
        "properties": {
          "language": {
            "$ref": "#/components/schemas/LanguageInput",
            "description": "The target output language. Pass a locale tag (`fr-fr`, `es-es`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
            "example": "fr-fr"
          },
          "term_text": {
            "type": "string",
            "description": ""
          }
        }
      },
      "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"
      },
      "CreateFolderPayload": {
        "properties": {
          "folder_name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 3,
            "title": "Folder Name",
            "description": "Display name for the folder as it appears in your CAMB.AI workspace dashboard. Choose meaningful names that reflect the folder's purpose or project category, such as 'Marketing Audio Projects' or 'Podcast Transcriptions', to help you and your team quickly identify and navigate to the right organizational container for your tasks."
          }
        },
        "type": "object",
        "required": [
          "folder_name"
        ],
        "title": "CreateFolderPayload"
      },
      "CreateTranslationStreamRequestPayload": {
        "properties": {
          "text": {
            "type": "string",
            "title": "Text"
          },
          "source_language": {
            "$ref": "#/components/schemas/LanguageInput",
            "description": "The language of the input text. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs (`1` or `\"1\"`) still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
            "example": "en-us"
          },
          "target_language": {
            "$ref": "#/components/schemas/LanguageInput",
            "description": "The target output language. Pass a locale tag (`fr-fr`, `es-es`, `de-de`). Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
            "example": "fr-fr"
          },
          "formality": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Formalities"
              },
              {
                "type": "null"
              }
            ],
            "default": 2
          },
          "gender": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Gender"
              },
              {
                "type": "null"
              }
            ],
            "default": 1
          }
        },
        "type": "object",
        "required": [
          "text",
          "source_language",
          "target_language"
        ],
        "title": "CreateTranslationStreamRequestPayload"
      },
      "CreateTaskWithNameAndDescription": {
        "properties": {
          "project_name": {
            "type": "string",
            "title": "Project Name",
            "description": "Enter a distinctive name for your project that reflects its purpose or content. This name will be displayed in your CAMB.AI workspace dashboard and used to organize related assets, transcriptions, etc.. . Choose something memorable that helps you quickly identify this specific project among your other voice, audio and localization tasks.",
            "minLength": 3,
            "maxLength": 255,
            "nullable": true,
            "example": null
          },
          "project_description": {
            "type": "string",
            "title": "Project Description",
            "description": "Provide details about your project's goals and specifications. Include information such as the target languages for translation or dubbing, desired voice characteristics, emotional tones to capture, or specific audio processing requirements, outlining the workflow here can serve as valuable documentation for organizational purposes.",
            "minLength": 3,
            "maxLength": 5000,
            "nullable": true,
            "example": null
          }
        }
      },
      "BulkTTSRunsResults": {
        "type": "object",
        "title": "BulkTTSRunsResults",
        "additionalProperties": {
          "$ref": "#/components/schemas/AudioOutputFileURLResponse"
        },
        "minProperties": 1,
        "maxProperties": 5,
        "description": "An object containing the results of one to five text-to-speech (TTS) runs. Each key in the object is a unique identifier for a run, and the corresponding value is the Text-to-Speech run details.",
        "example": {
          "1234": {
            "output_url": "https://audio-storage.camb.ai/files/audio_1234.flac"
          },
          "5678": {
            "output_url": "https://audio-storage.camb.ai/files/audio_5678.flac"
          }
        }
      },
      "BulkDubbingRunsResults": {
        "type": "object",
        "title": "BulkDubbingRunsResults",
        "additionalProperties": {
          "$ref": "#/components/schemas/RunInfoResponse"
        },
        "minProperties": 1,
        "maxProperties": 5,
        "description": "An object containing the results of one to five dubbing runs. Each key in the object is a unique identifier for a run, and the corresponding value is the result of the dubbing run.",
        "example": {
          "1344": {
            "video_url": "https://example.com/video/processed_123.mp4",
            "audio_url": "https://example.com/audio/processed_123.mp3",
            "transcript": [
              {
                "start": 0,
                "end": 5000,
                "text": "Hello, this is a sample transcript.",
                "speaker": "Speaker 1"
              }
            ]
          }
        }
      },
      "BulkProjectSetupRunsResults": {
        "type": "array",
        "title": "BulkProjectSetupRunsResults",
        "items": {
          "$ref": "#/components/schemas/GetCreateProjectSetupResponse"
        },
        "minItems": 1,
        "maxItems": 5,
        "description": "An array containing the results of one to five project setup runs. Each item in the array is an object that contains the project details."
      },
      "BulkStoriesRunsResults": {
        "type": "object",
        "title": "BulkStoriesRunsResults",
        "additionalProperties": {
          "$ref": "#/components/schemas/StoryRunInfoResponse"
        },
        "minProperties": 1,
        "maxProperties": 5,
        "description": "An object containing the results of one to five story runs. Each key in the object is a unique identifier for a run, and the corresponding value is stories run output.",
        "example": {
          "1234": {
            "dialogue_url": "https://example.com/run/1234/dialogue.flac",
            "audio_url": "https://example.com/run/1234/audio.flac",
            "transcript": [
              {
                "start": 0.4,
                "end": 14.97,
                "text": "Olympus Mons is the largest volcano in the solar system.",
                "speaker": "SPEAKER_0"
              },
              {
                "start": 15.37,
                "end": 27.27,
                "text": "Its average slope is only about 5%.",
                "speaker": "SPEAKER_0"
              },
              {
                "start": 27.67,
                "end": 38.24,
                "text": "It may have once been an island surrounded by oceans.",
                "speaker": "SPEAKER_0"
              },
              {
                "start": 38.64,
                "end": 49.59,
                "text": "Future eruptions could still occur due to mantle activity.",
                "speaker": "SPEAKER_0"
              }
            ]
          }
        }
      },
      "BulkTextToSoundRunsResults": {
        "type": "object",
        "title": "BulkTextToSoundRunsResults",
        "additionalProperties": {
          "$ref": "#/components/schemas/AudioOutputFileURLResponse"
        },
        "minProperties": 1,
        "maxProperties": 5,
        "description": "An object containing the results of one to five text-to-sound runs. Each key in the object is a unique identifier for a run, and the corresponding value is the output for text-to-sound.",
        "example": {
          "1234": {
            "output_url": "https://audio-storage.camb.ai/files/audio_1234.flac"
          },
          "5678": {
            "output_url": "https://audio-storage.camb.ai/files/audio_5678.flac"
          }
        }
      },
      "BulkAudioSeparationRunsResults": {
        "type": "object",
        "title": "BulkAudioSeparationRunsResults",
        "additionalProperties": {
          "$ref": "#/components/schemas/AudioSeparationRunInfoResponse"
        },
        "minProperties": 1,
        "maxProperties": 5,
        "description": "An object containing the results of one to five audio separation runs. Each key in the object is a unique identifier for a run, and the corresponding value is the files URLs generated by the audio separation process.",
        "example": {
          "1001": {
            "foreground_audio_url": "https://example.com/audio-separation/1001/fg_audio.flac",
            "background_audio_url": "https://example.com/audio-separation/1001/bg_audio.flac"
          },
          "1002": {
            "foreground_audio_url": "https://example.com/audio-separation/1002/fg_audio.flac",
            "background_audio_url": "https://example.com/audio-separation/1002/bg_audio.flac"
          }
        }
      },
      "BulkTranscriptionRunsResults": {
        "type": "object",
        "title": "BulkTranscriptionRunsResults",
        "additionalProperties": {
          "$ref": "#/components/schemas/ListDialogue"
        },
        "minProperties": 1,
        "maxProperties": 5,
        "description": "An object containing the results of one to five transcription runs. Each key in the object is a unique identifier for a run, and the corresponding value is the transcription output."
      },
      "SubtitleResult": {
        "type": "object",
        "title": "SubtitleResult",
        "properties": {
          "transcript": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DialogueItem"
                }
              },
              {
                "type": "string"
              }
            ],
            "description": "Structured dialogue array by default; a string (presigned URL for `data_type=file`, or raw text for `data_type=raw_data`) in export mode."
          }
        },
        "description": "One language of a subtitle run: structured dialogue segments by default, or an exported transcript string when `format_type`/`data_type` are set."
      },
      "SubtitleRunResult": {
        "title": "Subtitle Run Result",
        "anyOf": [
          {
            "title": "Single Language",
            "$ref": "#/components/schemas/SubtitleResult"
          },
          {
            "title": "Multiple Languages",
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/SubtitleResult"
            },
            "description": "Keyed by language ID, each value a SubtitleResult. Present when the run has more than one language."
          }
        ],
        "description": "The result of a subtitle run: a single SubtitleResult when the run has one language, or an object keyed by language ID when it has multiple. In export mode (`format_type`/`data_type`), each `transcript` value is a presigned URL or raw text instead of a dialogue array."
      },
      "BulkSubtitleRunsResults": {
        "type": "object",
        "title": "BulkSubtitleRunsResults",
        "additionalProperties": {
          "$ref": "#/components/schemas/SubtitleRunResult"
        },
        "minProperties": 1,
        "maxProperties": 5,
        "description": "An object containing the results of one to five subtitle runs. Each key is a run ID; each value matches `GET /sub-result/{run_id}` (JSON by default, or export when `format_type`/`data_type` are set)."
      },
      "BulkTranslationRunsResults": {
        "type": "object",
        "title": "BulkTranslationRunsResults",
        "additionalProperties": {
          "$ref": "#/components/schemas/TranslationResult"
        },
        "minProperties": 1,
        "maxProperties": 5,
        "description": "An object containing the results of one to five transcription runs. Each key in the object is a unique identifier for a run, and the corresponding value is the translation output."
      },
      "CreateStreamRequestPayload": {
        "type": "object",
        "required": [
          "audio_selections",
          "processing_profiles",
          "pipelines",
          "source_stream",
          "target_streams",
          "end_time",
          "timezone"
        ],
        "title": "CreateStreamRequestPayload",
        "description": "Configuration for a live stream.",
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Display name for the stream. Auto-generated if omitted."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "Free-form description of the stream."
          },
          "initial_delay": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "default": 120,
            "title": "Initial Delay",
            "description": "Seconds of setup lead time before processing starts. Larger values give the pipeline more headroom to warm up; smaller values start output sooner."
          },
          "voices": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "default": [],
            "title": "Voices",
            "description": "Optional voice IDs from [`GET /list-voices`](/api-reference/endpoint/list-voices) to use for dubbed speech. If provided, these fixed voices are used; if omitted or empty, voices are cloned from the speakers in the source audio. When providing voices, include different genders and tones so each speaker can be matched to the most suitable voice."
          },
          "dictionaries": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "maxItems": 5,
            "default": [],
            "title": "Dictionaries",
            "description": "Optional dictionary IDs for custom terminology (up to 5), from [`GET /dictionaries`](/api-reference/endpoint/list-dictionaries)."
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "Optional scheduled start in ISO 8601 with a UTC offset, e.g. `2026-08-01T19:30:00Z`. If omitted, the stream starts as soon as it is created. Cannot be in the past; at most 7 days in the future."
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "title": "End Time",
            "description": "When the stream stops, in ISO 8601 with a UTC offset. Required; must be at least 15 minutes after the start. To end a stream earlier, delete it; to change the end, patch it."
          },
          "timezone": {
            "type": "string",
            "title": "Timezone",
            "description": "IANA time zone name (e.g. `UTC`, `Europe/London`) that `start_time`/`end_time` are expressed in. Its offset must match the timestamps."
          },
          "audio_selections": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/AudioSelection"
            },
            "title": "Audio Selections",
            "description": "Named audio tracks of the source that pipelines process."
          },
          "processing_profiles": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ProcessingProfile"
            },
            "title": "Processing Profiles",
            "description": "Reusable AI processing configurations referenced by pipelines."
          },
          "encoding_profiles": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EncodingProfile"
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Encoding Profiles",
            "description": "Optional reusable encoding configurations referenced by target inputs."
          },
          "pipelines": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ProcessingPipeline"
            },
            "title": "Pipelines",
            "description": "Processing pipelines connecting audio selections to profiles and outputs."
          },
          "source_stream": {
            "$ref": "#/components/schemas/SourceStream",
            "description": "The live source to ingest."
          },
          "target_streams": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/TargetStream"
            },
            "title": "Target Streams",
            "description": "Destinations for the processed output. At least one is required."
          }
        }
      },
      "SourceStream": {
        "type": "object",
        "required": [
          "id",
          "url"
        ],
        "title": "SourceStream",
        "description": "The live source to ingest.",
        "properties": {
          "id": {
            "type": "string",
            "title": "ID",
            "description": "Your identifier for the source stream, e.g. `main-feed`."
          },
          "url": {
            "type": "string",
            "title": "URL",
            "description": "URL of the live source to ingest, e.g. `srt://ingest.example.com:9000`."
          },
          "category": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StreamCategory"
              },
              {
                "type": "null"
              }
            ]
          },
          "passphrase": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 10,
                "maxLength": 79
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "description": "SRT encryption passphrase for the source, if the source is encrypted (10-79 characters)."
          },
          "streamid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stream ID",
            "description": "SRT `streamid` to send when connecting to the source, if it requires one. Not the Camb.ai stream ID."
          },
          "latency": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 20,
                "maximum": 8000
              },
              {
                "type": "null"
              }
            ],
            "title": "Latency",
            "description": "SRT receive latency in milliseconds (20-8000). Higher values tolerate more network jitter at the cost of delay. Recommended: `2000` for typical internet links."
          }
        }
      },
      "ProcessingProfile": {
        "type": "object",
        "required": [
          "id"
        ],
        "title": "ProcessingProfile",
        "description": "A reusable bundle of AI processing settings, referenced by `pipelines[].profile`. Each step is `none` (off), `best_model` (quality) or `fast_model` (latency).",
        "properties": {
          "id": {
            "type": "string",
            "title": "ID",
            "description": "Your identifier for this profile, referenced by `pipelines[].profile`."
          },
          "demixing": {
            "$ref": "#/components/schemas/ProcessingOption",
            "default": "none",
            "description": "Separate speech from background music/effects before transcription."
          },
          "transcribing": {
            "$ref": "#/components/schemas/ProcessingOption",
            "default": "none",
            "description": "Speech-to-text on the selected audio."
          },
          "translating": {
            "$ref": "#/components/schemas/ProcessingOption",
            "default": "none",
            "description": "Translate the transcript into each output language."
          },
          "revoicing": {
            "$ref": "#/components/schemas/ProcessingOption",
            "default": "none",
            "description": "Synthesise dubbed speech in the output language."
          },
          "mixing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OverdubConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional mix gains for dubbed output. Requires `revoicing` to be enabled."
          },
          "scte35_dubbing_control": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Scte35DubbingControl"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional automatic dubbing toggling on SCTE-35 ad-break markers."
          }
        }
      },
      "DemixingOption": {
        "type": "string",
        "enum": [
          "none",
          "pick_left_channel",
          "pick_right_channel",
          "pick_center_channel",
          "best_model",
          "fast_model"
        ],
        "title": "DemixingOption"
      },
      "SegmentingOption": {
        "type": "string",
        "enum": [
          "none",
          "loudness",
          "best_model",
          "fast_model"
        ],
        "title": "SegmentingOption"
      },
      "TranscribingOption": {
        "type": "string",
        "enum": [
          "none",
          "best_model",
          "fast_model"
        ],
        "title": "TranscribingOption"
      },
      "TranslatingOption": {
        "type": "string",
        "enum": [
          "none",
          "best_model",
          "fast_model"
        ],
        "title": "TranslatingOption"
      },
      "RevoicingOption": {
        "type": "string",
        "enum": [
          "none",
          "best_model",
          "fast_model"
        ],
        "title": "RevoicingOption"
      },
      "PipelineOutput": {
        "type": "object",
        "required": [
          "id",
          "kind"
        ],
        "title": "PipelineOutput",
        "properties": {
          "id": {
            "type": "string",
            "title": "ID",
            "description": "Your identifier for the produced asset, referenced by `target_streams[].inputs[].asset_id`."
          },
          "kind": {
            "$ref": "#/components/schemas/ProducedAssetKind",
            "description": "Type of asset to produce."
          },
          "language": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Languages"
              },
              {
                "type": "null"
              }
            ],
            "description": "Language of the asset. Required for `audio` and `subtitle` outputs. Numeric language ID. Use [`GET /source-languages`](/api-reference/endpoint/get-source-languages) for valid `source_language` values and [`GET /target-languages`](/api-reference/endpoint/get-target-languages) for valid output `language` values. For example, `1` is English (US) and `54` is Spanish (Spain)."
          }
        }
      },
      "ProcessingPipeline": {
        "type": "object",
        "required": [
          "id",
          "profile",
          "audio_selection",
          "outputs"
        ],
        "title": "ProcessingPipeline",
        "description": "Connects one audio selection to a processing profile and declares the assets to produce. A pipeline that produces an `audio` output must also produce a `subtitle` output.",
        "properties": {
          "id": {
            "type": "string",
            "title": "ID",
            "description": "Your identifier for this pipeline."
          },
          "profile": {
            "type": "string",
            "title": "Profile",
            "description": "`id` of an entry in `processing_profiles`."
          },
          "audio_selection": {
            "type": "string",
            "title": "Audio Selection",
            "description": "`id` of an entry in `audio_selections`."
          },
          "outputs": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/PipelineOutput"
            },
            "title": "Outputs",
            "description": "Assets this pipeline produces. Output `id`s must be unique across all pipelines."
          }
        }
      },
      "ProducedAssetKind": {
        "type": "string",
        "enum": [
          "audio",
          "subtitle",
          "video",
          "data"
        ],
        "title": "ProducedAssetKind",
        "description": "Type of asset a pipeline output produces."
      },
      "AudioSelection": {
        "type": "object",
        "required": [
          "id",
          "source",
          "source_language"
        ],
        "title": "AudioSelection",
        "description": "Names an audio track of the source so pipelines can reference it by `id`.",
        "properties": {
          "id": {
            "type": "string",
            "title": "ID",
            "description": "Your identifier for this selection, referenced by `pipelines[].audio_selection`."
          },
          "source": {
            "type": "string",
            "title": "Source",
            "description": "Audio track selector. Accepts FFmpeg-style selectors (`a:0`, `1`, `eng`, `#0x1fe`, `i:301`, optionally with a channel suffix like `:ch0,1`) or magic selectors (`$first_audio`, `$second_audio`, `$last_audio`). Use [Probe a Source Stream](/api-reference/endpoint/streaming/probe-stream) to discover tracks."
          },
          "source_language": {
            "$ref": "#/components/schemas/Languages",
            "description": "Language spoken on the selected track. If the audio mixes several languages, use the main one; multilingual input is handled automatically. Numeric language ID from [`GET /source-languages`](/api-reference/endpoint/get-source-languages), e.g. `1` for English (US)."
          },
          "background": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Background",
            "description": "Optional selector (same syntax as `source`) for a clean background/music track. When set, it is used as the background bed for mixing instead of demixing the source."
          }
        }
      },
      "AudioStream": {
        "type": "object",
        "title": "AudioStream",
        "properties": {
          "index": {
            "type": "integer",
            "title": "Index",
            "description": "Track index within the source."
          },
          "codec_name": {
            "type": "string",
            "title": "Codec Name",
            "description": "Audio codec, e.g. `aac`."
          },
          "sample_rate": {
            "type": "integer",
            "title": "Sample Rate",
            "description": "Sample rate in Hz, e.g. `48000`."
          },
          "channels": {
            "type": "integer",
            "title": "Channels",
            "description": "Number of audio channels."
          },
          "channel_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channel Layout",
            "description": "Channel layout, e.g. `stereo`."
          },
          "tags": {
            "anyOf": [
              {
                "type": "object",
                "additionalProperties": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Tags",
            "description": "Track metadata from the source, e.g. `{\"language\": \"eng\"}`. Useful for picking the right track."
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "ID",
            "description": "MPEG-TS PID of the track (hex string), when the source is MPEG-TS. Usable in selectors like `i:301`."
          }
        }
      },
      "TargetStream": {
        "type": "object",
        "required": [
          "id",
          "type"
        ],
        "title": "TargetStream",
        "description": "A destination for the processed stream. `url` is required except for auto-hosted types (SRT listener and HLS recording), whose URLs are generated and returned.",
        "properties": {
          "id": {
            "type": "string",
            "title": "ID",
            "description": "Your identifier for the target, e.g. `youtube-es`."
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "URL",
            "description": "Destination URL to push to. Omit for SRT listener (`6`) and HLS recording (`3`) targets - their URLs are generated and returned in the create response and stream status."
          },
          "type": {
            "$ref": "#/components/schemas/StreamType",
            "description": "Output protocol/type."
          },
          "passthrough_policy": {
            "$ref": "#/components/schemas/PassthroughPolicy",
            "default": "all",
            "description": "Which source tracks are forwarded alongside the listed `inputs`. With `all` (the default), source tracks not replaced by a pipeline output are forwarded automatically."
          },
          "inputs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetStreamInput"
            },
            "title": "Inputs",
            "default": [],
            "description": "Tracks to include in this output. May be omitted when `passthrough_policy` is `all` or for auto-hosted target types."
          },
          "passphrase": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "description": "SRT encryption passphrase to use when pushing to the destination."
          },
          "streamid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stream ID",
            "description": "SRT `streamid` to send when connecting to the destination."
          },
          "constant_bitrate": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Constant Bitrate",
            "description": "MPEG-TS constant-bitrate control: `false`/omitted for variable bitrate, `true` to derive the mux rate from the source bandwidth, or an explicit rate string such as `\"500k\"` or `\"5M\"`."
          },
          "latency": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 20,
                "maximum": 8000
              },
              {
                "type": "null"
              }
            ],
            "title": "Latency",
            "description": "SRT send latency in milliseconds (20-8000). Higher values tolerate more network jitter at the cost of delay. Recommended: `2000` for typical internet links."
          }
        }
      },
      "TargetStreamInput": {
        "type": "object",
        "title": "TargetStreamInput",
        "description": "One track of a target output. Set exactly one of `asset_id` (a pipeline output) or `passthrough_selector` (an unprocessed source track).",
        "properties": {
          "asset_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Asset ID",
            "description": "`id` of a pipeline output to include."
          },
          "passthrough_selector": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passthrough Selector",
            "description": "Selector (e.g. `v:0`, `a:eng`) for a source track to forward unprocessed."
          },
          "pid_policy": {
            "$ref": "#/components/schemas/PIDPolicy",
            "default": "auto",
            "description": "How the MPEG-TS PID for this track is chosen."
          },
          "pid": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 32,
                "maximum": 8190
              },
              {
                "type": "null"
              }
            ],
            "title": "PID",
            "description": "Explicit MPEG-TS PID (32-8190). Required when `pid_policy` is `explicit`, forbidden otherwise."
          },
          "encoding_policy": {
            "$ref": "#/components/schemas/EncodingPolicy",
            "default": "auto",
            "description": "How this track is encoded."
          },
          "encoding_profile": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Encoding Profile",
            "description": "`id` of an entry in `encoding_profiles`. Required when `encoding_policy` is `explicit`, forbidden otherwise."
          }
        }
      },
      "StreamCategory": {
        "type": "integer",
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "title": "StreamCategory",
        "description": "Content category of the source stream, used to tune processing.\n\n| Value | Category |\n|---|---|\n| `1` | News and information |\n| `2` | Sports and entertainment |\n| `3` | Business and professional |\n| `4` | Education and training |\n| `5` | Events and ceremonies |\n| `6` | Government and official |"
      },
      "EncodingPolicy": {
        "type": "string",
        "enum": [
          "preserve",
          "auto",
          "explicit"
        ],
        "title": "EncodingPolicy",
        "description": "How this input is encoded on the output: `preserve` copies the source codec where possible, `auto` picks sensible defaults, `explicit` applies the referenced `encoding_profile`."
      },
      "EncodingProfile": {
        "type": "object",
        "required": [
          "id"
        ],
        "title": "EncodingProfile",
        "description": "Reusable encoding settings, referenced by `target_streams[].inputs[].encoding_profile`. Must set at least one of `audio_codec` or `video_codec`.",
        "properties": {
          "id": {
            "type": "string",
            "title": "ID",
            "description": "Your identifier for this profile."
          },
          "audio_codec": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Audio Codec",
            "description": "Audio codec, e.g. `aac`."
          },
          "audio_bitrate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Audio Bitrate",
            "description": "Audio bitrate, e.g. `192k`."
          },
          "audio_channel_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Audio Channel Layout",
            "description": "Channel layout, e.g. `stereo`."
          },
          "video_codec": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Video Codec",
            "description": "Video codec, e.g. `h264`."
          },
          "video_bitrate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Video Bitrate",
            "description": "Video bitrate, e.g. `5M`."
          }
        }
      },
      "OverdubConfig": {
        "type": "object",
        "title": "OverdubConfig",
        "description": "Relative gains used when mixing dubbed audio over the original. `original_audio_gain` + `background_audio_gain` must not exceed 1.0.",
        "properties": {
          "original_audio_gain": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0,
                "maximum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Original Audio Gain",
            "description": "Volume of the original speaker while dubbed audio plays (0.0-1.0)."
          },
          "background_audio_gain": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0,
                "maximum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Background Audio Gain",
            "description": "Volume of background music/ambience during dubbed segments (0.0-1.0)."
          },
          "fallback_audio_gain": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0,
                "maximum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Fallback Audio Gain",
            "description": "Volume of the original audio while nothing is being dubbed (0.0-1.0)."
          },
          "fade_time": {
            "type": "number",
            "minimum": 0.0,
            "maximum": 5.0,
            "default": 1.0,
            "title": "Fade Time",
            "description": "Cross-fade duration in seconds when switching between original and dubbed audio (0-5)."
          }
        }
      },
      "StreamType": {
        "type": "integer",
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6,
          11
        ],
        "title": "StreamType",
        "description": "Protocol/type of a target stream.\n\n| Value | Type | Description |\n|---|---|---|\n| `1` | SRT caller | Push output to your SRT endpoint (Camb.ai connects out to `url`). |\n| `2` | RTMP | Push output to an RTMP ingest `url`. |\n| `3` | HLS recording | Camb.ai-hosted HLS output; `url` and `inputs` are auto-assigned, and the playback URL is returned. |\n| `4` | YouTube RTMP | Push directly to a YouTube RTMP ingest URL. |\n| `5` | YouTube HLS | Push directly to a YouTube HLS ingest URL. |\n| `6` | SRT listener | Camb.ai hosts an SRT endpoint that you (or your player) pull from; `url` is auto-assigned and returned. |\n| `11` | Sidecar subtitle | Caption track delivered alongside the media rather than burned in. `playback_url` is templated with `master.{ext}` and `formats` lists the extensions that may be substituted; `websocket_url`, when present, streams the same captions live as newline-delimited JSON events. |"
      },
      "PIDPolicy": {
        "type": "string",
        "enum": [
          "preserve",
          "auto",
          "explicit"
        ],
        "title": "PIDPolicy",
        "description": "How MPEG-TS packet identifiers (PIDs) are assigned on the output: `preserve` keeps the source PID (passthrough inputs only), `auto` assigns one automatically, `explicit` uses the provided `pid`."
      },
      "StreamURLForLanguages": {
        "type": "object",
        "title": "StreamURLForLanguages",
        "properties": {
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Languages"
            },
            "title": "Languages",
            "description": "Language IDs available on this output URL."
          },
          "url": {
            "type": "string",
            "title": "URL",
            "description": "URL of this output for the listed languages. For Camb.ai-hosted outputs (SRT listener, HLS recording) this is a playback URL you can distribute; for push outputs it echoes your destination URL."
          }
        }
      },
      "CreateStreamOut": {
        "type": "object",
        "title": "CreateStreamOut",
        "properties": {
          "stream_id": {
            "type": "integer",
            "title": "Stream ID",
            "description": "Identifier of the created stream, used for all lifecycle operations."
          },
          "stream_url_for_languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StreamURLForLanguages"
            },
            "title": "Stream URL For Languages",
            "description": "Playback URLs for the outputs, grouped by language."
          },
          "task_id": {
            "type": "string",
            "title": "Task ID",
            "description": "Identifier of the setup task; useful when contacting support."
          }
        }
      },
      "GetProbeStreamIn": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url",
            "description": "Source stream URL to probe, e.g. `srt://example.com:9000`."
          },
          "passphrase": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "description": "Optional passphrase for authenticated streams (commonly used with SRT)."
          },
          "stream_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stream Id",
            "description": "Optional SRT `streamid` the source requires. This is not the Camb.ai stream ID."
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "GetProbeStreamIn"
      },
      "GetProbeStreamOut": {
        "properties": {
          "video_streams": {
            "items": {
              "$ref": "#/components/schemas/VideoStream"
            },
            "type": "array",
            "title": "Video Streams",
            "description": "Video tracks discovered in the source stream."
          },
          "audio_streams": {
            "items": {
              "$ref": "#/components/schemas/AudioStream"
            },
            "type": "array",
            "title": "Audio Streams",
            "description": "Audio tracks discovered in the source stream."
          },
          "data_streams": {
            "items": {
              "$ref": "#/components/schemas/DataStream"
            },
            "type": "array",
            "title": "Data Streams",
            "description": "Data tracks discovered in the source stream (e.g., SCTE-35 ad markers)."
          }
        },
        "type": "object",
        "title": "GetProbeStreamOut"
      },
      "UpdateStreamDataRequestPayload": {
        "type": "object",
        "title": "UpdateStreamDataRequestPayload",
        "description": "Partial update of a stream. All fields are optional; omit anything you do not want to change. List fields carrying `id`s (`audio_selections`, `processing_profiles`, `encoding_profiles`, `pipelines`, `target_streams`) are merged by `id`: entries you send are added or replaced, existing entries are never removed.",
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "New display name."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "New description."
          },
          "initial_delay": {
            "anyOf": [
              {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Initial Delay",
            "description": "New setup lead time in seconds."
          },
          "voices": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "integer"
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Voices",
            "description": "Replacement list of voice IDs. Empty means voices are cloned from the source speakers."
          },
          "dictionaries": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "integer"
                },
                "maxItems": 5
              },
              {
                "type": "null"
              }
            ],
            "title": "Dictionaries",
            "description": "Replacement list of dictionary IDs (up to 5)."
          },
          "start_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time",
            "description": "New scheduled start (ISO 8601 with UTC offset). Requires `timezone`."
          },
          "end_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Time",
            "description": "New scheduled end (ISO 8601 with UTC offset). Requires `timezone`."
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone",
            "description": "IANA time zone the updated times are expressed in."
          },
          "audio_selections": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AudioSelection"
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Audio Selections",
            "description": "Audio selections to add or replace (merged by `id`)."
          },
          "processing_profiles": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProcessingProfile"
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Processing Profiles",
            "description": "Processing profiles to add or replace (merged by `id`)."
          },
          "encoding_profiles": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EncodingProfile"
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Encoding Profiles",
            "description": "Encoding profiles to add or replace (merged by `id`)."
          },
          "pipelines": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProcessingPipeline"
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Pipelines",
            "description": "Pipelines to add or replace (merged by `id`)."
          },
          "source_stream": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SourceStream"
              },
              {
                "type": "null"
              }
            ],
            "description": "Replacement source configuration."
          },
          "target_streams": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TargetStream"
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Target Streams",
            "description": "Target streams to add or replace (merged by `id`)."
          },
          "pipeline_patches": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PipelinePatch"
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Pipeline Patches",
            "description": "Live, runtime-only adjustments to running pipelines: toggle dubbing, adjust the mix, or nudge A/V sync. Applied immediately and not persisted into the stream configuration."
          }
        }
      },
      "LanguageInput": {
        "type": "string",
        "title": "Language"
      },
      "LanguageInputList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/LanguageInput"
        },
        "minItems": 1
      },
      "Languages": {
        "type": "integer",
        "title": "Language ID",
        "description": "Numeric language ID. Use [`GET /source-languages`](/api-reference/endpoint/get-source-languages) for valid `source_language` values and [`GET /target-languages`](/api-reference/endpoint/get-target-languages) for valid output `language` values. For example, `1` is English (US) and `54` is Spanish (Spain)."
      },
      "StreamStatus": {
        "type": "integer",
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "title": "StreamStatus",
        "description": "Lifecycle status of a stream.\n\n| Value | Status | Description |\n|---|---|---|\n| `1` | Scheduled | Created and waiting for its start time. |\n| `2` | Setting up | Resources are being provisioned. |\n| `3` | Started | Live and processing. |\n| `4` | Ended | Completed normally. |\n| `5` | Interrupted | Stopped before its scheduled end. |\n| `6` | Error | Failed; see the `error` field. |"
      },
      "ProcessingOption": {
        "type": "string",
        "enum": [
          "none",
          "best_model",
          "fast_model"
        ],
        "title": "ProcessingOption",
        "description": "Selects the model tier for a processing step: `none` disables the step, `best_model` prioritises quality, `fast_model` prioritises latency."
      },
      "PassthroughPolicy": {
        "type": "string",
        "enum": [
          "all",
          "none"
        ],
        "title": "PassthroughPolicy",
        "description": "`all` forwards every source track that is not replaced by a pipeline output; `none` forwards nothing unless explicitly selected."
      },
      "Scte35DubbingControl": {
        "type": "object",
        "title": "Scte35DubbingControl",
        "description": "Automatically toggles dubbing on SCTE-35 ad-break markers. Each field is the dubbing state to apply on that marker (`enabled` or `disabled`); set a field to `null` to ignore that marker. Omit the whole object to ignore SCTE-35 entirely.",
        "properties": {
          "on_out_of_network_start": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "On Out-of-Network Start",
            "description": "Dubbing state applied when an ad break starts.",
            "default": "disabled"
          },
          "on_out_of_network_end": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "On Out-of-Network End",
            "description": "Dubbing state applied when an ad break ends.",
            "default": "enabled"
          }
        }
      },
      "AVSyncConfig": {
        "type": "object",
        "title": "AVSyncConfig",
        "properties": {
          "delay": {
            "anyOf": [
              {
                "type": "number",
                "minimum": -2.0,
                "maximum": 2.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Delay",
            "description": "Audio/video sync adjustment in seconds (-2.0 to 2.0). Positive values delay audio. Unset by default (no adjustment).",
            "default": null
          }
        }
      },
      "PipelinePatch": {
        "type": "object",
        "required": [
          "pipeline_id"
        ],
        "title": "PipelinePatch",
        "description": "A live, runtime-only adjustment to one pipeline of a running stream. Not persisted into the stream configuration.",
        "properties": {
          "pipeline_id": {
            "type": "string",
            "title": "Pipeline ID",
            "description": "`id` of the pipeline to adjust."
          },
          "dubbing_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dubbing Enabled",
            "description": "Turn live dubbing on or off for this pipeline. `false` pauses dubbing and passes the original audio through; `true` resumes it. Takes effect within a few seconds."
          },
          "mixing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OverdubConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Live adjustment of the dubbing mix gains."
          },
          "avsync": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AVSyncConfig"
              },
              {
                "type": "null"
              }
            ],
            "description": "Live audio/video sync adjustment."
          }
        }
      },
      "SourceView": {
        "type": "object",
        "title": "SourceView",
        "properties": {
          "type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StreamType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Best-effort protocol of the source, inferred from its URL. May be `null`."
          },
          "playback_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Playback URL",
            "description": "URL where the source can be played back, when available."
          }
        }
      },
      "TargetView": {
        "type": "object",
        "title": "TargetView",
        "properties": {
          "id": {
            "type": "string",
            "title": "ID",
            "description": "Target identifier from the create payload."
          },
          "type": {
            "$ref": "#/components/schemas/StreamType",
            "description": "Output protocol/type."
          },
          "state": {
            "type": "string",
            "enum": [
              "scheduled",
              "deferred",
              "active",
              "completed",
              "failed"
            ],
            "title": "State",
            "description": "Lifecycle state of this target output."
          },
          "playback_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Playback URL",
            "description": "URL to play this output, for Camb.ai-hosted outputs."
          },
          "destination_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Destination URL",
            "description": "URL this output is being pushed to, for push-type targets."
          }
        }
      },
      "StreamView": {
        "type": "object",
        "title": "StreamView",
        "description": "Current state of a stream. The shape is identical whether the stream is scheduled, live, or finished.",
        "properties": {
          "stream_id": {
            "type": "integer",
            "title": "Stream ID"
          },
          "status": {
            "$ref": "#/components/schemas/StreamStatus",
            "description": "Lifecycle status."
          },
          "source": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SourceView"
              },
              {
                "type": "null"
              }
            ],
            "description": "Source connection details."
          },
          "targets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetView"
            },
            "title": "Targets",
            "default": [],
            "description": "State and URLs of each output."
          },
          "scheduled_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled At"
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "stopped_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stopped At"
          },
          "task_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Task ID",
            "description": "Setup task identifier."
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Failure description when `status` is `6` (error)."
          }
        }
      },
      "FlowMode": {
        "type": "string",
        "enum": [
          "caller",
          "listener"
        ],
        "title": "FlowMode",
        "description": "`caller`: Camb.ai connects out to your SRT endpoint (`primary_url`) and re-serves it. `listener`: Camb.ai hosts an SRT endpoint that your encoder pushes to."
      },
      "PushUrl": {
        "type": "object",
        "title": "PushUrl",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "primary",
              "backup"
            ],
            "title": "Role",
            "description": "Which leg of the flow this URL feeds."
          },
          "url": {
            "type": "string",
            "title": "URL",
            "description": "SRT URL to push to."
          }
        }
      },
      "FlowCreateIn": {
        "type": "object",
        "required": [
          "label",
          "mode"
        ],
        "title": "FlowCreateIn",
        "description": "Configuration for a new stream flow - a standing SRT endpoint you can use as the source or a target of any stream.",
        "properties": {
          "label": {
            "type": "string",
            "title": "Label",
            "description": "Human-readable name for the flow. Must be unique within your team."
          },
          "mode": {
            "$ref": "#/components/schemas/FlowMode"
          },
          "failover": {
            "type": "boolean",
            "default": false,
            "title": "Failover",
            "description": "Enable a second (backup) leg. Caller flows then require `backup_url`; listener flows get a backup push URL."
          },
          "primary_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary URL",
            "description": "SRT URL of your upstream (caller mode only; required there, forbidden for listeners). To dial an encrypted upstream, append its passphrase as a query parameter: `srt://host:port?passphrase=...`."
          },
          "backup_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup URL",
            "description": "SRT URL of the backup upstream. Caller mode with `failover` enabled only."
          },
          "passphrase": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 10,
                "maxLength": 79
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "description": "Optional SRT encryption passphrase for the flow's own endpoint (10-79 characters). When set, it is embedded in the returned play/push URLs and required to connect."
          }
        }
      },
      "FlowUpdateIn": {
        "type": "object",
        "title": "FlowUpdateIn",
        "description": "Partial update of a flow. Only `label` and `active` can change; to change URLs, mode or failover, delete and recreate the flow.",
        "properties": {
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label",
            "description": "New label (unique within your team)."
          },
          "active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Active",
            "description": "Set `true` to bring the flow's relay online, `false` to take it offline."
          }
        }
      },
      "FlowSummary": {
        "type": "object",
        "title": "FlowSummary",
        "properties": {
          "id": {
            "type": "integer",
            "title": "ID",
            "description": "Flow identifier."
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "mode": {
            "$ref": "#/components/schemas/FlowMode"
          },
          "failover": {
            "type": "boolean",
            "title": "Failover"
          },
          "active": {
            "type": "boolean",
            "title": "Active",
            "description": "Whether the flow's relay is currently online."
          },
          "team_id": {
            "type": "integer",
            "title": "Team ID"
          }
        }
      },
      "FlowOut": {
        "type": "object",
        "title": "FlowOut",
        "properties": {
          "id": {
            "type": "integer",
            "title": "ID",
            "description": "Flow identifier."
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "mode": {
            "$ref": "#/components/schemas/FlowMode"
          },
          "failover": {
            "type": "boolean",
            "title": "Failover"
          },
          "active": {
            "type": "boolean",
            "title": "Active",
            "description": "Whether the flow's relay is currently online."
          },
          "team_id": {
            "type": "integer",
            "title": "Team ID"
          },
          "key": {
            "type": "string",
            "title": "Key",
            "description": "Access key embedded in the flow's URLs."
          },
          "play_url": {
            "type": "string",
            "title": "Play URL",
            "description": "SRT URL the flow serves. Use it as `source_stream.url` or as a `target_streams[].url`, or play it directly."
          },
          "push_urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PushUrl"
            },
            "title": "Push URLs",
            "description": "SRT URLs to push into (listener mode). Empty for caller flows."
          },
          "passphrase": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "description": "The flow's SRT encryption passphrase, when one is set."
          }
        }
      },
      "VideoStream": {
        "type": "object",
        "title": "VideoStream",
        "properties": {
          "index": {
            "type": "integer",
            "title": "Index",
            "description": "Track index within the source."
          },
          "codec_name": {
            "type": "string",
            "title": "Codec Name",
            "description": "Video codec, e.g. `h264`."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width"
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height"
          },
          "frame_rate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Frame Rate",
            "description": "Frame rate as a fraction, e.g. `25/1`."
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "ID",
            "description": "MPEG-TS PID of the track (hex string), when the source is MPEG-TS. Usable in selectors like `i:301`."
          }
        }
      },
      "DataStream": {
        "type": "object",
        "title": "DataStream",
        "properties": {
          "index": {
            "type": "integer",
            "title": "Index",
            "description": "Track index within the source."
          },
          "codec_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Codec Name",
            "description": "Data codec, e.g. `scte_35`."
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "ID",
            "description": "MPEG-TS PID of the track (hex string), when the source is MPEG-TS. Usable in selectors like `i:301`."
          }
        }
      },
      "StreamTemplateOut": {
        "type": "object",
        "title": "StreamTemplateOut",
        "required": [
          "id",
          "name",
          "stream_id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id",
            "description": "The template id."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "The template's name, unique within the workspace."
          },
          "stream_id": {
            "type": "integer",
            "title": "Stream Id",
            "description": "The stream this template was saved from."
          }
        }
      },
      "ListStreamTemplatesOut": {
        "type": "object",
        "title": "ListStreamTemplatesOut",
        "required": [
          "templates"
        ],
        "properties": {
          "templates": {
            "type": "array",
            "title": "Templates",
            "items": {
              "$ref": "#/components/schemas/StreamTemplateOut"
            }
          }
        }
      },
      "GetStreamTemplatePayloadOut": {
        "type": "object",
        "title": "GetStreamTemplatePayloadOut",
        "required": [
          "payload"
        ],
        "properties": {
          "payload": {
            "type": "object",
            "title": "Payload",
            "description": "A stream creation payload compatible with the Create Stream request body. Adjust start_time and end_time before creating a stream from it.",
            "additionalProperties": true
          }
        }
      },
      "SubtitleFormattingOptions": {
        "type": "object",
        "title": "SubtitleFormattingOptions",
        "description": "Optional subtitle formatting rules. When provided, translate+subtitle segmentation runs for each target language.",
        "properties": {
          "max_segment_duration_in_seconds": {
            "type": "number",
            "title": "Max Segment Duration In Seconds",
            "description": "The longest a single cue may stay on screen.",
            "default": 7.0,
            "exclusiveMinimum": 0,
            "example": 7.0
          },
          "min_segment_duration_in_seconds": {
            "type": "number",
            "title": "Min Segment Duration In Seconds",
            "description": "The shortest a single cue may stay on screen.",
            "default": 1.0,
            "exclusiveMinimum": 0,
            "example": 1.0
          },
          "max_characters_in_segment": {
            "type": "integer",
            "title": "Max Characters In Segment",
            "description": "The maximum number of characters allowed in one cue.",
            "default": 42,
            "exclusiveMinimum": 0,
            "example": 42
          }
        },
        "additionalProperties": false,
        "example": {
          "max_segment_duration_in_seconds": 7,
          "min_segment_duration_in_seconds": 1,
          "max_characters_in_segment": 42
        }
      },
      "CreateSubtitleRequestPayload": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "media_url",
              "source_language",
              "target_languages"
            ],
            "properties": {
              "media_url": {
                "type": "string",
                "title": "Media URL",
                "description": "Public or signed URL to the media file for subtitle generation. Supports both video and audio files.",
                "example": ""
              },
              "source_language": {
                "$ref": "#/components/schemas/LanguageInput",
                "description": "The language spoken in the source media. Pass a locale tag (`en-us`, `fr-fr`, `es-es`). Numeric language IDs still work but are deprecated. [See all source languages](/api-reference/endpoint/get-source-languages).",
                "example": "en-us"
              },
              "target_languages": {
                "type": "array",
                "minItems": 1,
                "title": "Target Languages",
                "description": "One or more target languages for the subtitles. Pass locale tags (`es-es`, `fr-fr`, `de-de`), including a single-item array when you only need one language. Numeric language IDs still work but are deprecated. [See all target languages](/api-reference/endpoint/get-target-languages).",
                "example": [
                  "es-es"
                ],
                "items": {
                  "$ref": "#/components/schemas/LanguageInput"
                }
              },
              "transcription_mode": {
                "type": "string",
                "enum": [
                  "fast",
                  "slow"
                ],
                "title": "Transcription Mode",
                "description": "Transcription mode. `fast` (default) is quicker; `slow` takes longer and may produce a more accurate transcript.",
                "default": "fast"
              },
              "formatting_options": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SubtitleFormattingOptions"
                  }
                ],
                "nullable": true,
                "description": "Optional subtitle formatting rules as a JSON object. When provided, subtitle segmentation runs for every target language. Omit to skip segmentation."
              }
            }
          },
          {
            "$ref": "#/components/schemas/CreateTaskWithNameAndDescription"
          },
          {
            "type": "object",
            "properties": {
              "folder_id": {
                "type": "integer",
                "title": "Folder Id",
                "nullable": true,
                "exclusiveMinimum": 0,
                "description": "Optional folder ID to place the run in your workspace.",
                "example": null
              }
            }
          }
        ],
        "title": "CreateSubtitleRequestPayload"
      },
      "DeleteStreamTemplateOut": {
        "type": "object",
        "title": "DeleteStreamTemplateOut",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id",
            "description": "The id of the deleted template."
          }
        }
      },
      "CreateStreamTemplateRequestPayload": {
        "type": "object",
        "title": "CreateStreamTemplateRequestPayload",
        "required": [
          "name",
          "stream_id"
        ],
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "minLength": 1,
            "maxLength": 100,
            "description": "The template's name, unique within the workspace."
          },
          "stream_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "title": "Stream Id",
            "description": "The id of a created stream in your workspace whose configuration the template saves."
          }
        }
      }
    },
    "securitySchemes": {
      "APIKeyHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "The `x-api-key` is a custom header required for authenticating requests to our API. Include this header in your request with the appropriate API key value to securely access our endpoints. You can find your API key(s) in the 'API' section of our studio website."
      }
    }
  }
}
