Développeurs
Intégrez la voix arabe à votre produit
Le moteur qui fait tourner l'application Vocla, via une API REST : synthèse vocale dans tous les dialectes arabes, transformation de voix, musique et suivi des générations en temps réel.
Les clés API sont incluses dans les offres Business et Entreprise.
Démarrage rapide
Créez votre première génération en arabe en quatre requêtes : choisissez un modèle et une voix, créez la génération, suivez sa progression et téléchargez le résultat.
export VOCLA_API_KEY="vk_..." # Enterprise workspace → Settings → API keys
export VOCLA_API="https://api.voclalabs.com"
# 1. Pick a model and a voice
curl -s "$VOCLA_API/v1/catalog"
curl -s "$VOCLA_API/v1/voices?lang=ar&dialect=ar-SA&limit=5" \
-H "Authorization: Bearer $VOCLA_API_KEY"
# 2. Create a text-to-speech generation (202 Accepted)
curl -s -X POST "$VOCLA_API/v1/generations/tts" \
-H "Authorization: Bearer $VOCLA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"productModelId": "MODEL_ID",
"voiceId": "VOICE_ID",
"text": "مرحباً بك في فوكلا، صوتك يصل أبعد.",
"locale": "ar-SA"
}'
# 3. Follow progress as server-sent events
curl -N "$VOCLA_API/v1/generations/GENERATION_ID/events" \
-H "Authorization: Bearer $VOCLA_API_KEY"
# 4. Fetch fresh download links (signed, short-lived)
curl -s "$VOCLA_API/v1/generations/GENERATION_ID" \
-H "Authorization: Bearer $VOCLA_API_KEY"Fonctionnement de l'API
Authentification
Les administrateurs d'un espace de travail sous offre Business ou Entreprise créent les clés API dans les paramètres. Envoyez-les sous la forme Authorization: Bearer vk_… . Chaque clé dispose de portées (generations:read, generations:write, voices:read, uploads:write), n'est affichée qu'une seule fois et peut être révoquée à tout moment.
Requêtes idempotentes
Toute requête qui consomme des crédits exige un en-tête Idempotency-Key. Une nouvelle tentative avec la même clé et le même corps renvoie la génération d'origine au lieu de facturer deux fois ; réutiliser une clé avec un corps différent renvoie 409.
Cycle de vie d'une génération
La création d'une génération renvoie 202 et réserve les crédits. Elle passe de queued à running, puis à succeeded, failed ou cancelled. En cas de succès, les crédits sont débités ; en cas d'échec ou d'annulation, ils sont libérés.
Server-sent events
Ouvrez le flux GET /v1/generations/{id}/events pour recevoir les événements queued, progress, succeeded, failed et cancelled, chacun accompagné de la génération. Le flux se ferme après un état final ; une reconnexion renvoie l'état actuel.
Erreurs
Les erreurs utilisent application/problem+json avec un code stable (par exemple INSUFFICIENT_CREDITS ou VALIDATION_ERROR), un détail localisé (envoyez Accept-Language: ar ou en) et un traceId à mentionner si vous nous contactez.
Téléchargements
Les générations réussies incluent des liens signés MP3 et OGG (WAV sur les offres qui l'incluent). Les liens expirent au bout d'environ 15 minutes ; récupérez à nouveau la génération pour en obtenir de nouveaux.
Principaux endpoints
La liste complète, avec les schémas de requête et de réponse, se trouve dans la référence de l'API.
| Méthode | Endpoint | Rôle | Portée |
|---|---|---|---|
| GET | /v1/catalog | Modèles, catégories de voix et limites d'upload | Public |
| GET | /v1/voices | Recherchez dans la bibliothèque par langue, dialecte, genre, âge et catégorie | voices:read |
| POST | /v1/generations/tts | Synthèse vocale dans les dialectes arabes | generations:write |
| POST | /v1/uploads | Démarrez un upload multipart pour l'audio à transformer | uploads:write |
| POST | /v1/generations/voice-change | Faites redire un enregistrement par une autre voix | generations:write |
| POST | /v1/generations/music | Générez de la musique à partir d'un prompt | generations:write |
| GET | /v1/generations/{id} | Statut, crédits et liens de téléchargement d'une génération | generations:read |
| GET | /v1/generations/{id}/events | Progression en direct via server-sent events | generations:read |
| POST | /v1/generations/{id}/cancel | Annulez une génération en file d'attente ou en cours | generations:write |
Autres types de génération
# Voice changer: upload the source audio first (multipart upload, 8 MiB parts)
POST /v1/uploads {"filename","contentType","size"}
POST /v1/uploads/{id}/complete {"parts":[{"partNumber","etag"}]}
POST /v1/generations/voice-change {"productModelId","uploadId","voiceId"}
# Music from a prompt (lyrics only on vocal-capable routes)
POST /v1/generations/music {"productModelId","prompt","duration"}
# Estimate the credit cost without reserving credits
POST /v1/generations/quote {"type":"tts", ...same body as the generation}À quoi ressemble le flux d'événements
id: 2026-09-19T12:00:01.000Z
event: progress
data: {"id":"0199…","type":"tts","status":"running","progress":50,"creditsReserved":120,"creditsCharged":0}
event: succeeded
data: {"id":"0199…","type":"tts","status":"succeeded","progress":100,"creditsCharged":120,"downloads":{"mp3":"https://…","ogg":"https://…"}}Limites de débit
Les limites s'appliquent sur une minute glissante, par utilisateur ou clé authentifiés et par IP : 300 requêtes pour l'API et 30 pour les endpoints d'authentification. Chaque réponse contient RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset (en secondes). Au-delà d'une limite, vous recevez 429 RATE_LIMITED ; attendez la réinitialisation avant de réessayer. Des limites plus élevées peuvent être discutées pour les charges Entreprise.
Webhooks
Pas encore disponibleLes webhooks sortants pour les événements de génération ne sont pas encore disponibles. Utilisez les server-sent events ou interrogez GET /v1/generations/{id}. Si les webhooks comptent pour votre intégration, dites-le-nous : cela nous aide à prioriser.
Référence complète de l'API
Chaque endpoint, paramètre et schéma de réponse, généré à partir du même document OpenAPI que celui qui sert à construire l'API.
https://api.voclalabs.com/docsPrêt à intégrer ?
Présentez-nous votre cas d'usage et le volume prévu : nous configurerons un espace de travail Entreprise avec accès à l'API.