API

One request. One honest answer.

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

Verify one address

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"

Response

{
  "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
}

Verify up to 100 at once

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 }

Statuses

statusMeaningSuggested action
deliverableMailbox confirmed by the recipient's server.Send.
invalidServer rejected the mailbox, or the domain has no MX.Drop.
catch_allDomain accepts every address; mailbox can't be confirmed from outside.Your policy. Many senders keep at lower cadence.
disposableTemporary inbox provider.Reject at signup.
roleShared inbox (info@, sales@).Fine for newsletters, skip for 1:1 outreach.
unknownServer didn't answer in time after retries.Retry later or treat as risky.

Errors

HTTPBodyWhy
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.

Notes