Longs fichiers et vidéos
Pour un gros fichier, une longue durée ou une vidéo, la transcription est un job asynchrone :
vous envoyez le fichier, l’API répond tout de suite avec un task_id, puis vous suivez l’avancement.
1. POST /v1/uploads → une URL signée pour envoyer le fichier
2. PUT <upload_url> → vous envoyez le fichier directement (il ne passe pas par l’API)
3. POST /v1/transcribe-url → démarre le job (réponse 202 + task_id)
4. GET /v1/tasks/{id} → suivre jusqu’à status = success
Formats acceptés : audio (.wav, .mp3, .m4a, .aac, .ogg, .opus, .flac, .wma, .amr…) et
vidéo (.mp4, .mov, .mkv, .webm, .avi, .3gp…). Pour une vidéo, seule la piste audio est extraite.
1. Préparer l’envoi
curl https://api.lexiafrik.com/v1/uploads \
-H "X-API-Key: $LEXIAFRIK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filename": "conference.mp4", "content_type": "video/mp4"}'
{
"upload_key": "originals/…/conference.mp4",
"upload_url": "https://…",
"method": "PUT",
"headers": { "Content-Type": "video/mp4" },
"expires_in": 3600,
"max_size_mb": 100
}
max_size_mb dépend de votre offre : 100 Mo en offre Gratuit, 4 096 Mo en offres payantes.
2. Envoyer le fichier
Envoyez le fichier à upload_url avec la méthode et exactement les en-têtes indiqués :
curl -X PUT "<upload_url>" -H "Content-Type: video/mp4" --data-binary @conference.mp4
3. Lancer la transcription
curl https://api.lexiafrik.com/v1/transcribe-url \
-H "X-API-Key: $LEXIAFRIK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"upload_key": "originals/…/conference.mp4", "language": "wo-SN", "title": "Conférence"}'
Réponse immédiate, 202 Accepted :
{ "task_id": "9f8e7d6c", "status": "processing", "message": "…" }
Au lieu d’un envoi, vous pouvez fournir url : un lien direct (http ou https) vers un fichier audio ou vidéo.
Les liens de plateformes de streaming (YouTube, TikTok, Facebook…) ne sont pas acceptés (erreur 422).
Options utiles : language, title, include_segments, keep_audio (voir ci-dessous) et
webhook_url.
4. Suivre l’avancement
curl https://api.lexiafrik.com/v1/tasks/9f8e7d6c -H "X-API-Key: $LEXIAFRIK_API_KEY"
status | Sens |
|---|---|
processing | En cours. Les segments déjà transcrits sont renvoyés au fur et à mesure (utile pour un affichage en direct). La réponse porte Retry-After: 3 : attendez 3 secondes avant de réinterroger. |
success | Terminé : full_text, segments, total_duration_s, audio_url (lecture de l’audio complet). |
error | Échec : error explique pourquoi. |
Exemple de boucle en Python :
import os, time, httpx
headers = {"X-API-Key": os.environ["LEXIAFRIK_API_KEY"]}
while True:
task = httpx.get(f"https://api.lexiafrik.com/v1/tasks/{task_id}", headers=headers).json()
if task["status"] != "processing":
break
time.sleep(3)
print(task["full_text"] if task["status"] == "success" else task["error"])
Webhook (facultatif)
Avec webhook_url, l’API envoie un POST JSON à cette adresse à la fin du job réussi :
{ "task_id": "9f8e7d6c", "status": "success", "full_text": "…", "total_duration_s": 3612.4, "n_segments": 211 }
L’adresse doit être publique (http ou https). Un webhook qui échoue n’est pas rejoué : gardez le suivi
par GET /v1/tasks/{task_id} comme filet de sécurité.
Conservation des fichiers
- Fichier envoyé : conservé 15 jours et téléchargeable (
GET /v1/tasks/{task_id}/original), puis supprimé. Vous recevez un email 5 jours avant. keep_audio: false: le fichier est supprimé dès la fin du job, seul le texte est conservé.- Le texte et les segments restent dans votre historique tant que vous ne les supprimez pas.
Erreurs fréquentes
| Code | Cause |
|---|---|
403 | upload_key qui n’est pas à vous. |
415 | Extension non prise en charge à l’étape 1. |
422 | Lien non accepté (plateforme de streaming), webhook_url invalide, fichier illisible. |
501 | Envoi direct indisponible sur cet environnement. |
503 | File de jobs momentanément indisponible : réessayez. |