Verify with the API
One address or a whole list from your own code — snake_case JSON over HTTPS, with a full reference at /api/docs.
The API lets you verify from your own app. It's JSON over HTTPS, under /api/v1, and every request carries your
API key in the X-API-Key header. The full, interactive reference is at /api/docs.

Verify one address
POST /api/v1/verify
curl https://verifier.salesbullet.ai/api/v1/verify \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "someone@example.com"}'
The answer is the same result you see in the app — status (safe, invalid, catch_all or unknown), a reason, and
flags like is_disposable, is_role_account and is_free_email. Only status: "safe" is safe to send to.
What the results mean
A mailbox check can take a few seconds, up to about 40 for a slow server — give your HTTP client a timeout of at least a
minute. A definite answer costs one credit; unknown is free.
Verify a list
POST /api/v1/bulk — up to 100,000 addresses. The list is accepted at once and checked in the background:
curl https://verifier.salesbullet.ai/api/v1/bulk \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "October leads", "emails": ["a@example.com", "b@example.com"]}'
You get back a task_id. Then either:
- Poll
GET /api/v1/bulk/{task_id}for its status and counts, thenGET /api/v1/bulk/{task_id}/resultsonce it has ended (pages of JSON, or?format=csvfor the whole list;?filter=safe,safe_catch_allorinvalid), or - let a webhook tell you the moment it's done.
DELETE /api/v1/bulk/{task_id} cancels a running list (credits for the rest refunded) or deletes an ended one.
Check your balance
GET /api/v1/account returns your plan and how many credits you have left — handy before sending a big list.
Tip
/api/docs lists every endpoint with its fields, try-it buttons and the exact limits for your key. Keep it open while you build.