> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vmeg.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Text to speech

> Synthesize speech from text

Convert text to speech using a system or cloned **voiceId**. Copy IDs from [Voices](/guides/assets/voices) list or clone responses.

## Sync vs async

| Mode  | Endpoint                                 | Results                                                                           |
| ----- | ---------------------------------------- | --------------------------------------------------------------------------------- |
| Sync  | `POST /openapi/v1/task/tts/create`       | `data.results[].uri` (CDN audio) in HTTP response                                 |
| Async | `POST /openapi/v1/task/tts/create-async` | [Webhook](/guides/webhook-request) when `event` is `openapi-tts` (`data.results`) |

Every `create` and `create-async` call requires [`X-Idempotency-Key`](/guides/idempotency). Async also needs a configured [Webhook](/guides/webhooks).

## Workflow (sync)

See [Quickstart](/guides/quickstart) for a complete curl example.

Key request fields:

* `language.target` — locale from [Supported languages](/guides/supported-languages)
* `data[]` — up to 50 lines; each needs `text` and `voiceId` (or `timbreRefAudio`)
* `outputFormat` — `wav`, `mp3`, or `m4a`

Do **not** send `provider`. Pass the **`voiceId` from the voice list or clone result**; the service picks the matching engine automatically. All lines in one request must use voices from the **same tier or clone engine** (see [Supported clone methods](/guides/supported-clone-methods#text-to-speech-voiceid-and-provider) and [Error codes](/guides/errors)).

## Workflow (async)

1. Configure [Webhooks](/guides/webhooks)
2. POST to `create-async` with idempotency key
3. Handle audio URLs in webhook `data.results`

## Voices

* **System voices**: `POST /openapi/v1/assets/voice/basic/list` → copy `voiceId`
* **Cloned voices**: [Voice clone](/guides/products/voice-clone) → copy returned `voiceId`

Full request schema: **API reference → TTS** operations.

## Related

* [Products overview](/guides/products/overview)
* [Usage limits](/guides/usage-limits) — batch size limits
