Verify at signup, at import, or right before a send. Same engine and labels as the dashboard, same credits. Your key is on your dashboard.
Endpoint
GET https://app.bouncesolvi.com/portal/api/v1/verify?email=maria.chen@acme.io&key=bs_your_key # or send the key as a header curl -H "Authorization: Bearer bs_your_key" \ "https://app.bouncesolvi.com/portal/api/v1/verify?email=maria.chen@acme.io"
{
"email": "maria.chen@acme.io",
"status": "deliverable", // deliverable | invalid | catch_all | disposable | role | unknown
"safe_to_send": "Yes", // Yes | No | Unknown
"type": "Free Account", // provider hint when known
"reason": "Deliverable", // what the mail server told us, in words
"mx_server": "aspmx.l.google.com",
"ms": 1120, // time spent talking to the server
"credits_left": 4993
}
GET https://app.bouncesolvi.com/portal/api/v1/verify?email=a@x.com,b@y.com,c@z.com&key=bs_your_key
{ "results": [ { "email": "a@x.com", "status": "deliverable", ... }, ... ], "credits_left": 4990 }
| status | Meaning | Suggested action |
|---|---|---|
deliverable | Mailbox confirmed by the recipient's server. | Send. |
invalid | Server rejected the mailbox, or the domain has no MX. | Drop. |
catch_all | Domain accepts every address; mailbox can't be confirmed from outside. | Your policy. Many senders keep at lower cadence. |
disposable | Temporary inbox provider. | Reject at signup. |
role | Shared inbox (info@, sales@). | Fine for newsletters, skip for 1:1 outreach. |
unknown | Server didn't answer in time after retries. | Retry later or treat as risky. |
| HTTP | Body | Why |
|---|---|---|
| 400 | {"error":"No valid-looking email addresses supplied."} | Nothing parseable in email. |
| 401 | {"error":"Invalid API key."} | Wrong or rotated key. |
| 402 | {"error":"Not enough credits: ..."} | Top up on the pricing page. Nothing is charged on a 402. |
| 500 | {"error":"..."} | Our side. Credits are refunded automatically; retry. |