Verify email addresses using the BillionVerify API...
Call the BillionVerify API to verify email addresses โ single, batch, or bulk file processing.
API key must be set in environment variable BILLIONVERIFY_API_KEY.
Get your API key at: https://billionverify.com/auth/sign-in?next=/home/api-keys
Before the first call, check the key is available:
[ -n "$BILLIONVERIFY_API_KEY" ] && echo set || echo missing
If it is missing (for example in claude.ai, where skills have no environment variables):
https://mcp.billionverify.com/mcp, OAuth sign-in, no key needed) avoids this.BILLIONVERIFY_API_KEY=... curl ...). Never write it to a file and never echo it back.If a request fails with a DNS, connection or proxy error (not an HTTP error), the sandbox is blocking outbound traffic. In claude.ai the user must allow api.billionverify.com under Settings โ Capabilities (network egress / allowed domains); on Team / Enterprise an Owner has to add the domain.
https://api.billionverify.com
All requests require an API key header:
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY"
curl -X POST "https://api.billionverify.com/v1/verify/single" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"check_smtp": true
}'
Response data includes: status (valid/invalid/unknown/risky/disposable/catchall/role), score (0-1), is_deliverable, is_disposable, is_catchall, is_role, is_free, domain, mx_records, domain_reputation, check_smtp, smtp_result, reason, verification_mode, retryable, response_time (ms), credits_used. Some fields (e.g. suggestion, domain_age, catch_all_evidence) only appear when relevant.
curl -X POST "https://api.billionverify.com/v1/verify/bulk" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emails": ["user1@example.com", "user2@example.com"],
"check_smtp": true
}'
Upload CSV, Excel (.xlsx/.xls), or TXT files (max 20MB, 100,000 emails):
curl -X POST "https://api.billionverify.com/v1/verify/file" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY" \
-F "file=@/path/to/emails.csv" \
-F "check_smtp=true" \
-F "email_column=email" \
-F "preserve_original=true"
Returns task_id for tracking the async job.
Supports long-polling with timeout parameter (0-300 seconds):
curl -X GET "https://api.billionverify.com/v1/verify/file/{task_id}?timeout=30" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY"
Status values: pending, processing, completed, failed.
Without filters returns redirect to full result file. With filters returns CSV of matching emails (filters combined with OR logic):
curl -X GET "https://api.billionverify.com/v1/verify/file/{task_id}/results?valid=true&invalid=true" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY" \
-L -o results.csv
Filter parameters: valid, invalid, catchall, role, unknown, disposable, risky.
curl -X GET "https://api.billionverify.com/v1/credits" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY"
Paginated, newest first, covers every key and the web dashboard of the account. Optional filters: email (substring), status, method (web / api):
curl -X GET "https://api.billionverify.com/v1/usage?page=1&limit=20" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY"
limit is 1-100. Pagination is returned in the top-level pagination object (page, limit, total, total_pages).
period is one of 7d (default), 30d, 90d, 1y:
curl -X GET "https://api.billionverify.com/v1/stats?period=30d" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY"
Returns total_verified, valid_emails, invalid_emails, credits_used, average_score.
curl -X POST "https://api.billionverify.com/v1/webhooks" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-app.com/webhooks/billionverify",
"events": ["file.completed", "file.failed"]
}'
The secret is only returned on creation โ store it securely.
curl -X GET "https://api.billionverify.com/v1/webhooks" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY"
curl -X DELETE "https://api.billionverify.com/v1/webhooks/{webhook_id}" \
-H "BV-API-KEY: $BILLIONVERIFY_API_KEY"
curl -X GET "https://api.billionverify.com/health"
| Endpoint | Limit |
|---|---|
| Single Verification | 6,000/min |
| Batch Verification | 1,500/min |
| File Upload | 300/min |
| Other endpoints | 200/min |
$ARGUMENTS