Erreurs
Le format problem+json, les erreurs à réessayer, et la liste complète des codes.
/
Le format
Une erreur est un objet application/problem+json (RFC 9457), en français. Le champ code est stable : un code ne change jamais de sens ni de statut, de nouveaux codes peuvent s'ajouter. Testez le code, pas le texte.
{
"type": "tag:pillr.fr,2026:api/erreurs/credits_insuffisants",
"title": "Crédits insuffisants",
"status": 402,
"detail": "Explication en français, propre à l'appel.",
"code": "credits_insuffisants",
"requete": "identifiant de la requête"
}| Champ | Sens |
|---|---|
code | Le code stable, à tester côté client. |
status | Le statut HTTP, le même que celui de la réponse. |
title | Le titre du code. |
detail | L'explication propre à cet appel. |
requete | L'identifiant de la requête, à citer au support (aussi dans l'en-tête Pillr-Requete). |
reessayer_dans_s | Quand réessayer a un sens : le délai en secondes, repris dans l'en-tête Retry-After. |
erreurs | Pour parametres_invalides : le détail, champ par champ. |
code- Le code stable, à tester côté client.
status- Le statut HTTP, le même que celui de la réponse.
title- Le titre du code.
detail- L'explication propre à cet appel.
requete- L'identifiant de la requête, à citer au support (aussi dans l'en-tête Pillr-Requete).
reessayer_dans_s- Quand réessayer a un sens : le délai en secondes, repris dans l'en-tête Retry-After.
erreurs- Pour
parametres_invalides: le détail, champ par champ.
Réessayer
Ces erreurs sont passagères : attendez le délai de Retry-After, puis renvoyez le même appel. Les autres ne changent pas en réessayant.
- `quota_minute` (429) : trop de requêtes par minute
- `charge_globale` (503) : aPI momentanément surchargée
- `service_indisponible` (503) : aPI indisponible
- `donnee_indisponible` (503) : donnée momentanément indisponible
- `creneau_reserve` (503) : opération coupée sur ce créneau
- `delai_depasse` (504) : délai dépassé
Un appel en erreur n'est jamais débité.
Tous les codes
- 404
introuvableChemin inconnu - 405
methode_non_permiseMéthode non permise - 400
parametres_invalidesParamètres invalides - 400
corps_illisibleCorps illisible - 413
corps_trop_lourdCorps trop lourd - 415
type_contenuType de contenu non accepté - 403
origine_refuseeOrigine refusée - 400
curseur_invalideCurseur invalide - 401
cle_absenteClé d'API absente - 401
cle_invalideClé d'API invalide - 403
organisation_suspendueOrganisation suspendue - 403
portee_insuffisantePortée insuffisante - 403
palier_insuffisantPalier insuffisant - 403
hors_perimetreHors du périmètre du contrat - 403
hors_bac_a_sableHors du bac à sable - 403
cle_sans_compteClé sans compte rattaché - 402
credits_insuffisantsCrédits insuffisants - 402
carte_requiseCarte requise - 402
plafond_depensePlafond mensuel de dépense atteint - 429
plafond_clePlafond mensuel de la clé atteint - 429
quota_minuteTrop de requêtes par minute - 429
trop_de_requetesTrop de requêtes depuis cette adresse - 429
taches_en_volTrop de tâches en cours - 404
ressource_absenteRessource absente - 404
commune_introuvableCommune introuvable - 404
annonce_introuvableAnnonce introuvable - 404
annonce_non_analyseeAnnonce pas encore analysée - 404
adresse_introuvableAdresse introuvable - 404
tache_introuvableTâche introuvable - 501
non_disponibleOpération pas encore servie - 503
service_indisponibleAPI indisponible - 503
donnee_indisponibleDonnée momentanément indisponible - 503
charge_globaleAPI momentanément surchargée - 503
creneau_reserveOpération coupée sur ce créneau - 504
delai_depasseDélai dépassé - 500
erreur_interneErreur interne
Guide suivant : Pagination et champs