openapi: 3.0.3 info: title: Camb.AI Dubbing Text-to-Speech API description: 'The Camb.AI API provides generative voice AI - text-to-speech, dubbing, translation, voice discovery and cloning, and transcription - powered by the MARS (speech / voice) and BOLI (translation) research models. The REST API is served from https://client.camb.ai/apis and authenticated with an x-api-key header. Most operations are asynchronous: a POST starts a task and returns a task_id, the task is polled with a GET until its status is SUCCESS, and the result (audio, transcript, or translation) is then retrieved. Real-time streaming for TTS, transcription, and speech-to-speech translation is offered over separate public WebSocket channels (see the companion AsyncAPI document). Endpoint paths are grounded in the public documentation at https://docs.camb.ai; request and response schemas below are modeled from the documented parameters and may be simplified.' version: '1.0' contact: name: Camb.AI url: https://www.camb.ai servers: - url: https://client.camb.ai/apis description: Camb.AI production API security: - apiKeyAuth: [] tags: - name: Text-to-Speech description: Convert text to speech with the MARS voice models. paths: /tts-stream: post: operationId: createTtsStream tags: - Text-to-Speech summary: Stream text-to-speech description: Synthesize speech from text and return a binary audio stream in real time. The response is an audio byte stream (for example audio/wav or audio/mpeg) and includes an X-Credits-Required header indicating credit usage. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TtsStreamRequest' responses: '200': description: A binary audio stream. content: audio/wav: schema: type: string format: binary '401': $ref: '#/components/responses/Unauthorized' /tts: post: operationId: createTts deprecated: true tags: - Text-to-Speech summary: Create a text-to-speech task (deprecated) description: Deprecated. For new integrations use POST /tts-stream. Starts an asynchronous text-to-speech task and returns a task_id to poll. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TtsRequest' responses: '200': description: Task accepted. content: application/json: schema: $ref: '#/components/schemas/TaskCreated' '401': $ref: '#/components/responses/Unauthorized' /tts/{task_id}: get: operationId: getTtsStatus tags: - Text-to-Speech summary: Poll a text-to-speech task description: Returns the status of a TTS task and, when complete, the run_id used to fetch the audio. parameters: - $ref: '#/components/parameters/TaskId' responses: '200': description: Current task status. content: application/json: schema: $ref: '#/components/schemas/TaskStatus' '401': $ref: '#/components/responses/Unauthorized' /tts-result/{run_id}: get: operationId: getTtsResult tags: - Text-to-Speech summary: Download text-to-speech audio description: Retrieves the generated audio file for a completed TTS run. parameters: - name: run_id in: path required: true description: The run identifier returned by GET /tts/{task_id}. schema: type: integer responses: '200': description: The generated audio file. content: audio/wav: schema: type: string format: binary '401': $ref: '#/components/responses/Unauthorized' components: schemas: Error: type: object properties: message: type: string code: type: string TaskCreated: type: object properties: task_id: type: string description: Identifier used to poll the task. TaskStatus: type: object properties: status: type: string description: Task status, for example PENDING, PROCESSING, SUCCESS, or FAILED. enum: - PENDING - PROCESSING - SUCCESS - FAILED run_id: type: integer description: Present when the task has completed; used to fetch the result. TtsStreamRequest: type: object required: - text - language - voice_id properties: text: type: string minLength: 3 maxLength: 3000 description: The text to synthesize into speech. language: type: string description: BCP-47 locale code, for example en-us or fr-fr. voice_id: type: integer description: A voice profile ID from GET /list-voices. speech_model: type: string description: Model variant, for example mars-8.1-flash-beta or mars-instruct. user_instructions: type: string description: Guidance for overall delivery (mars-instruct only). enhance_named_entities_pronunciation: type: boolean output_configuration: type: object description: Output format, sample rate, and enhancement settings. voice_settings: type: object description: Speaking rate, accent preservation, and reference quality. inference_options: type: object description: Stability, temperature, and speaker similarity. TtsRequest: type: object required: - text - voice_id - language properties: text: type: string description: The text to be converted to speech. voice_id: type: integer description: Voice identifier. language: type: string description: Locale tag such as en-us. gender: type: integer description: Speaker gender hint (0, 1, 2, or 9). age: type: integer description: Speaker age characteristic. responses: Unauthorized: description: Missing or invalid API key. content: application/json: schema: $ref: '#/components/schemas/Error' parameters: TaskId: name: task_id in: path required: true description: The task identifier returned when the task was created. schema: type: string securitySchemes: apiKeyAuth: type: apiKey in: header name: x-api-key