Erreurs
Chaque erreur provenant des endpoints Video API utilise la même forme JSON :
{
"error": {
"code": "...",
"message": "..."
}
}Le statut HTTP indique la classe du problème ; error.code est une chaîne stable sur laquelle vous pouvez brancher votre code. Faites toujours la correspondance sur error.code plutôt que de parser error.message.
Codes d’erreur
references_conflict et too_many_references sont des erreurs de validation du corps de requête — voir Créer une vidéo pour les limites exactes. cancel_not_supported et cancel_failed sont décrits dans Annuler une vidéo. not_found est renvoyé à la fois pour une tâche inconnue et une tâche détenue par une autre clé API ; les deux cas sont volontairement indiscernables.
Erreurs de prétraitement real_person
Lorsque le prétraitement d’image avec real_person: true échoue à cause de l’image fournie, l’API renvoie HTTP 400 avec error.code: "invalid_request". La fin de error.message contient l’un des motifs stables suivants et identifie la référence en erreur, par exemple input_references[0] :
{
"error": {
"code": "invalid_request",
"message": "real_person image processing failed — input_references[0]: ... (not_image)"
}
}Dans la logique applicative, continuez à brancher sur error.code. Utilisez le motif et l’emplacement de la référence pour corriger l’entrée ou diagnostiquer le problème.
402 Crédits insuffisants
insufficient_credits est renvoyé uniquement lorsque vous créez une tâche (POST /v1/videos). Lorsque la préautorisation est activée, ofox estime le coût à partir de la résolution et de la durée demandées avant d’accepter la tâche. Si cette estimation dépasse votre solde, la requête est rejetée immédiatement — aucun enregistrement de tâche n’est créé et rien n’est facturé.
{ "error": { "code": "insufficient_credits", "message": "..." } }insufficient_credits est le seul code 402 renvoyé par la Video API. Gérez ce code unique, rechargez votre solde, puis réessayez.
429 Limite de débit
rate_limited couvre à la fois la limite de polling par clé sur GET /v1/videos/{id} et les limites de débit en amont. Lorsque vous atteignez la limite de polling, la réponse porte un Header Retry-After :
HTTP/1.1 429 Too Many Requests
Retry-After: 1
Content-Type: application/json
{ "error": { "code": "rate_limited", "message": "..." } }Respectez le Header Retry-After et attendez avant de réessayer. Si vous interrogez fréquemment, passez aux notifications webhook afin qu’ofox vous pousse l’état terminal à la place — cela évite entièrement la limite de polling. La création de tâche (POST) et l’annulation (DELETE) ne sont pas affectées par la limite de polling.