AIMERICAAPI · Développeurs

Erreurs

Une seule enveloppe, un mot-clé stable, une phrase lisible, un identifiant de requête.

HTTP/1.1 422 Unprocessable Entity
X-Request-Id: 2b7a…

{
  "error": {
    "type": "validation_error",
    "message": "The request body is not valid",
    "request_id": "2b7a…",
    "fields": [{"field": "to.number", "message": "must be an E.164 phone number, like +15145550100"}]
  }
}

Testez error.type, jamais le texte de message : la phrase peut changer, le mot-clé non. request_id est aussi l'en-tête X-Request-Id, présent sur toutes les réponses, réussies ou non.

typeHTTPSens
invalid_request400Quelque chose cloche dans la requête : paramètre invalide, jeton de synchronisation expiré, curseur invalide
unauthorized401Le jeton est absent, inconnu, expiré ou révoqué
forbidden403Le jeton est valide mais ne peut pas faire ceci (jeton client_credentials sur une route « moi », app suspendue)
insufficient_scope403Le jeton n'a pas la permission qu'exige cette route ; WWW-Authenticate la nomme
not_found404Objet inexistant, ou invisible pour ce jeton
conflict409Le changement entre en conflit avec l'état actuel (numéro déjà attribué, doublon)
validation_error422Le corps n'est pas valide ; fields détaille chaque problème
rate_limited429Au-delà du palier ; attendez Retry-After secondes
server_error500De notre faute. Citez request_id en nous écrivant

Seule exception : POST /oauth/token répond dans la forme de la RFC 6749 ({"error": "invalid_grant", "error_description": "…"}, ou invalid_client, invalid_scope, unsupported_grant_type), parce que les bibliothèques OAuth s'y attendent.