Skip to main content

Codes d'erreur & Debugging

Codes HTTP​

CodeNomSignification
200OKSuccĂšs
201CreatedRessource créée
204No ContentSuccÚs sans corps de réponse
400Bad RequestDonnées invalides ou manquantes
401UnauthorizedToken/API Key manquant ou invalide
402Payment RequiredCrédits SMTP insuffisants
403ForbiddenPermissions insuffisantes
404Not FoundRessource introuvable
409ConflictConflit (ex: job batch déjà actif)
422Unprocessable EntityErreur de validation des données
429Too Many RequestsRate limit dépassé
500Internal Server ErrorErreur serveur

Format des erreurs​

{
"message": "Description lisible de l'erreur",
"code": "ERROR_CODE",
"statusCode": 400
}

Pour les erreurs de validation (422), message est un tableau :

{
"message": [
"email must be an email",
"smtp must be a boolean"
],
"error": "Unprocessable Entity",
"statusCode": 422
}

Erreurs courantes​

401 — Non authentifié​

{ "message": "Unauthorized", "statusCode": 401 }

Causes possibles :

  • Token JWT expirĂ© → utiliser /auth/refresh
  • API Key invalide ou rĂ©voquĂ©e → vĂ©rifier dans le Dashboard
  • Header manquant → ajouter X-API-Key ou Authorization: Bearer

402 — CrĂ©dits insuffisants​

{
"message": "Insufficient credits for SMTP validation",
"code": "INSUFFICIENT_CREDITS",
"statusCode": 402
}

→ Rechargez vos crĂ©dits depuis le Dashboard ou dĂ©sactivez smtp: true


403 — Forbidden​

{ "message": "Only owners and admins can create API keys", "statusCode": 403 }

→ Votre rîle est member. Demandez à un owner ou admin d'effectuer cette action.


409 — Job batch dĂ©jĂ  actif​

{
"message": "A batch job is already running for this organization",
"code": "ACTIVE_JOB_EXISTS",
"statusCode": 409
}

→ Attendez la fin du job en cours ou annulez-le via POST /batch/{jobId}/cancel


422 — Validation des donnĂ©es​

{
"message": ["email must be an email"],
"error": "Unprocessable Entity",
"statusCode": 422
}

→ VĂ©rifiez le format des donnĂ©es envoyĂ©es (voir le schĂ©ma dans l'API Reference)


429 — Rate limit​

{
"message": "Too many requests from this IP, please try again later",
"statusCode": 429
}

→ Attendez Retry-After secondes avant de rĂ©essayer


Widget — 429 WIDGET_RATE_LIMIT​

{
"message": "Too many requests for this widget",
"reason": "WIDGET_RATE_LIMIT",
"retryAfterSeconds": 60
}

→ Protection anti-abus activĂ©e pour ce widget. Normal si un mĂȘme device/IP fait trop de requĂȘtes.

Statuts de validation email​

Les statuts status dans /email/validate ne sont pas des erreurs HTTP mais des résultats métier :

StatutCode HTTPSignification
valid200Email valide ✅
invalid200Email invalide ❌
risky200Email risquĂ© ⚠
unknown200Impossible de vĂ©rifier 🟡
tip

Un statut invalid retourne toujours HTTP 200. C'est le résultat de la validation, pas une erreur.

Debugging​

VĂ©rifier le statut de l'API​

curl https://api.yeswecheck.fr/health
{
"status": "healthy",
"timestamp": "2026-02-25T10:00:00.000Z",
"version": "v2"
}

Tester une clĂ© API​

curl https://api.yeswecheck.fr/v2/credits/balance \
-H "X-API-Key: ywc_live_votre_cle"

Si vous recevez un 401, la clé est invalide ou révoquée.

Inspecter les headers de rĂ©ponse​

curl -I -X POST https://api.yeswecheck.fr/v2/email/validate \
-H "X-API-Key: ywc_live_votre_cle" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'

Logs d'usage​

Consultez vos logs d'appels dans le Dashboard → Usage pour identifier les erreurs rĂ©currentes.

Contacter le support​

Si vous rencontrez une erreur 500 persistante ou un comportement inattendu :

  • Email : [email protected]
  • Incluez : votre organizationId, le timestamp, l'endpoint, et la rĂ©ponse complĂšte