naskel
APIMis à jour le

Codes d'erreur

Le format des erreurs de l'API et la liste des codes possibles, du 400 au 500.

Quand un appel échoue, l'API renvoie un code HTTP adapté et un corps JSON décrivant le problème.

Le format

Une erreur contient toujours un objet error avec un code lisible par votre programme et un message lisible par un humain :

{
  "error": {
    "code": "insufficient_scope",
    "message": "Scope manquant : write:quotes."
  }
}

Sur une erreur de validation du corps de la requête, un champ details liste les problèmes champ par champ :

{
  "error": {
    "code": "invalid_body",
    "message": "Le corps de la requête est invalide.",
    "details": [
      { "path": "clientEmail", "message": "Adresse email invalide." }
    ]
  }
}

La liste des codes

HTTPcodeSens
400invalid_requestParamètre invalide (par exemple, un statut inconnu)
400invalid_bodyJSON malformé ou validation échouée (voir details)
400invalid_idempotency_keyEn-tête Idempotency-Key mal formé (longueur hors 8–255)
401missing_authorizationEn-tête Authorization absent
401invalid_key_formatFormat de clé invalide
401invalid_keyClé inconnue ou invalide
401revoked_keyClé révoquée
401expired_keyClé expirée
403insufficient_scopeScope requis absent
404not_foundRessource introuvable (aussi company_not_found, contact_not_found, opportunity_not_found)
409invoice_not_draft, quote_not_draft, contact_email_duplicateAction impossible dans l'état actuel (voir ci-dessous)
422stock_adjust_failedRègle métier refusée (mouvement ou ajustement de stock)
429rate_limitedLimite de débit dépassée
500internal_errorErreur interne

Le 409 : action impossible dans l'état actuel

Un 409 signale que l'action demandée n'a pas de sens dans l'état où se trouve la ressource, l'appel est bien formé, mais l'état l'interdit. Le code précise le cas :

  • invoice_not_draft : modifier ou supprimer une facture qui n'est plus en brouillon.
  • quote_not_draft : modifier, supprimer ou « marquer envoyé » un devis qui n'est plus en brouillon (POST /quotes/{id}/send).
  • contact_email_duplicate : créer un contact avec un email déjà présent.

Inutile de retenter à l'identique : il faut d'abord changer l'état de la ressource (repasser par un brouillon, utiliser un autre email…).

Le 422 : validation métier échouée

Un 422 signale qu'une règle métier a refusé l'opération. À la différence du 400 invalid_body (le corps est mal formé), ici le corps est valide mais le moteur refuse l'effet. Le code est stock_adjust_failed quand un mouvement ou un ajustement est refusé par la politique de stock négatif.

Le 207 : traitement partiel

Certaines écritures par lot, notamment POST /stock-movements, peuvent réussir partiellement. Le serveur renvoie alors un 207 : une partie des éléments est appliquée (applied), l'autre est en erreur (errors). Un 200 signifie que tout est passé ; un 422 stock_adjust_failed, que rien n'est passé. Dans tous les cas, parcourez errors.

Voir aussi