Erreurs & Codes HTTP
L'API utilise les codes HTTP standard. Les erreurs contiennent toujours un corps JSON.
Format d'une erreur
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Clé API invalide ou révoquée"
}
Le champ message peut aussi être un tableau de chaînes de validation :
{
"statusCode": 400,
"error": "Bad Request",
"message": [
"clientId must be a UUID",
"dueDate must be a valid ISO date string"
]
}
Codes de statut
| Code | Nom | Description |
|---|---|---|
| 400 | Bad Request | Le corps de la requête est invalide ou des champs requis sont manquants. |
| 401 | Unauthorized | Clé API manquante, invalide ou révoquée. |
| 403 | Forbidden | Vous n'avez pas la permission d'effectuer cette action. |
| 404 | Not Found | La ressource demandée n'existe pas. |
| 409 | Conflict | Conflit d'état — ex. : tenter d'émettre une facture déjà émise. |
| 422 | Unprocessable Entity | Données sémantiquement incorrectes (SIRET invalide, date passée…). |
| 429 | Too Many Requests | Limite de débit dépassée (100 req/min). Attendez avant de réessayer. |
| 500 | Internal Server Error | Erreur serveur inattendue. Contactez le support si elle persiste. |
Gestion des erreurs (exemple)
async function callApi(url, options) {
const res = await fetch(url, options)
if (!res.ok) {
const err = await res.json()
const msg = Array.isArray(err.message)
? err.message.join(', ')
: err.message
throw new Error(`API ${res.status}: ${msg}`)
}
return res.json()
}