Passer au contenu

Gestion des erreurs

Le format d'erreur, chaque code d'état retourne l'API et comment utiliser les ID de requête.

État public de l'API

L'API v1 utilise les clés porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte- porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte-porte--porte-------porte------pere-pere.

Format d'erreur

Chaque erreur a la même forme JSON:

JSON
{
    "error": {
        "code": "not_found",
        "message": "Resource not found."
    },
    "request_id": "9fd120d8-f54e-4413-bc52-a860800ff222"
}

Erreurs de validation ajouter un objet fields avec des messages par champ :

JSON
{
    "error": {
        "code": "validation_failed",
        "message": "Validation failed.",
        "fields": {
            "currency": ["The selected currency is invalid."],
            "due_date": ["The due date field is required."]
        }
    },
    "request_id": "89a24d53-684a-4e1d-b0ee-2f6a5a7cd2c2"
}

Les réponses aux erreurs ne comprennent jamais les traces de pile, les secrets ou les données d'autres entreprises.

Codes d'état

État error.code Lorsque
401 unauthenticated Clé API manquante, invalide ou expirée.
403 forbidden La clé n'a pas la portée ou le propriétaire, l'adhésion ou l'entreprise de la clé n'est pas admissible.
404 not_found La ressource n'existe pas or appartient à une autre entreprise.
409 conflict Clé d'Idempotency réutilisée avec un corps différent, stale expected_version, duplicata external_reference, ou un changement de brouillon seulement sur une créance non-projet.
422 validation_failed Un champ est manquant ou invalide, le Idempotency-Key est manquant, ou un changement de statut n'est pas autorisé.
429 rate_limited Trop de requêtes — voir Limites de taux.
500 server_error Quelque chose s'est mal passé de notre côté. Réessayez plus tard avec le même Idempotency-Key.

Demander des identifiants

Chaque réponse porte un en-tête X-Request-Id. Les réponses d'erreur et les réponses de lecture l'incluent également comme request_id dans le corps. Inclure lorsque vous contactez le support afin que la demande puisse être retracée.

Réessayer en toute sécurité

  • Réessayer les erreurs 429, 500 et réseau avec backoff.
  • Pour écrire, reessayez avec le corps same Idempotency-Key et le corps same; vous obtiendrez le résultat original au lieu d'un duplicata.
  • Ne pas réessayer la validation 4xx ou les erreurs de conflit inchangés — corrigez la requête en premier.