Resemble AI Platform API

REST API for TTS (synchronous, HTTP streaming, WebSocket streaming), voice creation, cloning, design, speech-to-speech, speech-to-text, audio editing, deepfake detection, and AI agents. Base URL https://api.resemble.ai. OpenAPI at https://docs.resemble.ai/openapi.yaml.

OpenAPI Specification

resemble-ai-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API Reference
  version: 1.0.0
paths:
  /synthesize:
    post:
      operationId: synthesize
      summary: Synchronous text-to-speech synthesis
      description: Generate speech synchronously from text or SSML. Returns complete audio as base64.
      tags:
        - subpackage_textToSpeech
      parameters:
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful synthesis
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Text-to-Speech_synthesize_Response_200'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                voice_uuid:
                  type: string
                  description: Voice UUID to use for synthesis
                project_uuid:
                  type: string
                  description: Optional project UUID to store the clip
                title:
                  type: string
                  description: Optional title for the generated clip
                data:
                  type: string
                  description: Text or SSML to synthesize (max 3,000 characters)
                model:
                  type: string
                  description: >-
                    Model to use for synthesis. Pass `chatterbox-turbo` to use the Turbo model for lower latency and
                    paralinguistic tag support. If not specified, defaults to Chatterbox or Chatterbox Multilingual
                    based on the voice. Note - Chatterbox-Turbo is supported by all Rapid English voices and Pre Built
                    Library voices.
                precision:
                  $ref: '#/components/schemas/SynthesizePostRequestBodyContentApplicationJsonSchemaPrecision'
                  description: Audio precision for WAV output
                output_format:
                  $ref: '#/components/schemas/SynthesizePostRequestBodyContentApplicationJsonSchemaOutputFormat'
                  description: Audio output format
                sample_rate:
                  $ref: '#/components/schemas/SynthesizePostRequestBodyContentApplicationJsonSchemaSampleRate'
                  description: Audio sample rate in Hz
                use_hd:
                  type: boolean
                  default: false
                  description: Enable HD synthesis with small latency trade-off
                apply_custom_pronunciations:
                  type: boolean
                  default: false
                  description: >-
                    When true, automatically applies your team's custom pronunciations to matching words in the input
                    text. Defaults to false.
              required:
                - voice_uuid
                - data
  /stream:
    post:
      operationId: stream-synthesize
      summary: Streaming text-to-speech synthesis (HTTP)
      description: Stream audio as it's generated. Returns chunked WAV data for progressive playback.
      tags:
        - subpackage_textToSpeech
      parameters:
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Streaming audio response (chunked WAV)
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                voice_uuid:
                  type: string
                  description: Voice UUID to use for synthesis
                data:
                  type: string
                  description: Text or SSML to synthesize (max 2000 characters)
                project_uuid:
                  type: string
                  description: Optional project UUID to store the clip
                model:
                  type: string
                  description: >-
                    Model to use for synthesis. Pass `chatterbox-turbo` to use the Turbo model for lower latency and
                    paralinguistic tag support. If not specified, defaults to Chatterbox or Chatterbox Multilingual
                    based on the voice. Note - Chatterbox-Turbo is supported by all Rapid English voices and Pre Built
                    Library voices.
                precision:
                  $ref: '#/components/schemas/StreamPostRequestBodyContentApplicationJsonSchemaPrecision'
                  description: Audio precision
                sample_rate:
                  $ref: '#/components/schemas/StreamPostRequestBodyContentApplicationJsonSchemaSampleRate'
                  description: Audio sample rate in Hz
                use_hd:
                  type: boolean
                  default: false
                  description: Enable HD synthesis with small latency trade-off
                apply_custom_pronunciations:
                  type: boolean
                  default: false
                  description: >-
                    When true, automatically applies your team's custom pronunciations to matching words in the input
                    text. Defaults to false.
              required:
                - voice_uuid
                - data
  /speech-to-text:
    get:
      operationId: list-transcripts
      summary: List transcripts
      description: Retrieve paginated list of transcript jobs
      tags:
        - subpackage_speechToText
      parameters:
        - name: page
          in: query
          required: true
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            default: 25
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of transcripts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Speech-to-Text_listTranscripts_Response_200'
    post:
      operationId: create-transcript
      summary: Create transcript job
      description: Submit audio or video for transcription
      tags:
        - subpackage_speechToText
      parameters:
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Transcript job created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Speech-to-Text_createTranscript_Response_200'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: Audio or video file (max 500 MB, 20 minutes)
                query:
                  type: string
                  description: Optional intelligence question to evaluate after transcription
  /speech-to-text/{uuid}:
    get:
      operationId: get-transcript
      summary: Get transcript
      description: Retrieve transcript status, text, and timestamps
      tags:
        - subpackage_speechToText
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Transcript details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Speech-to-Text_getTranscript_Response_200'
  /speech-to-text/{uuid}/ask:
    post:
      operationId: ask-transcript-question
      summary: Ask intelligence question
      description: Submit a question about a completed transcript
      tags:
        - subpackage_speechToText
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Question submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Speech-to-Text_askTranscriptQuestion_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: Question to ask about the transcript
              required:
                - query
  /speech-to-text/{uuid}/questions:
    get:
      operationId: list-transcript-questions
      summary: List intelligence questions
      description: List all questions asked about a transcript
      tags:
        - subpackage_speechToText
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          required: true
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            default: 25
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of questions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Speech-to-Text_listTranscriptQuestions_Response_200'
  /speech-to-text/{uuid}/questions/{question_uuid}:
    get:
      operationId: get-transcript-question
      summary: Get intelligence question status
      description: Check the status of a specific question
      tags:
        - subpackage_speechToText
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: question_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Question details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Speech-to-Text_getTranscriptQuestion_Response_200'
  /edit:
    get:
      operationId: list-audio-edits
      summary: List audio edits
      description: Retrieve paginated list of audio edits
      tags:
        - subpackage_audioEdit
      parameters:
        - name: page
          in: query
          required: true
          schema:
            type: integer
            default: 1
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of audio edits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Audio Edit_listAudioEdits_Response_200'
    post:
      operationId: create-audio-edit
      summary: Create audio edit
      description: Edit audio segments using voice synthesis
      tags:
        - subpackage_audioEdit
      parameters:
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Edit job created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Audio Edit_createAudioEdit_Response_200'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                input_audio:
                  type: string
                  format: binary
                  description: WAV, MP3, M4A, or WMA file (< 20 seconds)
                original_transcript:
                  type: string
                  description: Accurate transcript of the uploaded audio
                target_transcript:
                  type: string
                  description: Desired replacement text
                voice_uuid:
                  type: string
                  description: Voice used to render the edited segment
              required:
                - input_audio
                - original_transcript
                - target_transcript
                - voice_uuid
  /edit/{audio_edit_uuid}:
    get:
      operationId: get-audio-edit
      summary: Get audio edit
      description: Get status and result of an audio edit
      tags:
        - subpackage_audioEdit
      parameters:
        - name: audio_edit_uuid
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Audio edit details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Audio Edit_getAudioEdit_Response_200'
  /audio_enhancements:
    get:
      operationId: list-audio-enhancements
      summary: List audio enhancements
      description: Returns a paginated list of all audio enhancements for your team, ordered by most recent first.
      tags:
        - subpackage_audioEnhancement
      parameters:
        - name: page
          in: query
          description: Page number (starting from 1).
          required: true
          schema:
            type: integer
        - name: page_size
          in: query
          description: Items per page (10 to 1000). Default 10.
          required: false
          schema:
            type: integer
            default: 10
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of enhancements
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Audio Enhancement_listAudioEnhancements_Response_200'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAudioEnhancementsRequestBadRequestError'
    post:
      operationId: create-audio-enhancement
      summary: Create audio enhancement
      description: |
        Submit an audio file for enhancement. Processing happens asynchronously in the background.
        The API defaults to the v2 enhancement engine. The v1 engine is legacy and will be sunset in a future release.
      tags:
        - subpackage_audioEnhancement
      parameters:
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '202':
          description: Enhancement job created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Audio Enhancement_createAudioEnhancement_Response_202'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAudioEnhancementRequestBadRequestError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAudioEnhancementRequestForbiddenError'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                audio_file:
                  type: string
                  format: binary
                  description: Audio file to enhance (WAV, MP3, M4A, MP4, OGG, AAC, FLAC). Max 150 MB.
                enhancement_engine:
                  $ref: '#/components/schemas/AudioEnhancementsPostRequestBodyContentMultipartFormDataSchemaEnhancementEngine'
                  description: Enhancement engine to use. Default is v2.
                remove_noise:
                  type: boolean
                  default: true
                  description: Remove background noise. Engine v2 only.
                normalize:
                  type: boolean
                  default: true
                  description: Normalize audio levels. Engine v2 only.
                studio_sound:
                  type: boolean
                  default: true
                  description: Apply studio-quality enhancement. Engine v2 only.
                enhancement_level:
                  type: number
                  format: double
                  description: Enhancement intensity (0.0 to 1.0). Engine v1 only (legacy).
                loudness_target_level:
                  type: integer
                  default: -14
                  description: Target loudness in LUFS. Engine v1 only (legacy).
                loudness_peak_limit:
                  type: integer
                  default: -1
                  description: Peak limit in dBTP. Engine v1 only (legacy).
              required:
                - audio_file
  /audio_enhancements/{enhancement_uuid}:
    get:
      operationId: get-audio-enhancement
      summary: Get audio enhancement
      description: Poll this endpoint to check the status of an enhancement job and retrieve the download URL when complete.
      tags:
        - subpackage_audioEnhancement
      parameters:
        - name: enhancement_uuid
          in: path
          description: The UUID returned from the create endpoint.
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Enhancement details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Audio Enhancement_getAudioEnhancement_Response_200'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAudioEnhancementRequestNotFoundError'
  /agents:
    get:
      operationId: list-agents
      summary: List agents
      description: Retrieve all agents for the authenticated team
      tags:
        - subpackage_agents
      parameters:
        - name: phone_number
          in: query
          description: Filter by associated phone number
          required: false
          schema:
            type: string
        - name: advanced
          in: query
          description: Include detailed configuration
          required: false
          schema:
            type: boolean
            default: false
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of agents
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agents_listAgents_Response_200'
    post:
      operationId: create-agent
      summary: Create agent
      description: Create a new voice agent
      tags:
        - subpackage_agents
      parameters:
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Agent created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agents_createAgent_Response_200'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                voice_uuid:
                  type: string
                phone_number_id:
                  type: integer
                languages:
                  type: array
                  items:
                    type: string
                dynamic_variables:
                  type: object
                  additionalProperties:
                    $ref: '#/components/schemas/AgentsPostRequestBodyContentApplicationJsonSchemaDynamicVariables'
                asr:
                  $ref: '#/components/schemas/AgentsPostRequestBodyContentApplicationJsonSchemaAsr'
                turn:
                  $ref: '#/components/schemas/AgentsPostRequestBodyContentApplicationJsonSchemaTurn'
                llm:
                  $ref: '#/components/schemas/AgentsPostRequestBodyContentApplicationJsonSchemaLlm'
                search_mode:
                  $ref: '#/components/schemas/AgentsPostRequestBodyContentApplicationJsonSchemaSearchMode'
                  description: RAG search strategy - speed (faster) or accuracy (more thorough)
                max_chunks_per_query:
                  type: integer
                  default: 8
                  description: Number of relevant chunks to retrieve per query for RAG
                webhooks:
                  type: array
                  items:
                    $ref: '#/components/schemas/AgentsPostRequestBodyContentApplicationJsonSchemaWebhooksItems'
                system_tools:
                  $ref: '#/components/schemas/AgentsPostRequestBodyContentApplicationJsonSchemaSystemTools'
              required:
                - name
                - voice_uuid
  /agents/{uuid}:
    get:
      operationId: get-agent
      summary: Get agent
      description: Retrieve a specific agent's details
      tags:
        - subpackage_agents
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: advanced
          in: query
          required: false
          schema:
            type: boolean
            default: false
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Agent details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agents_getAgent_Response_200'
    delete:
      operationId: delete-agent
      summary: Delete agent
      description: Delete an agent and all its configurations
      tags:
        - subpackage_agents
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Agent deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agents_deleteAgent_Response_200'
    patch:
      operationId: update-agent
      summary: Update agent
      description: Update an existing agent's configuration
      tags:
        - subpackage_agents
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Agent updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agents_updateAgent_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                voice_uuid:
                  type: string
                phone_number_id:
                  type: integer
                languages:
                  type: array
                  items:
                    type: string
                dynamic_variables:
                  $ref: '#/components/schemas/AgentsUuidPatchRequestBodyContentApplicationJsonSchemaDynamicVariables'
                asr:
                  $ref: '#/components/schemas/AgentsUuidPatchRequestBodyContentApplicationJsonSchemaAsr'
                turn:
                  $ref: '#/components/schemas/AgentsUuidPatchRequestBodyContentApplicationJsonSchemaTurn'
                llm:
                  $ref: '#/components/schemas/AgentsUuidPatchRequestBodyContentApplicationJsonSchemaLlm'
                search_mode:
                  $ref: '#/components/schemas/AgentsUuidPatchRequestBodyContentApplicationJsonSchemaSearchMode'
                  description: RAG search strategy
                max_chunks_per_query:
                  type: integer
                  description: Number of chunks to retrieve per query for RAG
                webhooks:
                  type: array
                  items:
                    description: Any type
                system_tools:
                  $ref: '#/components/schemas/AgentsUuidPatchRequestBodyContentApplicationJsonSchemaSystemTools'
  /agents/{uuid}/dispatch:
    post:
      operationId: dispatch-agent
      summary: Dispatch agent
      description: Make an outbound call with an agent
      tags:
        - subpackage_agents
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Call dispatched
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agents_dispatchAgent_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                phone_number:
                  type: string
                  description: Destination phone number
                dynamic_variables:
                  $ref: '#/components/schemas/AgentsUuidDispatchPostRequestBodyContentApplicationJsonSchemaDynamicVariables'
                  description: Runtime variable overrides
              required:
                - phone_number
  /agents/capabilities:
    get:
      operationId: get-agent-capabilities
      summary: Get capabilities
      description: List supported ASR and LLM providers and models
      tags:
        - subpackage_agents
      parameters:
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Agent capabilities
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agents_getAgentCapabilities_Response_200'
  /agents/system-tools:
    get:
      operationId: get-system-tools
      summary: Get system tools
      description: List available system tools
      tags:
        - subpackage_agents
      parameters:
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: System tools
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agents_getSystemTools_Response_200'
  /agents/{agent_uuid}/tools:
    get:
      operationId: list-agent-tools
      summary: List agent tools
      description: List all tools for an agent
      tags:
        - subpackage_agentTools
      parameters:
        - name: agent_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of tools
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent Tools_listAgentTools_Response_200'
    post:
      operationId: create-agent-tool
      summary: Create agent tool
      description: Create a new tool for an agent
      tags:
        - subpackage_agentTools
      parameters:
        - name: agent_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          description: API token from https://app.resemble.ai/account/api
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tool created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent Tools_createAgentTool_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                description:
                  type: string
                tool_type:
                  $ref: '#/components/schemas/AgentsAgentUuidToolsPostRequestBodyContentApplicationJsonSchemaToolType'
   

# --- truncated at 32 KB (248 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/resemble-ai/refs/heads/main/openapi/resemble-ai-openapi.yml