Bouncebuster

API reference

A simple JSON-over-HTTPS API. The base URL is https://app.bouncebuster.io/api/v1. The full machine-readable spec is available at /api/v1/openapi.json.

Authentication

Pass your API key as a Bearer token. Create and revoke keys in the dashboard.

Authorization: Bearer bb_live_your_key_here

Rate limits

Requests are rate-limited per API key. Every response includes RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset headers. Exceeding the limit returns 429.

Endpoints

POST/v1/verify
Verify a single email address.
curl -X POST https://app.bouncebuster.io/api/v1/verify \
  -H "Authorization: Bearer bb_live_…" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'
{
  "email": "[email protected]",
  "status": "valid",
  "reason": "ok",
  "catch_all": false,
  "catch_all_domain": false,
  "role_based": false,
  "free_provider": false,
  "disposable": false,
  "smtp_provider": "google",
  "mx_found": true,
  "mx_record": "aspmx.l.google.com",
  "did_you_mean": null,
  "domain_age_days": 9331,
  "confidence": 95,
  "tier": "safe",
  "billable": true,
  "cached": false,
  "credits_charged": 1
}
POST/v1/verify/batch
Verify up to 100 addresses in one request. Returns a result per input plus a summary. For larger volumes, create a list.
curl -X POST https://app.bouncebuster.io/api/v1/verify/batch \
  -H "Authorization: Bearer bb_live_…" \
  -H "Content-Type: application/json" \
  -d '{"emails":["[email protected]","[email protected]"]}'
POST/v1/lists
Create a bulk verification job from an array of emails. Returns a list you can poll.
curl -X POST https://app.bouncebuster.io/api/v1/lists \
  -H "Authorization: Bearer bb_live_…" \
  -H "Content-Type: application/json" \
  -d '{"name":"newsletter.csv","emails":["[email protected]","[email protected]"]}'
GET/v1/lists/{id}
Get a list’s status, counts, progress, and per-category download links (once complete).
GET/v1/lists/{id}/download/{category}
Download an export: cleaned, all, or a single category (valid, invalid, catch-all, disposable, unknown).
GET/v1/account
Return your plan, subscription status, credit usage, and current billing period.

Result fields

FieldMeaning
statusvalid · invalid · catch-all · disposable · unknown
reasonGranular reason (e.g. no_mx_records, mailbox_not_found)
catch_allDomain accepts all recipients
catch_all_domainAlias of catch_all (domain is accept-all)
role_basedAddress like info@, support@, sales@
free_providergmail.com, outlook.com, etc.
disposableTemporary / throwaway provider
smtp_providerMailbox provider from MX (google, microsoft, …)
mx_foundWhether an MX record was found
mx_recordPrimary MX hostname
did_you_meanSuggested fix for a likely domain typo
domain_age_daysDomain registration age in days (best-effort)
confidence0–100 deliverability score (esp. useful on catch-all)
tierRouting bucket: safe · review · risky · drop · unknown
billableWhether this result consumed a credit

Errors

Errors use standard HTTP status codes and a consistent JSON body:

{ "error": { "code": "no_credits", "message": "Out of credits for this billing period." } }