API de vérification

Un appel, et vous savez ce qui se passe si vous envoyez.

Vérifiez les adresses à l'inscription et avant chaque envoi, pour que les mauvaises données n'atteignent ni votre liste ni votre réputation d'expéditeur. Un jeton en entrée, un verdict en sortie, avec le score et les codes de motif qui l'expliquent.

Requête et réponse

Toute l'intégration, sur un seul écran.

Pas de SDK, pas de client à instancier, pas d'enrobage à apprendre. Un jeton porteur, un POST, et un objet dont votre code peut lire les noms de champs.

verify.sh
curl -X POST https://api.bounceintel.com/v1/check_email \
  -H "Authorization: Bearer $BOUNCEINTEL_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'
response.json200
{
  "input": "[email protected]",
  "is_reachable": "safe",
  "syntax": {
    "domain": "stripe.com",
    "username": "ada",
    "is_valid_syntax": true
  },
  "mx": {
    "accepts_mail": true,
    "records": ["aspmx.l.google.com", "alt1.aspmx.l.google.com"]
  },
  "smtp": {
    "can_connect_smtp": true,
    "is_deliverable": true,
    "is_catch_all": false,
    "is_disabled": false,
    "has_full_inbox": false
  },
  "misc": {
    "is_disposable": false,
    "is_role_account": false,
    "is_b2c": false
  },
  "provider": "google_workspace",
  "provider_rules_applied": true,
  "score": {
    "score": 100,
    "category": "valid",
    "sub_reason": "deliverable",
    "safe_to_send": true,
    "confidence": 0.97,
    "confidence_level": "high",
    "reason_codes": ["deliverable", "tenant_history_positive"]
  },
  "bounce_risk": {
    "score": 3,
    "category": "low",
    "confidence": 0.94,
    "action": "send",
    "model_version": "br-2026.06",
    "risk_factors": [
      {
        "signal": "smtp_is_deliverable",
        "direction": "decreases_risk",
        "contribution": -0.41,
        "description": "Mailbox accepted the recipient at RCPT TO."
      }
    ]
  }
}
  • 01

    Un seul point d’entrée

    POST /v1/check_email avec une adresse. Aucune session à ouvrir.

  • 02

    Codes de motif

    Des codes documentés sur lesquels brancher votre logique, pas du texte libre.

  • 03

    Un score à vous

    Un nombre de 0 à 100 : votre seuil devient une valeur de configuration, pas notre décision.

  • 04

    Des inconnus assumés

    Un contrôle non concluant renvoie 200 avec un verdict inconnu, jamais un verdict inventé.

  • 05

    Le lot comme un job

    POST /v1/bulk accepte une liste et renvoie un identifiant de job à interroger.

  • 06

    Clés révocables

    Plusieurs clés actives, révoquées indépendamment, sans interruption.

Démarrer

De zéro compte à un verdict dans votre propre code.

  1. 01

    Créer une clé

    Les clés s'émettent depuis le tableau de bord. Vous pouvez en avoir plusieurs actives et les révoquer indépendamment : une rotation ne coûte aucune interruption.

  2. 02

    Envoyer l'adresse

    Un POST avec un en-tête Authorization et un corps JSON. Aucune session à ouvrir, aucune négociation préalable.

  3. 03

    Brancher sur la réponse

    Lisez le verdict, ou le score face à votre propre seuil, ou les codes de motif. Les trois sont dans le même objet : jamais de second appel pour savoir pourquoi.

  4. 04

    Passer aux listes

    La même clé soumet un lot sous forme de tâche et l'interroge. Les verdicts sont identiques à ceux du point d'entrée unitaire, car c'est le même pipeline.

Référence

La surface contre laquelle vous intégrez.

Quatre points d'entrée et deux en-têtes. La référence complète, avec un bac à sable en direct, est dans la documentation.

Point d'entrée ou en-têteTypeCe qu'il fait
POST /v1/check_emailsynchronousVérifiez une adresse et recevez le rapport noté dans la même réponse. C'est l'appel que fait presque toute intégration.
POST /v1/bulkjobSoumettez une liste et recevez un identifiant de tâche. Accepte bien plus d'adresses que ce pour quoi vous voudriez garder une connexion ouverte.
GET /v1/bulk/{job_id}jobInterrogez une tâche pour connaître son état et son avancement, afin que votre interface affiche une progression plutôt qu'un indicateur qui tourne.
GET /v1/bulk/{job_id}/resultsjson | csvRécupérez les lignes d'une tâche terminée, paginées, en JSON ou dans le même CSV que celui téléchargé depuis le tableau de bord.
Authorization: BearerheaderComment chaque requête s'authentifie. Gardez la clé sur votre serveur : une clé qui atteint le navigateur est un solde de crédits public.
429 / Retry-AfterheaderCe que vous obtenez si vous dépassez la limite de débit de votre offre. Attendez le nombre de secondes indiqué dans l'en-tête et réessayez ; une requête rejetée n'est pas facturée.

FAQ

Les premières questions des développeurs

Comment s’authentifier ?

Un en-tête Authorization avec un jeton. Gardez la clé côté serveur : une clé qui atteint le navigateur est un solde de crédits public.

Que faire d’un verdict inconnu ?

Laissez passer l’utilisateur, marquez l’enregistrement et revérifiez plus tard. La plupart des inconnus viennent du serveur destinataire qui refuse de répondre.

Quels forfaits donnent une clé API ?

Tout forfait payant, mensuel ou à l’usage. Les comptes gratuits vérifient dans le tableau de bord, ce qui suffit pour voir le format des réponses.

Puis-je l’appeler depuis le navigateur ?

Non. Passez par votre propre serveur. Une clé dans le navigateur est un solde de crédits public.

Quelles sont les limites de débit ?

Elles sont fixées par offre plutôt que publiées comme un chiffre global, parce qu'une intégration de formulaire d'inscription et un traitement de liste nocturne n'ont pas du tout la même forme. En cas de dépassement, l'API répond 429 avec un en-tête Retry-After et ne facture pas la requête.

Existe-t-il un SDK ?

Non, et c'est voulu. Un point d'entrée avec un corps JSON n'a besoin d'aucune bibliothèque cliente, et un enrobage mince est une dépendance à maintenir pour rien. Chaque langage des exemples ci-dessus utilise son client HTTP standard.

Lisez la réponse avant d’écrire du code contre elle.

100 crédits à l’inscription, sans carte. Testez de vraies adresses et voyez l’objet exact que recevra votre code.