# Murf AI

> Turn text into lifelike voice-overs with Murf AI, re-voice existing recordings, translate copy, clone a voice, and dub video into other languages.

App · Voice AI · 15 actions. Web page: https://docs.lodol.com/docs/integrations/murf

## Actions

### Change a project's languages

Set which languages a dubbing project produces. This replaces the project's current languages: any you leave out are removed.

**Inputs**

- Project (`project_id`, text, required): Which dubbing project to use.
- Dub into (`target_locales`, list, required): Which languages to produce. Pick as many as you need.

**Outputs**

- `project` (object): The project as it now stands.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "project": {
    "description": "Q4 launch",
    "dubbing_type": "AUTOMATED",
    "name": "Launch video",
    "project_id": "prj_90ab",
    "source_locale": "en-US",
    "target_locales": [
      "fr-FR",
      "de-DE",
      "ja-JP"
    ]
  },
  "status": "success"
}
```

### Change the voice in a recording

Re-speak an existing recording in a Murf voice, keeping what was said. Saves the result as an audio file.

**Inputs**

- Recording (`audio`, text, required): The audio to re-voice: upload a file, pick one from an earlier step, or paste a public link.
- New voice (`voice_id`, text, required): The Murf voice to speak the recording in.
- Language (`locale`, text): Which of the voice's languages to speak in. Leave blank for the voice's own language.
- Speaking style (`style`, text): How the line is delivered: conversational, promo, newscast and so on. Styles differ by voice and language. Leave blank for the voice's usual delivery.
- Speed (`speed`, number): Faster or slower than the voice's natural pace. 0 leaves it alone. From -50 to 50.
- Pitch (`pitch`, number): Higher or lower than the voice's natural pitch. 0 leaves it alone. From -50 to 50.
- Keep the original delivery (`keep_delivery`, true/false): Follow the speaker's pauses, rhythm and emphasis instead of the voice's usual reading.
- Keep the original accent (`keep_accent`, true/false): Hold on to the speaker's accent in the new voice.
- File format (`audio_format`, text): MP3 suits email and the web; WAV suits editing. One of: `MP3` (MP3 · small file, plays anywhere), `WAV` (WAV · uncompressed, best for editing), `FLAC` (FLAC · lossless but smaller than WAV), `ALAW` (A-law · 8-bit telephony), `ULAW` (μ-law · 8-bit telephony). Default: `MP3`.
- Audio quality (`sample_rate`, number): Leave blank unless the audio is for a phone system or for video. One of: `8000` (8 kHz · phone systems), `24000` (24 kHz · speech), `44100` (44.1 kHz · CD quality (Murf's default)), `48000` (48 kHz · video and broadcast).

**Outputs**

- `characters_remaining` (number): Characters left in this billing cycle.
- `content_type` (text): Media type of the saved audio.
- `document_ref` (text): Reference to the saved audio, for a later step.
- `documents` (list): The re-voiced audio, saved and ready to use.
- `duration_seconds` (number): How long the new recording runs.
- `filename` (text): Name of the saved file.
- `size_bytes` (number): Size of the saved audio in bytes.
- `status` (text): Status of the action execution ("success" on success).
- `url` (text): Download link for the audio.

**Example output**

```json
{
  "characters_remaining": 94850,
  "content_type": "audio/mpeg",
  "document_ref": "doc_4b9e10",
  "documents": [
    {
      "content_type": "audio/mpeg",
      "document_ref": "doc_4b9e10",
      "filename": "interview-murf.mp3",
      "size_bytes": 251004,
      "url": "/actions/core/serve-document/doc_4b9e10"
    }
  ],
  "duration_seconds": 22.8,
  "filename": "interview-murf.mp3",
  "size_bytes": 251004,
  "status": "success",
  "url": "/actions/core/serve-document/doc_4b9e10"
}
```

### Check a dubbing job

See how a dubbing job is going and get the download links for whatever is finished. Murf expires those links 72 hours after the job completes.

**Inputs**

- Dubbing job (`job_id`, text, required): The job id a dubbing step handed back.

**Outputs**

- `credits_remaining` (number): Credits left on the account.
- `credits_used` (number): Credits this job has used.
- `downloads` (list): One entry per language, with its links.
- `failure_reason` (text): Why the job failed, when it did.
- `finished` (true/false): True once the job has stopped moving.
- `job_id` (text): The job checked.
- `job_status` (text): Where the job has got to, e.g. COMPLETED.
- `project_id` (text): The project it belongs to, if any.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "credits_remaining": 99,
  "credits_used": 1,
  "downloads": [
    {
      "download_srt_url": "https://murf.ai/dub/job_1a2b3c/fr-FR.srt",
      "download_url": "https://murf.ai/dub/job_1a2b3c/fr-FR.mp4",
      "error_message": "",
      "locale": "fr-FR",
      "status": "COMPLETED"
    }
  ],
  "failure_reason": "",
  "finished": true,
  "job_id": "job_1a2b3c",
  "job_status": "COMPLETED",
  "project_id": "",
  "status": "success"
}
```

