> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://murf.ai/api/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://murf.ai/api/docs/_mcp/server.

Murf API supports over 150 voices across 35 languages and 20+ speaking styles, making it easy to find the perfect voice for your content.

#### [Voice Library](/api/docs/voices-styles/voice-library)

You can listen to the voice samples in the [Voice Library](/api/docs/voices-styles/voice-library)

### Voices

Murf offers wide range of voices across genders and age, each associated with unique voice ID. Our voices are ethically sourced with full consent, backed by a legal framework that protects enterprises from copyright and licensing concerns. Each voice is differentiated using a unique voice ID. You can try out the voices in our [Voice Explorer](https://murf.ai/api/products/text-to-speech/Falcon?utm_source=murf_api_docs).

### Supported Locales

Voice are initially trained on a specific native language and accent. Our [Multilingual technology](/api/docs/text-to-speech/speech-customization#multinative) enables these voices to speak multiple languages while maintaining language specific pronunciation patterns and accents. This allows developers to generate truly Multilingual content using the same voice, ensuring authentic delivery across different languages and locales, ideal for global enterprises.

### Styles

Murf API provides multiple speaking styles that enable developers to fine-tune voice output for different contexts. Each voice supports distinct styles that modify tone, emotional inflection, and delivery characteristics. These styles can be programmatically applied to transform a neutral voice into specific delivery - such as promotional, newscast, conversational, or inspirational - allowing you to match the voice characteristics to your application requirements. You can try out the styles in our interactive [Voice Explorer](https://murf.ai/api/products/text-to-speech/Falcon?utm_source=murf_api_docs).

## Fetching Voices Programmatically

You can use the [List Voices](/api/docs/api-reference/voices/get-voices) endpoint to fetch the full list of available voices programmatically.

### Request

GET [https://api.murf.ai/v1/speech/voices](https://api.murf.ai/v1/speech/voices)

**`Data for the voice "Ken"`**

```python Data for the voice "Ken"
import requests
url = "https://api.murf.ai/v1/speech/voices?model=falcon-2"
headers = {
    "api-key": "YOUR_API_KEY_HERE"
}
response = requests.get(url, headers=headers)
print(response.json())

```

**`Data for the voice "Ken"`**

```python Data for the voice "Ken"
from murf import Murf

client = Murf()

client.text_to_speech.get_voices()

```

**`Data for the voice "Ken"`**

```curl Data for the voice "Ken"
curl https://api.murf.ai/v1/speech/voices
```

**`Data for the voice "Ken"`**

```javascript Data for the voice "Ken"
const url = 'https://api.murf.ai/v1/speech/voices';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**`Data for the voice "Ken"`**

```go Data for the voice "Ken"
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.murf.ai/v1/speech/voices"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

**`Data for the voice "Ken"`**

```ruby Data for the voice "Ken"
require 'uri'
require 'net/http'

url = URI("https://api.murf.ai/v1/speech/voices")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

**`Data for the voice "Ken"`**

```java Data for the voice "Ken"
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.murf.ai/v1/speech/voices")
  .asString();
```

**`Data for the voice "Ken"`**

```php Data for the voice "Ken"
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.murf.ai/v1/speech/voices');

echo $response->getBody();
```

**`Data for the voice "Ken"`**

```csharp Data for the voice "Ken"
using RestSharp;

var client = new RestClient("https://api.murf.ai/v1/speech/voices");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

**`Data for the voice "Ken"`**

```swift Data for the voice "Ken"
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.murf.ai/v1/speech/voices")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

The response will include a list of voice objects. Here is an example of a voice object:

### Response (200)

```json
[
  {
    "description": "Middle-Aged",
    "displayName": "Ken (M)",
    "gender": "Male",
    "locale": "en-US",
    "supportedLocales": {
      "de-DE": {
        "availableStyles": [
          "Promo"
        ],
        "detail": "German (Germany)"
      },
      "en-US": {
        "availableStyles": [
          "Conversational",
          "Promo",
          "Newscast",
          "Storytelling",
          "Calm",
          "Furious",
          "Angry",
          "Sobbing",
          "Sad"
        ],
        "detail": "English (US & Canada)"
      },
      "es-ES": {
        "availableStyles": [
          "Promo"
        ],
        "detail": "Spanish (Spain)"
      }
    },
    "voiceId": "Ken",
    "accent": "US & Canada",
    "availableStyles": [
      "Conversational",
      "Promo",
      "Newscast",
      "Storytelling",
      "Calm",
      "Furious",
      "Angry",
      "Sobbing",
      "Sad"
    ],
    "displayLanguage": "English"
  }
]
```