Ontwikkelaars

Een API voor e-mailverificatie die gewoon werkt

Controleer één adres in realtime, of stuur een hele lijst als batch. Alle verzoeken gebruiken HTTPS en geven JSON terug. Maak API-sleutels aan in je dashboard onder API-sleutels.

  • REST en JSON
  • Batch-callbacks
  • Dezelfde credits als het dashboard
De pagina API-sleutels in BounceBell met actieve sleutels en een formulier om een nieuwe sleutel aan te maken

Authenticatie

Stuur je API-sleutel bij elk verzoek mee als bearer-token in de Authorization-header. Bewaar sleutels op je server. Zet ze nooit in browsercode of mobiele apps.

Authorization: Bearer YOUR_API_KEY

De basis-URL voor elk endpoint is https://bouncebell.com/api/v1.

Controleer één adres

GET https://bouncebell.com/api/v1/verify

ParameterVerplichtBeschrijving
emailJaHet te controleren adres. URL-gecodeerd.
timeoutNeeAantal seconden om op de mailserver te wachten, van 3 tot 30. Standaard 10. Is de tijd op, dan is de status unknown en wordt er geen credit gebruikt.

Voorbeeld

curl "https://bouncebell.com/api/v1/verify?email=rini.elizabeth%40acme-foods.example" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "email": "rini.elizabeth@acme-foods.example",
  "status": "valid",
  "reason": "mailbox_exists",
  "domain": "acme-foods.example",
  "mx_record": "mx1.acme-foods.example",
  "disposable": false,
  "role": false,
  "free_provider": false,
  "catch_all": false,
  "did_you_mean": null,
  "checked_at": "2026-10-30T09:30:12Z",
  "credits_used": 1
}

Resultaatvelden

VeldTypeBeschrijving
emailstringHet adres zoals je het hebt verstuurd.
statusstringDe uitslag. Zie statussen.
reasonstringWaarom we tot de uitslag kwamen, bijvoorbeeld mailbox_not_found of no_mail_server.
domainstringHet domeingedeelte, in kleine letters.
mx_recordstring or nullDe mailserver met de hoogste prioriteit.
disposablebooleanTrue als het domein een dienst voor tijdelijke inboxen is.
rolebooleanTrue bij gedeelde inboxen zoals info@ of support@.
free_providerbooleanTrue bij gratis mailboxproviders zoals Gmail.
catch_allbooleanTrue als het domein elk adres accepteert.
did_you_meanstring or nullEen gecorrigeerd adres als het domein op een typefout lijkt.
checked_atstringWanneer de controle is uitgevoerd, in ISO 8601 UTC.
credits_usedinteger1, of 0 als de status unknown is.

Statussen

StatusBetekenisVoorgestelde actie
validDe mailbox bestaat en accepteert e-mail.Versturen
invalidHet adres, domein of de mailbox bestaat niet.Verwijderen
disposableEen dienst voor tijdelijke inboxen.Verwijderen
catch_allHet domein accepteert alle adressen, dus de mailbox kan niet worden bevestigd.Nakijken
roleEen gedeelde inbox die bestaat.Nakijken
unknownDe mailserver gaf niet op tijd antwoord. Niet in rekening gebracht.Later opnieuw proberen

Batches

Stuur tot 100.000 adressen in één verzoek. De batch draait op de achtergrond; vraag de status op of geef een callback_url op, dan roepen we die aan zodra de batch klaar is.

Een batch aanmaken

POST https://bouncebell.com/api/v1/batches

curl -X POST "https://bouncebell.com/api/v1/batches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "October import", "emails": ["a@example.com", "b@example.com"],
       "callback_url": "https://yourapp.example/hooks/bouncebell"}'
{ "id": "bat_8f2k1q3m9x7w4p", "status": "queued", "total": 2, "done": 0 }

Credits voor elk uniek adres worden gereserveerd zodra de batch wordt aangemaakt, en onbekende resultaten worden terugbetaald als hij klaar is. De callback ontvangt een POST met {"event": "batch.completed", "batch_id": "...", "status": "done", "counts": {...}}. Callback-URL's moeten HTTPS gebruiken.

Voortgang opvragen

GET https://bouncebell.com/api/v1/batches/{id}

{ "id": "bat_8f2k1q3m9x7w4p", "status": "running", "total": 2, "done": 1 }

De status is queued, running of done. Bij done bevat het antwoord ook counts per status.

Resultaten downloaden

GET https://bouncebell.com/api/v1/batches/{id}/results

Geeft standaard JSON terug. Voeg ?format=csv toe voor een CSV-bestand. Elke rij heeft dezelfde velden als een losse controle.

Credits

GET https://bouncebell.com/api/v1/credits

{ "credits_remaining": 33420 }

Fouten en limieten

Fouten geven een JSON-body terug met een error-code en een leesbare message.

HTTP-codeFoutWat te doen
400bad_requestEr ontbreekt een parameter of hij is onjuist. Lees de melding.
401invalid_keyControleer of de sleutel klopt en niet is ingetrokken.
402no_creditsKoop meer credits.
403email_not_confirmedOpen de bevestigingslink die we je mailden toen je je aanmeldde.
404not_foundDe batch bestaat niet of is na 30 dagen verwijderd.
429rate_limitedRustig aan. Wacht het aantal seconden uit de Retry-After-header af.
500server_errorProbeer het na een korte pauze opnieuw. Blijft het probleem, neem dan contact op met support.

Losse controles zijn beperkt tot 20 verzoeken per seconde per sleutel. Vraag het ons als je meer nodig hebt.