Skip to content
v1 · stable

API Documentation

REST API for email verification. JSON in, JSON out.

Base URL https://debounceapi.com/api/v1

Introduction

The DebounceAPI API lets you verify email addresses in real time. Every successful verification uses 1 credit. Buy credit packs on the pricing page.

Authentication

Send your API key as a Bearer token in the Authorization header. Generate keys in your dashboard.

Authorization: Bearer dbk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Keep your keys secret. Never expose them in client-side code or public repositories.

Rate limit

Each API key is limited to 60 requests per minute. Exceeding the limit returns 429 Too Many Requests with a Retry-After header. Need more? Contact us.

Verify a single email

POST /api/v1/verify · costs 1 credit on success.

Request body

{ "email": "[email protected]" }

Example: curl

curl https://debounceapi.com/api/v1/verify \
  -H "Authorization: Bearer dbk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'

Example: Node

const r = await fetch('https://debounceapi.com/api/v1/verify', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer dbk_live_…',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ email: '[email protected]' }),
});
const data = await r.json();

Example: Python

import requests

r = requests.post(
    "https://debounceapi.com/api/v1/verify",
    headers={"Authorization": "Bearer dbk_live_…"},
    json={"email": "[email protected]"},
)
print(r.json())

Example: PHP

$response = Http::withToken('dbk_live_…')
    ->post('https://debounceapi.com/api/v1/verify', [
        'email' => '[email protected]',
    ])->json();

200 OK response

{
  "email": "[email protected]",
  "status": "deliverable",
  "sub_status": null,
  "score": 92,
  "free_email": true,
  "role": false,
  "disposable": false,
  "accept_all": false,
  "did_you_mean": null,
  "credits_remaining": 9876
}

Verify a batch

POST /api/v1/verify/batch · costs 1 credit per email. Max 100 per request.

{ "emails": ["[email protected]", "[email protected]", "..."] }

Response is an object with a results array, one entry per input email.

Get credit balance

GET /api/v1/credits · free.

{ "balance": 9876 }

List status

GET /api/v1/lists/{id} — check the status of a bulk list you uploaded in the dashboard.

Response fields

FieldTypeDescription
statusstringOne of deliverable, undeliverable, risky, unknown.
sub_statusstring|nullReason. e.g. invalid_syntax, disposable, mailbox_not_found, role, accept_all.
scoreintegerConfidence 0–100.
free_emailbooleanPublic email provider (gmail, yahoo, etc.).
rolebooleanRole-based (info@, support@, etc.).
disposablebooleanTemporary email provider.
accept_allbooleanDomain accepts all addresses.
did_you_meanstring|nullSuggested correction for likely typos.

Errors

Errors return non-2xx HTTP codes with this shape:

{ "error": "INSUFFICIENT_CREDITS", "message": "Buy more credits to continue." }
HTTPCodeMeaning
401AUTH_REQUIREDMissing Authorization header.
401AUTH_INVALIDInvalid or revoked API key.
402INSUFFICIENT_CREDITSBalance is 0 (or less than batch size).
422VALIDATION_FAILEDRequest body invalid.
429RATE_LIMITSlow down. See Retry-After.
500SERVER_ERRORSomething went wrong on our end.