/api/v1/generate/voiceGerar voz
Síntese de voz (Text-to-Speech): converte um texto em áudio MP3 usando a voz
escolhida. Responde 202 Accepted com um taskId; acompanhe o resultado por
polling em GET /api/v1/tasks/:id ou via webhook.
Escopo necessário: generate:audio.
Body
| Campo | Tipo | Obrigatório | Valores / restrições | Padrão |
|---|---|---|---|---|
text | string | sim | Texto a sintetizar (máx. 2000 chars) | — |
voice | string | sim | Slug da voz (ver lista); case-insensitive | — |
stability | number | não | 0.0–1.0 (estabilidade da voz) | 0.5 |
similarityBoost | number | não | 0.0–1.0 (fidelidade ao timbre) | 0.75 |
callbackUrl | string | não | HTTPS, host não-privado | — |
Vozes disponíveis
aria, roger, sarah, laura, charlie, george, callum, river,
liam, charlotte, alice, matilda, will, jessica, eric, chris,
brian, daniel, lily, bill
Os slugs são case-insensitive ("Roger", "ROGER" e "roger" são equivalentes).
Valores fora da lista retornam 400 VALIDATION_ERROR.
Exemplo de request
curl -X POST https://avatrix.io/api/v1/generate/voice \
-H "Authorization: Bearer av_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9f1c-tts-001" \
-d '{
"text": "Oi! Esse áudio foi gerado pela API da Avatrix.",
"voice": "sarah",
"stability": 0.5,
"similarityBoost": 0.75
}'Resposta — 202
{
"success": true,
"data": { "taskId": "...", "status": "queued" }
}O status: "queued" é só o rótulo de criação. No polling
(GET /api/v1/tasks/:id) a task evolui por pending → processing →
completed (com resultUrl do MP3) ou failed. Ver
Ciclo de vida da task.
Exemplo de erro
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Voz 'xyz' não reconhecida. Valores aceitos: aria, roger, sarah, ..."
}
}Idempotência
Envie o header Idempotency-Key (opcional, ≤128 chars, TTL 24h). Repetir a mesma chave
retorna a resposta original sem novo débito. A concorrência é limitada a 20
tasks simultâneas por usuário. Ver Idempotência.
Custo
Cobrança por caractere do texto: o custo é proporcional ao tamanho de text.
Erros relevantes
| Código | HTTP | Quando |
|---|---|---|
VALIDATION_ERROR | 400 | campos ausentes, text > 2000 chars, voice inválido, stability/similarityBoost fora de 0–1 |
INSUFFICIENT_CREDITS | 402 | saldo insuficiente |
FORBIDDEN | 403 | token sem generate:audio |
RATE_LIMITED / MAX_CONCURRENT_TASKS | 429 | rate limit ou 20 tasks simultâneas |
INTERNAL_ERROR | 500 | erro interno ao processar a cobrança |
GENERATION_FAILED | 502 | falha do provider |
PROVIDER_UNAVAILABLE | 503 | provider indisponível |