Erreurs
Chaque erreur renvoie un corps JSON accompagné d'un code de statut HTTP.
Format des erreurs
Chaque réponse d'erreur utilise le même corps JSON, quel que soit le point de terminaison :
json
{
"statusCode": 400,
"error": "ValidationError",
"message": "channel is required",
"code": "optional_code",
"field": "channel"
}statusCode— Le code de statut HTTP, répété dans le corps.error— Le nom de la classe d'erreur — utilisez-le pour distinguer les types d'erreur dans votre code.message— Une description lisible de ce qui s'est mal passé.code— Un code stable et exploitable par une machine, présent seulement quand l'erreur en définit un (par ex.plan_limit).field— Le champ de la requête en cause, présent seulement pour les erreurs de validation au niveau d'un champ.
Les erreurs serveur inattendues (500) ne divulguent jamais de détails internes — le message est toujours masqué :
json
{
"statusCode": 500,
"error": "InternalServerError",
"message": "Something went wrong"
}Codes de statut
Le champ error correspond à l'une des classes suivantes :
| Statut | Erreur | Signification |
|---|---|---|
400 | ValidationError | La requête a échoué à la validation — vérifiez message et field. |
401 | UnauthorizedError | Identifiants manquants ou invalides. |
402 | PaymentRequiredError | Une limite du forfait a été atteinte ; code vaut plan_limit. Mettez le forfait à niveau pour continuer. |
403 | ForbiddenError | Authentifié, mais non autorisé à effectuer cette action. |
404 | NotFoundError | La ressource demandée n'existe pas. |
409 | ConflictError | La requête entre en conflit avec l'état actuel de la ressource. |
429 | Error | Trop de requêtes — voir Limites de débit ci-dessous. |
500 | InternalServerError | Une erreur serveur inattendue. Le message est masqué ; consultez les journaux du serveur pour plus de détails. |
Limites de débit
L'API autorise 100 requêtes par minute au global, avec des limites plus strictes sur certains points de terminaison. Quand une requête est limitée, l'API renvoie 429.
Une réponse limitée en débit utilise la classe générique Error plutôt qu'un type d'erreur spécifique — son message indique combien de temps attendre avant de réessayer :
json
{
"statusCode": 429,
"error": "Error",
"message": "Rate limit exceeded, retry in 1 minute"
}Patientez avant de réessayer
Ne réessayez pas un 429 immédiatement. Patientez, puis réessayez avec un backoff exponentiel et du jitter.