### Check a voice clone

See whether a voice clone is ready, and get its voice id once it is.

**Inputs**

- Clone request (`request_id`, text, required): The request id 'Create a voice clone' handed back.

**Outputs**

- `clone_status` (text): QUEUED, PROCESSING, COMPLETED or FAILED.
- `message` (text): What Murf said, including why it failed.
- `ready` (true/false): True once the clone can be used to speak.
- `request_id` (text): The request checked.
- `status` (text): Status of the action execution ("success" on success).
- `voice_id` (text): The cloned voice's id, once it is ready.

**Example output**

```json
{
  "clone_status": "COMPLETED",
  "message": "SUCCESS",
  "ready": true,
  "request_id": "3f0a9c2e",
  "status": "success",
  "voice_id": "cln_8d21f4"
}
```

### Create a dubbing project

Create a project that dubbing jobs can be filed under, so they can be reviewed and edited together in Murf Dub.

**Inputs**

- Project name (`name`, text, required): What to call the project in Murf Dub.
- Dub into (`target_locales`, list, required): Which languages to produce. Pick as many as you need.
- How it's dubbed (`dubbing_type`, text): Automated is AI only. Expert QA is reviewed by Murf's team and takes longer. One of: `AUTOMATED` (Automated · AI translation, delivered fastest), `QA` (Expert QA · reviewed by Murf's team, and editable afterwards). Default: `AUTOMATED`.
- Spoken language (`source_locale`, text): The language spoken in what you're dubbing. Leave blank and Murf works it out.
- Description (`description`, text): An optional note about what the project is for.

**Outputs**

- `project` (object): The project that was created.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "project": {
    "description": "Q4 launch",
    "dubbing_type": "AUTOMATED",
    "name": "Launch video",
    "project_id": "prj_90ab",
    "source_locale": "en-US",
    "target_locales": [
      "fr-FR",
      "de-DE"
    ]
  },
  "status": "success"
}
```

### Create a voice clone

Clone a voice from a sample recording. Cloning takes a little while; follow it with 'Check a voice clone'. Murf plays cloned voices through its real-time streaming model only, so a clone will not appear in 'Generate speech'.

**Inputs**

- Name (`name`, text, required): What to call the cloned voice in Murf.
- Voice sample (`audio`, text, required): A clear recording of the voice, up to 40 MB: upload a file, pick one from an earlier step, or paste a public link.

**Outputs**

- `message` (text): What Murf said in reply.
- `name` (text): The name the clone was given.
- `request_id` (text): Give this to 'Check a voice clone'.
- `status` (text): Status of the action execution ("success" on success).
- `tag` (text): The unique tag Murf files the clone under.

**Example output**

```json
{
  "message": "Voice clone request accepted",
  "name": "Sam",
  "request_id": "3f0a9c2e",
  "status": "success",
  "tag": "sam-9a1b2c3d"
}
```

### Delete a cloned voice

Permanently delete a cloned voice from your workspace. This cannot be undone.

**Inputs**

- Cloned voice (`voice_id`, text, required): Which cloned voice to delete.

**Outputs**

- `deleted` (true/false): True once Murf has removed the voice.
- `message` (text): What Murf said in reply.
- `status` (text): Status of the action execution ("success" on success).
- `voice_id` (text): The voice that was deleted.

**Example output**

```json
{
  "deleted": true,
  "message": "SUCCESS",
  "status": "success",
  "voice_id": "cln_8d21f4"
}
```

### Dub a file into a project

Dub a file using an existing project's languages, so the result can be reviewed and edited in Murf Dub afterwards.

**Inputs**

- Project (`project_id`, text, required): Which dubbing project to use.
- Video or audio (`file`, text, required): The file to dub: upload one, pick one from an earlier step, or paste a public link.

**Outputs**

- `dubbing_type` (text): AUTOMATED or QA.
- `file_name` (text): The file being dubbed.
- `job_id` (text): Give this to 'Check a dubbing job'.
- `project_id` (text): The project the job was filed under.
- `source_locale` (text): The language Murf is dubbing from.
- `status` (text): Status of the action execution ("success" on success).
- `target_locales` (list): The languages the project produces.
- `warning` (text): Anything Murf flagged about the job.

**Example output**

```json
{
  "dubbing_type": "AUTOMATED",
  "file_name": "launch-video.mp4",
  "job_id": "job_4d5e6f",
  "project_id": "prj_90ab",
  "source_locale": "en-US",
  "status": "success",
  "target_locales": [
    "fr-FR"
  ],
  "warning": ""
}
```

### Dub a video or audio file

Dub one file into other languages. Dubbing runs in the background; follow it with 'Check a dubbing job'. Needs a Murf Dub API key on this connection.

**Inputs**

- Video or audio (`file`, text, required): The file to dub: upload one, pick one from an earlier step, or paste a public link.
- Dub into (`target_locales`, list, required): Which languages to produce. Pick as many as you need.
- Spoken language (`source_locale`, text): The language spoken in what you're dubbing. Leave blank and Murf works it out.

**Outputs**

- `dubbing_type` (text): AUTOMATED or QA.
- `file_name` (text): The file being dubbed.
- `job_id` (text): Give this to 'Check a dubbing job'.
- `source_locale` (text): The language Murf is dubbing from.
- `status` (text): Status of the action execution ("success" on success).
- `target_locales` (list): The languages being produced.
- `warning` (text): Anything Murf flagged about the job.

**Example output**

```json
{
  "dubbing_type": "AUTOMATED",
  "file_name": "launch-video.mp4",
  "job_id": "job_1a2b3c",
  "source_locale": "en-US",
  "status": "success",
  "target_locales": [
    "fr-FR",
    "de-DE"
  ],
  "warning": ""
}
```

### Generate speech

Turn text into a voice-over and save it as an audio file a later step can attach, upload or post.

**Inputs**

- What to say (`text`, text, required): The script to read out. Add a pause with [pause 1s].
- Voice (`voice_id`, text, required): Which Murf voice to speak in.
- Language (`locale`, text): Which of the voice's languages to speak in. Leave blank for the voice's own language.
- Speaking style (`style`, text): How the line is delivered: conversational, promo, newscast and so on. Styles differ by voice and language. Leave blank for the voice's usual delivery.
- Speed (`speed`, number): Faster or slower than the voice's natural pace. 0 leaves it alone. From -50 to 50.
- Pitch (`pitch`, number): Higher or lower than the voice's natural pitch. 0 leaves it alone. From -50 to 50.
- File format (`audio_format`, text): MP3 suits email and the web; WAV suits editing. One of: `MP3` (MP3 · small file, plays anywhere), `WAV` (WAV · uncompressed, best for editing), `FLAC` (FLAC · lossless but smaller than WAV), `OGG` (OGG · open format, small file), `PCM` (PCM · raw audio, no container), `ALAW` (A-law · 8-bit telephony), `ULAW` (μ-law · 8-bit telephony). Default: `MP3`.
- Audio quality (`sample_rate`, number): Leave blank unless the audio is for a phone system or for video. One of: `8000` (8 kHz · phone systems), `24000` (24 kHz · speech), `44100` (44.1 kHz · CD quality (Murf's default)), `48000` (48 kHz · video and broadcast).

**Outputs**

- `characters_remaining` (number): Characters left in this billing cycle.
- `content_type` (text): Media type of the saved audio.
- `document_ref` (text): Reference to the saved audio, for a later step.
- `documents` (list): The saved audio file, ready to attach.
- `duration_seconds` (number): How long the voice-over runs.
- `filename` (text): Name of the saved file.
- `size_bytes` (number): Size of the saved audio in bytes.
- `status` (text): Status of the action execution ("success" on success).
- `url` (text): Download link for the audio.

**Example output**

```json
{
  "characters_remaining": 96120,
  "content_type": "audio/mpeg",
  "document_ref": "doc_7f1c2a",
  "documents": [
    {
      "content_type": "audio/mpeg",
      "document_ref": "doc_7f1c2a",
      "filename": "murf-speech.mp3",
      "size_bytes": 48213,
      "url": "/actions/core/serve-document/doc_7f1c2a"
    }
  ],
  "duration_seconds": 4.2,
  "filename": "murf-speech.mp3",
  "size_bytes": 48213,
  "status": "success",
  "url": "/actions/core/serve-document/doc_7f1c2a"
}
```

### List cloned voices

List the voices this workspace has cloned, with the id Murf's real-time streaming model addresses each one by.

**Inputs**: None.

**Outputs**

- `count` (number): How many cloned voices were returned.
- `status` (text): Status of the action execution ("success" on success).
- `voices` (list): The workspace's cloned voices.

**Example output**

```json
{
  "count": 1,
  "status": "success",
  "voices": [
    {
      "created_at": "2026-09-01T10:24:00Z",
      "name": "Sam",
      "tag": "sam-9a1b2c3d",
      "voice_id": "cln_8d21f4"
    }
  ]
}
```

### List dubbing languages

List the languages Murf Dub can dub into, or dub from.

**Inputs**

- Which list (`direction`, text, required): Languages you can dub into, or languages Murf can read. One of: `into` (Languages you can dub into), `from` (Languages you can dub from). Default: `into`.

**Outputs**

- `count` (number): How many languages were returned.
- `direction` (text): Which list was read (into or from).
- `languages` (list): The languages Murf Dub supports.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "count": 1,
  "direction": "into",
  "languages": [
    {
      "language": "French",
      "locale": "fr-FR",
      "supports": [
        "AUTOMATED",
        "QA"
      ]
    }
  ],
  "status": "success"
}
```

