Synthèse vocale synchrone v3
Générez de l’audio en mode synchrone ou créez des tâches asynchrones récupérables avec HTTP v3.
HTTP TTS v3 est le contrat neutre recommandé. La plateforme gère le fournisseur ; le client utilise des voiceId et modelId publics.
Base URL
https://kittaai.com/api/open/v3Choisir le mode synchrone ou asynchrone
Utilisez le mode synchrone pour les textes courts et les Jobs pour les textes longs, les lots ou les résultats récupérables.
Découvrir les modèles et les voix
curl "https://kittaai.com/api/open/v3/speech/tts/capabilities"
curl "https://kittaai.com/api/open/v3/voices?page=1&pageSize=20&includePersonal=false" \
-H "Authorization: Bearer $KITTA_API_KEY"Utilisez un modèle disponible et une voix dont modelIds contient ce modèle. Lisez limites, formats et contrôles via capabilities.
Générer en mode synchrone
POST /api/open/v3/speech/ttscurl "https://kittaai.com/api/open/v3/speech/tts" \
-H "Authorization: Bearer $KITTA_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Request-Id: tts-example-001" \
-d '{"text":"Hello","voiceId":"00a1b221-6137-4b73-ad62-b0cbce134167","modelId":"fishaudio-s21pro-flash","format":"mp3"}' --output speech.mp3Champs de requête
| field | type | required | constraints |
|---|---|---|---|
text | string | yes | 1–10,000 |
voiceId | string | yes | must support modelId |
modelId | string | no | public model ID; omitted uses voice provider default |
format | string | no | mp3, wav, ogg; default mp3 |
speed | number | no | 0.5–2; default 1 |
volume | number | no | -20–20; default 0 |
pitch | number | no | -12–12 |
stability | number | no | 0.5–1.5 |
similarity | number | no | 0.5–1.5 |
language | string | no | 1–64 characters in v3 |
emotion | string | no | 1–64 characters in v3 |
instruction | string | no | up to 1,600 characters |
textNormalization | boolean | no | structured-text normalization |
Unknown fields are rejected. Unsupported generic controls are listed in X-OpenAPI-Ignored-Parameters.
Réponse réussie
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Request-Id: tts-example-001
X-OpenAPI-Quota-Remaining: 99994
X-OpenAPI-Credits-Used: 6
<binary audio data>Une réussite renvoie des octets audio. Vérifiez le statut HTTP puis Content-Type ; les erreurs sont en JSON.
Tâches asynchrones
POST /speech/tts/jobs
GET /speech/tts/jobs/{jobId}
GET /speech/tts/jobs/{jobId}/audio?download=1
Authorization: Bearer KITTA_API_KEYConservez task.taskId. pending et processing ne sont pas terminaux ; success, partial_fail et fail le sont.
Erreurs et nouvelles tentatives
Errors use {"code":"ERR_REQUEST_ID_CONFLICT","message":"...","requestId":"..."}. 400 requête invalide ; 401 clé invalide ; 402 quota insuffisant ; 404 ressource absente ; 409 conflit d’idempotence ; 413 trop volumineux ; 429 limite ; 500 échec.
Idempotence et facturation
Réutilisez une X-Request-Id stable uniquement pour la même requête. L’audio synchrone terminé n’est pas rejoué ; les Jobs restent consultables.
Contrat lisible par machine et migration
GET /api/open/v3/openapi.json
Les clients v1/v2 restent compatibles. Les nouvelles intégrations utilisent v3. Migration guide.