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

# Voice Design

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

Skapa en röst från en textprompt.

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) — Utdataformatet för det genererade ljudet.
  - 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) — Beskrivning som ska användas för den skapade rösten.
- `text` (string, optional, nullable) — Text att generera, textlängden måste vara mellan 100 och 1 000.
- `auto_generate_text` (boolean, optional, default: false) — Om en text som passar röstbeskrivningen ska genereras automatiskt.
- `loudness` (double, optional, default: 0.5) — Styr volymnivån för den genererade rösten. -1 är tystast, 1 är högst och 0 motsvarar ungefär -24 LUFS.
- `quality` (double, optional, default: 0.9) — Högre kvalitet ger bättre röstresultat men mindre variation.
- `seed` (integer, optional, nullable) — Slumptal som styr röstgenereringen. Samma seed med samma indata ger samma röst.
- `guidance_scale` (double, optional, default: 5) — Styr hur nära AI:n följer prompten. Lägre värden ger AI:n större kreativ frihet, medan högre värden får den att följa prompten mer strikt. Höga värden kan få rösten att låta konstgjord eller robotlik. Vi rekommenderar längre och mer detaljerade prompter vid lägre Guidance Scale.
- `should_enhance` (boolean, optional, default: false) — Om röstbeskrivningen ska förbättras med AI för att lägga till fler detaljer och höja kvaliteten på röstgenereringen. När funktionen är aktiverad utökar systemet automatiskt enkla promptar till mer detaljerade röstbeskrivningar. Standardvärdet är False

## Response

### 200

Lyckat svar

- `previews` (list of VoicePreviewResponseModel, required) — Förhandsvisningarna av de genererade rösterna.
- `text` (string, required) — Texten som används för att förhandsgranska rösterna.

## Errors

### 409 Conflict Error

En generering för den här förhandsvisningen pågår redan. Försök igen med begäran.

- `any`

### 422 Unprocessable Entity Error

Valideringsfel

- `detail` (list of ValidationError, optional)

## Types

### VoicePreviewResponseModel

- `audio_base_64` (string, required) — Det base64-kodade ljudet i förhandsvisningen.
- `generated_voice_id` (string, required) — ID:t för den genererade rösten. Använd det för att skapa en röst från förhandsvisningen.
- `media_type` (string, required) — Förhandsvisningens medietyp.
- `duration_secs` (double, required) — Förhandsvisningens längd i sekunder.
- `language` (string, required, nullable) — Språket i förhandsvisningen.

### ValidationError

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

### ValidationErrorLocItems

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