Aller au contenu

Erreurs

Toute erreur renvoie un statut HTTP 4xx ou 5xx et le même corps JSON : un code stable (à tester dans votre code), un message en français (à afficher ou journaliser) et parfois des details.

Corps d’une erreur
{
  "error": {
    "code": "string",
    "message": "string",
    "details": "(facultatif)"
  }
}

Exemple : adresse postale incomplète

Réponse 422
{
  "error": {
    "code": "address_invalid",
    "message": "Pour un envoi postal, les adresses doivent comporter un nom, une rue (ou une boîte postale : BP, TSA, CS), un code postal à 5 chiffres et une ville.",
    "details": {
      "missing": [
        {
          "key": "sender",
          "label": "Adresse de l’expéditeur (nom, rue, code postal et ville)"
        },
        {
          "key": "recipient",
          "label": "Adresse du destinataire (nom, rue ou boîte postale, code postal et ville)"
        }
      ]
    }
  }
}

Codes

HTTPCodeSignification
400validation_errorCorps ou paramètres invalides ; details.issues liste les champs fautifs. Corrigez la requête.
401invalid_api_keyClé absente, mal formée ou inconnue.
401revoked_api_keyClé révoquée : utilisez une clé active.
402insufficient_balanceCrédit insuffisant pour cet appel payant : rien n’a été exécuté ni débité. details donne balanceCents et priceCents. Rechargez depuis l’espace développeur.
403live_not_enabledClé live alors que la production n’est pas ouverte.
403account_suspendedCompte suspendu : écrivez-nous.
403test_onlyRoute réservée au bac à sable (clé test).
404not_foundLettre, fournisseur, envoi ou établissement introuvable.
409conflictOpération impossible dans l’état actuel (envoi déjà à sa dernière étape…).
422address_invalidAdresse postale incomplète ; details.missing liste les adresses à corriger.
422inputs_incompleteOutil IA : champs obligatoires manquants (details.missing).
422inputs_too_longOutil IA : texte trop long (details.max).
422inputs_invalidOutil IA : un lien seul ou un texte trop court a été envoyé à la place du texte à traiter (details.invalid).
429rate_limitedTrop d’appels : attendez Retry-After secondes.
429test_quota_exceededQuota quotidien du bac à sable atteint.
502upstream_errorUn prestataire (La Poste, annuaire, IA) n’a pas répondu. Pour un envoi, rien n’est facturé ; réessayez.
503unavailableService momentanément indisponible ; réessayez.
500internal_errorErreur inattendue, nos équipes sont prévenues ; réessayez.

Réessayer sans risque

  • 4xx : ne réessayez pas à l’identique, corrigez d’abord (sauf 429 : attendez Retry-After).
  • 502, 503, 500 : réessayez avec un délai croissant (1 s, 5 s, 30 s…).
  • Une erreur n’est jamais facturée. Pour un envoi en 502, le détail porte mailingId : l’envoi est marqué en erreur, créez-en un nouveau.

Étape suivante : les limites de débit