### List dubbing projects

List the dubbing projects on your Murf Dub account.

**Inputs**

- Maximum results (`limit`, number): How many projects to return. Defaults to Murf's own page size. From 1 to 100.
- Continue from (`cursor`, text): To read the next page, use the 'next cursor' from the previous run. Leave blank to start at the beginning.

**Outputs**

- `count` (number): How many projects were returned.
- `next_cursor` (text): Pass this back as 'Continue from' for the next page.
- `projects` (list): The projects on the account.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "count": 1,
  "next_cursor": "",
  "projects": [
    {
      "description": "Q4 launch",
      "dubbing_type": "AUTOMATED",
      "name": "Launch video",
      "project_id": "prj_90ab",
      "source_locale": "en-US",
      "target_locales": [
        "fr-FR",
        "de-DE"
      ]
    }
  ],
  "status": "success"
}
```

### List voices

List the Murf voices available to your account, with the languages and styles each one offers.

**Inputs**

- Language (`locale`, text): Only list voices that speak this language. Leave blank for all of them.

**Outputs**

- `count` (number): How many voices were returned.
- `status` (text): Status of the action execution ("success" on success).
- `voices` (list): The voices that matched.

**Example output**

```json
{
  "count": 1,
  "status": "success",
  "voices": [
    {
      "description": "Young Adult",
      "gender": "Female",
      "locale": "en-US",
      "locales": [
        "en-US",
        "es-ES"
      ],
      "name": "Natalie",
      "styles": [
        "Promo",
        "Conversational",
        "Newscast"
      ],
      "voice_id": "en-US-natalie"
    }
  ]
}
```

### Translate text

Translate text into one of Murf's 22 languages, ready to feed straight into 'Generate speech'.

**Inputs**

- Text (`text`, text, required): What to translate, up to 4,000 characters.
- Translate into (`target_language`, text, required): The language to translate into. One of: `bn-IN` (Bangla (India) (bn-IN)), `zh-CN` (Chinese, Mandarin (China) (zh-CN)), `hr-HR` (Croatian (Croatia) (hr-HR)), `nl-NL` (Dutch (Netherlands) (nl-NL)), `en-AU` (English (Australia) (en-AU)), `en-IN` (English (India) (en-IN)), `en-SCOTT` (English (Scotland) (en-SCOTT)), `en-UK` (English (UK) (en-UK)), `en-US` (English (US & Canada) (en-US)), `fr-FR` (French (France) (fr-FR)), and 12 more.

**Outputs**

- `credits_used` (number): Murf credits this translation used.
- `status` (text): Status of the action execution ("success" on success).
- `target_language` (text): The language it was translated into.
- `translated_text` (text): The translation.
- `translations` (list): Each piece of text with its translation.

**Example output**

```json
{
  "credits_used": 1.5,
  "status": "success",
  "target_language": "es-ES",
  "translated_text": "Hola, mundo.",
  "translations": [
    {
      "source_text": "Hello, world.",
      "translated_text": "Hola, mundo."
    }
  ]
}
```
