Toutes les erreurs suivent un format unifié, avec un code machine stable et un message lisible :
{
"error": {
"status": 404,
"code": "breed_not_found",
"message": "Aucune race pour le slug « husky-siberian ».",
"hint": "Vérifiez le slug via GET /api/v1/breeds."
}
}
Codes HTTP
| Statut | Signification |
|---|---|
200 | Succès. |
204 | Pré-vol CORS (OPTIONS). |
401 | Clé API manquante ou invalide. |
404 | Ressource introuvable. |
500 | Erreur interne. |
503 | Base de données indisponible (voir /status). |
Codes applicatifs
code | Description |
|---|---|
missing_api_key | Aucune clé fournie. |
invalid_api_key | Clé inconnue ou révoquée. |
breed_not_found | Slug de race inexistant. |
internal_error | Erreur inattendue côté serveur. |
database_unavailable | La base D1 ne répond pas. |
En-têtes utiles
Chaque réponse expose des en-têtes de suivi :
X-Canidata-Version: v1
X-RateLimit-Limit: 1000
X-RateLimit-Window: 3600
Cache-Control: public, max-age=300, s-maxage=600