> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Concevoir une voix.

POST https://api.elevenlabs.io/v1/text-to-voice/design
Content-Type: application/json

Concevez une voix à partir d’un prompt. Cette méthode renvoie une liste d’aperçus de voix. Chaque aperçu comporte un generated_voice_id et un échantillon de la voix sous forme d’audio MP3 encodé en base64. Pour créer une voix, utilisez le generated_voice_id de l’aperçu choisi avec le point de terminaison /v1/text-to-voice.

Reference: https://elevenlabs.io/docs/api-reference/text-to-voice/design

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Query parameters

- `output_format` (enum, optional) — Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
  - Allowed values: `mp3_22050_32`, `mp3_24000_48`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192`, `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_32000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`, `alaw_8000`, `opus_48000_32`, `opus_48000_64`, `opus_48000_96`, `opus_48000_128`, `opus_48000_192`

### Body (application/json)

This endpoint expects a VoiceDesignRequestModel.

- `voice_description` (string, required) — Description à utiliser pour la voix créée.
- `model_id` (enum, optional, default: eleven_multilingual_ttv_v2) — Modèle à utiliser pour la génération vocale. Valeurs possibles : eleven_multilingual_ttv_v2, eleven_ttv_v3.
  - Allowed values: `eleven_multilingual_ttv_v2`, `eleven_ttv_v3`
- `text` (string, optional, nullable) — Texte à générer, dont la longueur doit être comprise entre 100 et 1 000 caractères.
- `auto_generate_text` (boolean, optional, default: false) — Indique s'il faut générer automatiquement un texte adapté à la description de la voix.
- `loudness` (double, optional, default: 0.5) — Contrôle le niveau de volume de la voix générée. -1 correspond au niveau le plus faible, 1 au niveau le plus élevé et 0 correspond approximativement à -24 LUFS.
- `seed` (integer, optional, nullable) — Nombre aléatoire qui contrôle la génération de voix. La même graine avec les mêmes entrées produit la même voix.
- `guidance_scale` (double, optional, default: 5) — Contrôle dans quelle mesure l'IA suit fidèlement le prompt. Des valeurs faibles donnent à l'IA davantage de liberté créative, tandis que des valeurs élevées l'obligent à suivre plus strictement le prompt. Des valeurs élevées peuvent donner à la voix un son artificiel ou robotique. Nous recommandons d'utiliser des prompts plus longs et détaillés avec une Guidance Scale plus faible.
- `stream_previews` (boolean, optional, default: false) — Détermine si les aperçus Text to Voice doivent être inclus dans la réponse. Si cette valeur est true, seuls les ID générés sont renvoyés. Ils peuvent ensuite être diffusés via le point de terminaison /v1/text-to-voice/:generated_voice_id/stream.
- `should_enhance` (boolean, optional, default: false) — Indique s'il faut enrichir la description de la voix à l'aide de l'IA afin d'ajouter des détails et d'améliorer la qualité de génération vocale. Lorsqu'il est activé, le système développe automatiquement les prompts simples en descriptions de voix plus détaillées. La valeur par défaut est False.
- `remixing_session_id` (string, optional, nullable) — L'ID de session de remixage.
- `remixing_session_iteration_id` (string, optional, nullable) — L’ID de l’itération de session de remixage à laquelle ces générations doivent être associées. S’il n’est pas fourni, une nouvelle itération sera créée.
- `quality` (double, optional, nullable) — Une qualité supérieure améliore le rendu vocal, mais réduit la variété.
- `reference_audio_base64` (string, optional, nullable) — Audio de référence à utiliser pour la génération de voix. L’audio doit être encodé en base64. Pris en charge uniquement avec le modèle eleven_ttv_v3.
- `prompt_strength` (double, optional, nullable) — Contrôle l'équilibre entre le prompt et l'audio de référence lors de la génération d'échantillons vocaux. 0 signifie que le prompt n'a presque aucune influence, 1 signifie que l'audio de référence n'a presque aucune influence. Pris en charge uniquement avec le modèle eleven_ttv_v3.

## Response

### 200

Réponse réussie

- `previews` (list of VoicePreviewResponseModel, required) — Les aperçus des voix générées.
- `text` (string, required) — Le texte utilisé pour prévisualiser les voix.

## Errors

### 409 Conflict Error

Une génération pour cet aperçu est déjà en cours. Réessayez la requête.

- `any`

### 422 Unprocessable Entity Error

Erreur de validation

- `detail` (list of ValidationError, optional)

## Types

### VoicePreviewResponseModel

- `audio_base_64` (string, required) — Audio de l’aperçu encodé en base64.
- `generated_voice_id` (string, required) — L’ID de la voix générée. Utilisez-le pour créer une voix à partir de l’aperçu.
- `media_type` (string, required) — Le type MIME de l’aperçu.
- `duration_secs` (double, required) — La durée de l’aperçu en secondes.
- `language` (string, required, nullable) — La langue de l’aperçu.

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### ValidationErrorLocItems

- string
- integer

## Examples

**Request**

```json
{
  "voice_description": "A sassy squeaky mouse"
}
```

**Response**

```json
{
  "previews": [
    {
      "audio_base_64": "string",
      "generated_voice_id": "string",
      "media_type": "string",
      "duration_secs": 1.1,
      "language": "string"
    }
  ],
  "text": "string"
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/text-to-voice/design"

payload = { "voice_description": "A sassy squeaky mouse" }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/text-to-voice/design';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"voice_description":"A sassy squeaky mouse"}'
};

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

```go
package main

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

func main() {

	url := "https://api.elevenlabs.io/v1/text-to-voice/design"

	payload := strings.NewReader("{\n  \"voice_description\": \"A sassy squeaky mouse\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/text-to-voice/design")

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

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"voice_description\": \"A sassy squeaky mouse\"\n}"

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

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/text-to-voice/design")
  .header("Content-Type", "application/json")
  .body("{\n  \"voice_description\": \"A sassy squeaky mouse\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/text-to-voice/design', [
  'body' => '{
  "voice_description": "A sassy squeaky mouse"
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/text-to-voice/design");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"voice_description\": \"A sassy squeaky mouse\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["voice_description": "A sassy squeaky mouse"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/text-to-voice/design")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```