Skip to main content
GET
/
v1
/
verify
Verify Single Email
curl --request GET \
  --url https://api.orbisearch.com/v1/verify \
  --header 'X-API-Key: <api-key>'
{
  "email": "jane.doe@acme.com",
  "status": "safe",
  "substatus": "deliverable",
  "explanation": "Safe to email. The mailbox exists and is deliverable.",
  "email_provider": "Google Workspace",
  "mx_record": "aspmx.l.google.com",
  "is_domain_catch_all": false,
  "is_secure_email_gateway": false,
  "is_disposable": false,
  "is_role_account": false,
  "is_free": false,
  "confidence": 99
}

Documentation Index

Fetch the complete documentation index at: https://orbisearch.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Use this endpoint to verify a single email address in real-time. OrbiSearch checks DNS records, MX records, and the target mail server to determine whether the mailbox exists and is accepting mail. The response includes a status, a detailed substatus, a plain-English explanation, domain-level signals (mx_record, is_domain_catch_all, is_secure_email_gateway), and enrichment flags such as is_disposable and is_role_account. See the response schema for the meaning of each status and substatus value.

Caching

Results are cached for 24 hours. If you verify the same email address within that window, the result is returned immediately at no credit cost. The response format is identical whether the result is fresh or cached.

Rate limits

This endpoint is rate-limited to 20 requests per second per API key. Exceeding this limit returns a 429 Too Many Requests response. See errors for how to handle rate limit responses.

Authorizations

X-API-Key
string
header
required

API key for authentication

Query Parameters

email
string
required

Email address to verify.

Maximum string length: 320
Example:

"jane.doe@acme.com"

timeout
integer
default:70

Timeout in seconds (3-90).

Required range: 3 <= x <= 90
Example:

70

Response

Successful Response

Verification result for a single email address.

email
string
required

The email address that was verified.

Example:

"test@example.com"

status
enum<string>
required

Overall verification status: safe (deliverable), risky (uncertain), invalid (undeliverable), unknown (verification failed).

Available options:
safe,
risky,
invalid,
unknown
Pattern: ^(safe|risky|invalid|unknown)$
Example:

"risky"

explanation
string
required

Plain-English explanation of the verification result.

Example:

"Risky to email. The mailbox may or may not exist, as the domain accepts all mail. Send with caution."

email_provider
string
required

Email service provider (Google Workspace, Gmail, Microsoft Outlook, etc.).

Example:

"Google Workspace"

substatus
string | null

Specific reason for the status (e.g., catch_all, disposable, role_account, invalid_syntax).

Example:

"catch_all"

mx_record
string | null

The main mail server the domain uses to receive email. Null if the domain has no mail server configured — when that happens, substatus will be no_mx_records.

Example:

"aspmx.l.google.com"

is_domain_catch_all
boolean | null

True if the domain accepts mail for any username (catch-all). Null if we could not determine whether the domain is catch-all.

Example:

false

is_secure_email_gateway
boolean
default:false

True if the domain is protected by a secure email gateway — Proofpoint, Mimecast, Barracuda, or Trend Micro.

Example:

false

is_disposable
boolean | null

True if this is a temporary/disposable email service, false if not, null if unknown.

Example:

false

is_role_account
boolean | null

True if this is a generic role-based email (info@, support@, etc.), false if not, null if unknown.

Example:

true

is_free
boolean | null

True if this is from a free email provider (gmail.com, yahoo.com, etc.), false if not, null if unknown.

Example:

false

confidence
integer | null

How confident we are in the result, on a 0–100 scale. You can control yield of valid emails vs potential bounce rate by filtering safe/deliverable emails on this field.

Required range: 0 <= x <= 100
Example:

99