> 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.

# Conception de voix

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

Crée une voix à partir d'un prompt textuel.

Reference: https://elevenlabs.io/docs/api-reference/legacy/voices/create-previews

## 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) — Le format de sortie de l’audio généré.
  - 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 VoicePreviewsRequestModel.

- `voice_description` (string, required) — Description à utiliser pour la voix créée.
- `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.
- `quality` (double, optional, default: 0.9) — Une qualité supérieure améliore le rendu vocal, mais réduit la variété.
- `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.
- `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.

## 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/create-previews"

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/create-previews';
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/create-previews"

	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/create-previews")

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/create-previews")
  .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/create-previews', [
  '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/create-previews");
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/create-previews")! 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()
```