Camb.AI Voices API

Discover, clone, design, and manage voices.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/camb-ai-voices-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

camb-ai-voices-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Camb.AI Dubbing Voices 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: Voices
  description: Discover, clone, design, and manage voices.
paths:
  /list-voices:
    get:
      operationId: listVoices
      tags:
      - Voices
      summary: List voices
      description: Returns all available voices - public voices, shared voices, and custom-created voices - with metadata such as id, voice_name, gender, age, language, and description.
      responses:
        '200':
          description: A list of voices.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Voice'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /create-custom-voice:
    post:
      operationId: createCustomVoice
      tags:
      - Voices
      summary: Create a custom (cloned) voice
      description: Clones a custom voice from a reference audio sample.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CustomVoiceRequest'
      responses:
        '200':
          description: The created custom voice.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Voice'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /text-to-voice:
    post:
      operationId: createTextToVoice
      tags:
      - Voices
      summary: Design a voice from a text description
      description: Starts a task that generates candidate voices from a natural-language description.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TextToVoiceRequest'
      responses:
        '200':
          description: Voice-design task accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskCreated'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /text-to-voice/{task_id}:
    get:
      operationId: getTextToVoiceStatus
      tags:
      - Voices
      summary: Poll a voice-design task
      description: Returns the status and, when complete, the generated voice options.
      parameters:
      - $ref: '#/components/parameters/TaskId'
      responses:
        '200':
          description: Current voice-design task status and result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskStatus'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /delete-voice/{voice_id}:
    delete:
      operationId: deleteVoice
      tags:
      - Voices
      summary: Delete a custom voice
      description: Permanently removes a custom voice.
      parameters:
      - name: voice_id
        in: path
        required: true
        description: The identifier of the custom voice to delete.
        schema:
          type: integer
      responses:
        '200':
          description: Voice deleted.
        '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.
    CustomVoiceRequest:
      type: object
      required:
      - voice_name
      - file
      properties:
        voice_name:
          type: string
          description: Name for the new custom voice.
        file:
          type: string
          format: binary
          description: Reference audio sample to clone from.
        gender:
          type: integer
        age:
          type: integer
    TextToVoiceRequest:
      type: object
      required:
      - voice_description
      properties:
        voice_description:
          type: string
          description: Natural-language description of the desired voice.
        text:
          type: string
          description: Optional preview text to render with the generated voices.
    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.
    Voice:
      type: object
      properties:
        id:
          type: integer
        voice_name:
          type: string
        gender:
          type: integer
        age:
          type: integer
        language:
          type: string
        description:
          type: string
        is_published:
          type: boolean
  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