🚨
Observabilité & erreurs·Débutant·8 min

Comprendre et traiter tous les codes d'erreur de l'API

Apprenez à lire les codes d'erreur structurés de l'API Coffrify, à consulter leur catalogue de diagnostic et à mettre en place une gestion robuste des cas d'échec dans vos intégrations.

Télécharger en PDF

Chaque réponse d'erreur de l'API Coffrify suit un format Stripe-style prévisible : un objet error imbriqué contenant un code machine-lisible, un message humain, un champ optionnel param (champ invalide) et un doc_url. Toutes les réponses incluent un header X-Request-Id pour corréler vos logs avec les traces Coffrify. En cas de doute, l'endpoint GET /v1/diagnostics/error/{code} fournit pour chaque code son explication complète, sa catégorie (tool_error, plan_or_quota, server_error) et ses étapes de résolution concrètes. En parallèle, GET /v1/status/services vous permet de vérifier l'état opérationnel de chaque composant Coffrify avant d'ouvrir un ticket support.

GET/v1/diagnostics/error/{code}Retourne l'explication, la catégorie et les next_steps pour un code d'erreur donné. Aucun scope requis.GET/v1/status/servicesRetourne l'état de chaque service Coffrify (operational, degraded, partial_outage, major_outage, maintenance) et un overall_status agrégé.

Authentification

Les deux endpoints de diagnostic nécessitent un header Authorization: Bearer <clé>. Les préfixes valides sont cof_live_…, cof_test_…, cof_sandbox_… (clés complètes), cof_rk_live_… / cof_rk_test_… (clés restreintes) et cof_mcp_live_… / cof_mcp_test_… (tokens MCP). La clé est validée pour le rate-limiting uniquement : aucun `requiredScope` n'est imposé sur ces endpoints. Un token avec un scope minimal comme transfers:read suffit.

Format standard d'une réponse d'erreur

Toutes les erreurs partagent cette enveloppe : un objet error avec un code stable (à tester) et un message lisible (à journaliser). Branchez votre logique sur le code, pas sur la chaîne du message.

{
"error": {
"code": "scope_missing",
"message": "This token is missing the `transfers:write` scope. Granted scopes : transfers:read. Mint a new MCP token with the right scope at https://app.coffrify.com/mcp.",
"param": null,
"doc_url": "https://docs.coffrify.com/mcp/scopes"
}
}

Catalogue des codes d'erreur

Le tableau ci-dessous recense les codes réellement renvoyés, leur statut HTTP et leur catégorie. Un même statut HTTP (par exemple 403) peut couvrir plusieurs code distincts, à traiter différemment.

CodeHTTPCatégorieQuandRésolution
missing_api_key401tool_errorAucun header Authorization ni cookie de session valideAjouter Authorization: Bearer cof_live_… à chaque requête
invalid_api_key401tool_errorPréfixe non reconnu ou clé absente de la baseVérifier la variable d'environnement, régénérer sur /developer/api-keys
expired_api_key401tool_errorClé dépassant sa date d'expiration (webhook api_key.expired émis automatiquement)Régénérer une clé sans expiration ou activer la rotation automatique
revoked_api_key401tool_errorClé révoquée ou désactivée dans le dashboardCréer une nouvelle clé et la déployer dans vos environnements
ip_not_allowed403tool_errorIP appelante absente de la liste blanche de la cléAjouter l'IP côté console ou utiliser une clé sans restriction d'IP
scope_missing403tool_errorToken sans le scope requis par l'endpoint (requiredScope du handler)Réémettre un token MCP ou une clé API avec le scope manquant
rate_limited429plan_or_quotaQuota req/min dépassé sur la classe read, write ou expensiveLire Retry-After, retry exponentiel, upgrader vers Ultra (6000 req/min)
idempotency_conflict409tool_errorMême Idempotency-Key reçue avec un corps différentUtiliser une nouvelle clé d'idempotence pour ce nouvel appel
idempotency_in_progress409tool_errorRequête avec cette clé encore en coursPatienter quelques secondes puis réessayer
validation_error422tool_errorCorps JSON invalide ou champ requis manquant (voir error.param)Corriger le champ signalé dans error.param
payload_too_large413tool_errorCorps de requête trop volumineuxRéduire la charge utile ou utiliser l'upload multipart
not_found404tool_errorID inexistant dans ce workspace (Coffrify ne révèle pas les IDs d'autres workspaces)Vérifier l'ID dans le dashboard, utiliser la pagination cursor
forbidden403tool_errorWorkspace non trouvé pour cet utilisateurVérifier l'appartenance au workspace ou le cookie cf-workspace-id
conflict409tool_errorÉtat déjà terminal (approbation déjà validée, etc.)Relire l'état de la ressource avant d'agir (v1.3)
feature_not_available402plan_or_quotaFonctionnalité (SSO, SCIM, domaine custom…) hors du plan actuelConsulter coffrify_list_pricing_plans ou upgrader
mfa_required403tool_errorMFA obligatoire pour émettre des clés à scopes sensibles (v1.4)Activer le MFA et compléter la vérification step-up
internal_error500server_errorErreur interne Coffrify inattendueRetry avec backoff, signaler sur GitHub si persistant

Appeler le catalogue de diagnostic

Plutôt que de coder en dur ces explications, vous pouvez les obtenir à la volée via /v1/diagnostics/error/{code}. Les exemples ci-dessous montrent comment l'appeler.

curl -s https://api.coffrify.com/v1/diagnostics/error/scope_missing \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxxxxxxxxxx"

Réponse du catalogue

La réponse fournit un title, une explication et des next_steps pour le code demandé. Idéal pour afficher un message d'aide contextuel à vos utilisateurs ou enrichir vos logs.

{
"code": "scope_missing",
"kind": "tool_error",
"title": "Le token n'a pas le scope requis",
"explanation": "L'endpoint demande un scope (ex: `transfers:write`) qui n'est pas accordé au token utilisé. Le token est valide mais ses permissions sont trop étroites pour cet appel.",
"next_steps": [
"Identifier le scope manquant dans le message de l'erreur 403",
"Régénérer un token MCP avec ce scope coché : https://app.coffrify.com/mcp",
"Mettre à jour la config du client (Claude / Cursor / Cline / Continue) avec le nouveau token"
],
"docs_url": "https://docs.coffrify.com/mcp/scopes"
}

Headers de rate-limiting et de traçabilité

Au-delà du corps, plusieurs en-têtes accompagnent chaque réponse. Notez surtout X-Request-Id (à fournir au support) et les en-têtes de quota, listés ci-dessous.

HeaderValeur typiqueUsage
X-Request-Idreq_9f3b2a…Identifiant unique de la requête. À communiquer au support Coffrify pour toute investigation.
X-Coffrify-Api-Version2026-05-14Version de l'API ayant traité la requête.
X-RateLimit-Limit600Quota total de requêtes autorisées sur la fenêtre glissante de 60 s.
X-RateLimit-Remaining42Requêtes restantes dans la fenêtre courante.
X-RateLimit-Reset1749200000Timestamp Unix de réinitialisation du compteur.
Retry-After37Présent uniquement sur les 429. Secondes à attendre avant de réessayer.
X-Coffrify-Idempotent-ReplaytruePrésent si la réponse est rejouée depuis le cache d'idempotence.

Voir aussi

  • Premiers pas avec l'API Coffrify
  • Authentification et gestion des clés API
  • Rate limiting et idempotence
  • Scopes et permissions des tokens MCP
  • Recevoir des événements avec les Webhooks
  • Référence complète des erreurs
Continuer

Autres tutoriels à suivre