openapi: 3.1.0
info:
title: API Reference
version: 1.0.0
paths:
/v1/speech/stream:
post:
operationId: stream
summary: Stream Speech
description: >
Synthesize speech with ultra-low latency over a streaming connection.
Choose the `Base URL` from the URL dropdown (Global URL or a pinned Region)
**Note**: Global URL auto-routes to the nearest region.
| Region | URL | Default Concurrency |
| ------------------------- | ---------------------------------------------- | -------------------- |
| Global (Routes to the nearest server) | `https://global.api.murf.ai/v1/speech/stream` | Region specific
concurrency |
| US-East | `https://us-east.api.murf.ai/v1/speech/stream` | 15 |
| US-West | `https://us-west.api.murf.ai/v1/speech/stream` | 2 |
| India | `https://in.api.murf.ai/v1/speech/stream` | 2 |
| Canada | `https://ca.api.murf.ai/v1/speech/stream` | 2 |
| South Korea | `https://kr.api.murf.ai/v1/speech/stream` | 2 |
| UAE | `https://me.api.murf.ai/v1/speech/stream` | 2 |
| Japan | `https://jp.api.murf.ai/v1/speech/stream` | 2 |
| Australia | `https://au.api.murf.ai/v1/speech/stream` | 2 |
| EU (Central) | `https://eu-central.api.murf.ai/v1/speech/stream` | 2 |
| UK | `https://uk.api.murf.ai/v1/speech/stream` | 2 |
| South America (São Paulo) | `https://sa-east.api.murf.ai/v1/speech/stream` | 2 |
tags:
- subpackage_textToSpeech
parameters:
- name: api-key
in: header
required: false
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/text_to_speech_stream_Response_200'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'402':
description: Expired subscription or character limit exhausted
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token/api-key provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateSpeechStreamingRequest'
/v1/speech/generate:
post:
operationId: generate
summary: Synthesize Speech
description: Returns a url to the generated audio file along with other associated properties.
tags:
- subpackage_textToSpeech
parameters:
- name: api-key
in: header
required: false
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateSpeechResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'402':
description: Expired subscription or character limit exhausted
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token/api-key provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateSpeechRequest'
/v1/speech/voices:
get:
operationId: get-voices
summary: List Voices
description: Returns a list of available voices for speech synthesis
tags:
- subpackage_textToSpeech
parameters:
- name: model
in: query
description: 'Valid values: FALCON, GEN2'
required: false
schema:
type: string
default: GEN2
- name: token
in: header
required: false
schema:
type: string
- name: api-key
in: header
required: false
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ApiVoice'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
/v1/voice-changer/convert:
post:
operationId: convert
summary: Voice Changer
description: Returns a url to the generated audio file along with other associated properties.
tags:
- subpackage_voiceChanger
parameters:
- name: api-key
in: header
required: false
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/SpeechToSpeechResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'402':
description: Expired subscription or character limit exhausted
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token/api-key provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
audio_duration:
type: number
format: double
description: >-
This parameter allows specifying the duration (in seconds) for the generated audio. If the value is
0, this parameter will be ignored. Only available for Gen2 model.
channel_type:
type: string
default: MONO
description: 'Valid values: STEREO, MONO'
encode_output_as_base64:
type: boolean
description: Set to true to receive audio in response as a Base64 encoded string along with a url.
file:
type: string
format: binary
description: The file to upload
file_url:
type: string
format:
type: string
default: WAV
description: 'Format of the generated audio file. Valid values: MP3, WAV, FLAC, ALAW, ULAW'
multi_native_locale:
type: string
description: >-
Specifies the language for the generated audio, enabling a voice to speak in multiple languages
natively. Only available in the Gen2 model.
Valid values: "en-US", "en-UK", "es-ES", etc.
Use the GET /v1/speech/voices endpoint to retrieve the list of available voices and languages.
pitch:
type: integer
description: Pitch of the voiceover
pronunciation_dictionary:
type: string
description: >-
A JSON string that defines custom pronunciations for specific words or phrases. Each key is a word
or phrase, and its value is an object with `type` and `pronunciation`.
Example 1: '{"live": {"type": "IPA", "pronunciation": "laɪv"}}'
Example 2: '{"2022": {"type": "SAY_AS", "pronunciation": "twenty twenty two"}}'
rate:
type: integer
description: Speed of the voiceover
retain_accent:
type: boolean
default: true
description: Set to true to retain the original accent of the speaker during voice generation.
retain_prosody:
type: boolean
default: true
description: >-
Indicates whether to retain the original prosody (intonation, rhythm, and stress) of the input voice
in the generated output.
return_transcription:
type: boolean
default: false
description: Set to true to include a textual transcription of the generated audio in the response.
sample_rate:
type: number
format: double
default: 44100
description: Valid values are 8000, 24000, 44100, 48000
style:
type: string
description: The voice style to be used for voiceover generation.
transcription:
type: string
description: >-
This parameter allows specifying a transcription of the audio clip, which will then be used as input
for the voice changer
variation:
type: integer
default: 1
description: >-
Higher values will add more variation in terms of Pause, Pitch, and Speed to the voice. Only
available for Gen2 model.
voice_id:
type: string
description: >-
Use the GET /v1/speech/voices API to find supported voiceIds. You can use either the voiceId (e.g.
en-US-natalie) or just the voice actor's name (e.g. natalie).
required:
- voice_id
/v1/text/translate:
post:
operationId: translate
summary: Translate
tags:
- subpackage_text
parameters:
- name: api-key
in: header
required: false
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/MurfApiTranslationResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'402':
description: Expired subscription or character limit exhausted
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MurfApiTranslationRequest'
/v1/auth/token:
get:
operationId: generate-token
summary: Generate auth token
description: Generates an auth token for authenticating your requests
tags:
- subpackage_auth
parameters:
- name: api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/AuthTokenResponse'
'400':
description: Bad request or missing api-key header
content:
application/json:
schema:
description: Any type
'401':
description: Bad api-key provided
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
/v1/murfdub/list-destination-languages:
get:
operationId: list-destination-languages
summary: List Destination Languages
tags:
- subpackage_dubbing.subpackage_dubbing/languages
parameters:
- name: api-key
in: header
description: Your Dub API key
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/LocaleResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
/v1/murfdub/list-source-languages:
get:
operationId: list-source-languages
summary: List Source Languages
tags:
- subpackage_dubbing.subpackage_dubbing/languages
parameters:
- name: api-key
in: header
description: Your Dub API key
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SourceLocaleResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
/v1/murfdub/jobs/create:
post:
operationId: create
summary: Create
tags:
- subpackage_dubbing.subpackage_dubbing/jobs
parameters:
- name: api-key
in: header
description: Your Dub API key
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: The file to upload
file_url:
type: string
source_locale:
type: string
description: Source locale
target_locales:
type: array
items:
type: string
description: List of target locales
webhook_url:
type: string
file_name:
type: string
priority:
$ref: '#/components/schemas/V1MurfdubJobsCreatePostRequestBodyContentMultipartFormDataSchemaPriority'
description: 'Priority of the job. Allowed values: LOW, NORMAL, HIGH'
webhook_secret:
type: string
required:
- target_locales
/v1/murfdub/jobs/create-with-project-id:
post:
operationId: create-with-project-id
summary: Create With Project Id
tags:
- subpackage_dubbing.subpackage_dubbing/jobs
parameters:
- name: api-key
in: header
description: Your Dub API key
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiJobResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: The file to upload
file_url:
type: string
project_id:
type: string
description: Your Project Id
webhook_url:
type: string
file_name:
type: string
priority:
$ref: >-
#/components/schemas/V1MurfdubJobsCreateWithProjectIdPostRequestBodyContentMultipartFormDataSchemaPriority
description: 'Priority of the job. Allowed values: LOW, NORMAL, HIGH'
webhook_secret:
type: string
required:
- project_id
/v1/murfdub/jobs/{job_id}/status:
get:
operationId: get-status
summary: Get Status
tags:
- subpackage_dubbing.subpackage_dubbing/jobs
parameters:
- name: job_id
in: path
required: true
schema:
type: string
- name: api-key
in: header
description: Your Dub API key
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/DubJobStatusResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
/v1/murfdub/projects/create:
post:
operationId: create
summary: Create
tags:
- subpackage_dubbing.subpackage_dubbing/projects
parameters:
- name: api-key
in: header
description: Your Dub API key
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiProjectResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiCreateProjectRequest'
/v1/murfdub/projects/list:
get:
operationId: list
summary: List
tags:
- subpackage_dubbing.subpackage_dubbing/projects
parameters:
- name: limit
in: query
description: Number of Projects in response
required: false
schema:
type: integer
- name: next
in: query
description: Next Page Iterator
required: false
schema:
type: string
- name: api-key
in: header
description: Your Dub API key
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/GroupApiProjectResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
/v1/murfdub/projects/{project_id}/update:
put:
operationId: update
summary: Update
tags:
- subpackage_dubbing.subpackage_dubbing/projects
parameters:
- name: project_id
in: path
required: true
schema:
type: string
- name: api-key
in: header
description: Your Dub API key
required: true
schema:
type: string
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiProjectResponse'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'403':
description: Invalid or expired token provided
content:
application/json:
schema:
description: Any type
'500':
description: Internal Server Error
content:
application/json:
schema:
description: Any type
'503':
description: Service Unavailable
content:
application/json:
schema:
description: Any type
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUpdateProjectRequest'
servers:
- url: https://api.murf.ai
- url: https://global.api.murf.ai
- url: https://us-east.api.murf.ai
- url: https://us-west.api.murf.ai
- url: https://in.api.murf.ai
- url: https://ca.api.murf.ai
- url: https://kr.api.murf.ai
- url: https://me.api.murf.ai
- url: https://jp.api.murf.ai
- url: https://au.api.murf.ai
- url: https://eu-central.api.murf.ai
- url: https://uk.api.murf.ai
- url: https://sa-east.api.murf.ai
components:
schemas:
PronunciationDetailType:
type: string
enum:
- IPA
- SAY_AS
title: PronunciationDetailType
PronunciationDetail:
type: object
properties:
pronunciation:
type: string
type:
$ref: '#/components/schemas/PronunciationDetailType'
description: |-
An object used to define custom pronunciations.
Example 1: {"live":{"type": "IPA", "pronunciation": "laɪv"}}.
Example 2: {"2022":{"type": "SAY_AS", "pronunciation": "twenty twenty two"}}
title: PronunciationDetail
GenerateSpeechStreamingRequest:
type: object
properties:
model:
type: string
description: >-
The model to use for audio output. Defaults to FALCON for all the regions except US-East. Valid values:
FALCON, GEN2
channelType:
type: string
default: MONO
description: 'Valid values: STEREO, MONO'
format:
type: string
default: WAV
description: 'Format of the generated audio file.Valid values: MP3, FLAC, WAV, ALAW, ULAW, OGG, PCM'
multiNativeLocale:
type: string
description: >-
This field is superseded by `locale` field. Please migrate to `locale` field to ensure compatibility with
future API versions.
Specifies the language for the generated audio, enabling a voice to speak in multiple languages natively.
Valid values: "en-US", "en-UK", "es-ES", etc. Use the GET /v1/speech/voices endpoint to retrieve the list of
available voices and languages.
locale:
type: string
description: >-
Specifies the language for the generated audio, enabling a voice to speak in multiple languages natively.
Valid values: "en-US", "en-UK", "es-ES", etc. Use the GET /v1/speech/voices endpoint to retrieve the list of
available voices and languages.
pitch:
type: integer
description: Pitch of the voiceover
pronunciationDictionary:
type: object
additionalProperties:
$ref: '#/components/schemas/PronunciationDetail'
description: |-
An object used to define custom pronunciations.
Example 1: {"live":{"type": "IPA", "pronunciation": "laɪv"}}.
Example 2: {"2022":{"type": "SAY_AS", "pronunciation": "twenty twenty two"}}
rate:
type: integer
description: Speed of the voiceover
sampleRate:
type: number
format: double
default: 24000
description: >-
Valid values are 8000, 16000, 24000, 44100, 48000. Defaults to 24000 for Falcon model and 44100 for Gen2
model.
style:
type: string
description: The voice style to be used for voiceover generation.
text:
type: string
description: The text that is to be synthesised. e.g. 'Hello there [pause 1s] friend'
variation:
type: integer
default: 1
description: >-
Higher values will add more variation in terms of Pause, Pitch, and Speed to the voice. Only available for
Gen2 model.
voiceId:
type: string
description: >-
Use the GET /v1/speech/voices API to find supported voiceIds. You can use either the voiceId (e.g.
en-US-natalie) or just the voice actor's name (e.g. natalie).
required:
- text
- voiceId
title: GenerateSpeechStreamingRequest
text_to_speech_stream_Response_200:
type: object
properties: {}
description: Empty response body
title: text_to_speech_stream_Response_200
GenerateSpeechRequestModelVersion:
type: string
enum:
- GEN2
default: GEN2
description: >-
Valid values: GEN2. Audio will be generated using the new and advanced GEN2 model. Outputs from GEN2 sound more
natural and high-quality compared to earlier models.
title: GenerateSpeechRequestModelVersion
GenerateSpeechRequest:
type: object
properties:
audioDuration:
type: number
format: double
description: >-
This parameter allows specifying the duration (in seconds) for the generated audio. If the value is 0, this
parameter will be ignored. Only available for Gen2 model.
channelType:
type: string
default: MONO
description: 'Valid values: STEREO, MONO'
encodeAsBase64:
type: boolean
description: >-
Set to true to receive audio in response as a Base64 encoded string instead of a url. This enables zero
retention of audio data on Murf'
# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/murf/refs/heads/main/openapi/murf-openapi.yml