POST/api/v1/generate/voice

Gerar voz

Bearer tokenescopo generate:audio

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

CampoTipoObrigatórioValores / restriçõesPadrão
textstringsimTexto a sintetizar (máx. 2000 chars)
voicestringsimSlug da voz (ver lista); case-insensitive
stabilitynumbernão0.0–1.0 (estabilidade da voz)0.5
similarityBoostnumbernão0.0–1.0 (fidelidade ao timbre)0.75
callbackUrlstringnãoHTTPS, 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
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

JSON
{
  "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 pendingprocessingcompleted (com resultUrl do MP3) ou failed. Ver Ciclo de vida da task.

Exemplo de erro

JSON
{
  "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ódigoHTTPQuando
VALIDATION_ERROR400campos ausentes, text > 2000 chars, voice inválido, stability/similarityBoost fora de 0–1
INSUFFICIENT_CREDITS402saldo insuficiente
FORBIDDEN403token sem generate:audio
RATE_LIMITED / MAX_CONCURRENT_TASKS429rate limit ou 20 tasks simultâneas
INTERNAL_ERROR500erro interno ao processar a cobrança
GENERATION_FAILED502falha do provider
PROVIDER_UNAVAILABLE503provider indisponível