From zero to a verified address in a few minutes — with the SDK for your stack or a plain HTTP call.
Create a free account (100 credits, no card) and generate a token in your API tokens settings. Give it the validate:single permission.
Every request runs in the context of an organization — your team. Your organization ID is your team ID, sent as the X-Organization-ID header. You'll find it in your dashboard.
With an official SDK:
// composer require bounceshift/laravel (or bounceshift/bounceshift-php)
$result = BounceShift::validate('[email protected]');
$result->status->value; // 'valid', 'catch_all', 'unknown', ...
$result->isSafeToSend(); // true for 'valid' or 'catch_all'// npm install @bounceshift/sdk
const result = await bounceshift.validate('[email protected]');
result.status; // 'valid' | 'catch_all' | 'unknown' | ...
isSafeToSend(result); // true for 'valid' or 'catch_all'Or straight over HTTP:
curl -X POST https://api.bounceshift.com/v1/validate/single \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Organization-ID: YOUR_ORG_ID" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'Every validation returns a status, a 0–100 confidence score, granular flags, and a sub_status:
{
"email": "[email protected]",
"status": "valid",
"confidence": 95,
"mx_found": true,
"smtp_valid": true,
"is_disposable": false,
"is_catch_all": false,
"is_role_account": false,
"from_cache": false,
"credits_used": 1,
"result": { "sub_status": "mailbox_exists" }
}The headline field is status. It's safe to send when the status is valid or catch_all. See the full status & error-code reference for what every value means — and note that an unknown result means "we couldn't confirm," not "invalid," so don't discard those addresses.
Related terms
Get 100 free validations to test our service. No credit card required.
Start Free Trial