Blog / October 9, 2026

Email Verification API Reference and Best Practices

Complete email verification API reference for RichAPI including endpoints, syntax, error codes, and best practices for B2B deliverability.

Email Verification API Reference and Best Practices
On this page

Table of Contents

  • Understanding Email Verification APIs
    • Validation Layers at a Glance
    • Choose the Right Interface
    • Apply Credits Across Endpoints
    • Validation Result States
    • Client Errors and Fixes
    • Server Errors and Recovery
    • Select the Right Processing Mode
    • Configure Webhook Automation
    • Configure the MCP Connection
    • Design Safe Agent Workflows
    • Connect Verification With Reputation
    • Place Checks Throughout the Pipeline
    • Balance Depth and Speed
  • Plan Verification Spend
    • Estimate Monthly Usage
  • Read Execution Logs
    • How Accurate Is an Email Verification API?
    • How Fast Are Verification Requests?
    • Will It Integrate With My CRM?
    • How Should Catch-All Results Be Handled?
    • How Do I Protect API Keys?

Understanding Email Verification APIs

An email verification API is a programmatic service that puts an email address through a series of checks before it ever lands in a CRM, a sales sequence, or a marketing workflow. Instead of relying on a basic "looks like an email" form check, it inspects syntax, domain health, mailbox signals, and risk indicators, then returns a result your automation can actually use.

In B2B pipelines, that check usually happens at more than one point. You might run it during lead capture so malformed addresses never touch your database, or during data enrichment when newly discovered contacts are being assigned. Teams often run it again right before a sequence fires, keeping risky records out of outbound campaigns, and periodically as part of database maintenance, flagging addresses that went stale after someone changed jobs.

The reason this is ongoing work is that business contact data decays. People leave employers, companies retire domains, mailboxes get deactivated. A perfectly deliverable work address collected six months ago can be dead by the time your next campaign goes out.

Verification tells you about address signals. It does not guarantee a message will reach the recipient or land in the inbox.

That distinction matters when you're designing pipeline logic. Verification is an operational control, not a replacement for consent, authentication, suppression rules, or sensible sending practices. For user-owned email confirmation, browser-based approaches like Chrome's proposed Email Verification Protocol deal with account ownership, while an email verification API focuses on data quality and deliverability signals.

Validation Layers at a Glance

Most verification services run an address through four primary checks before returning a verdict. Here is what each layer does and what signal it produces.

Validation LayerPurposeOutput Signal
Syntax checkConfirms the local part and domain follow accepted email formatting rulesValid or invalid format
Domain validationChecks whether the domain is active and configured to receive mailDeliverable domain or failed domain
Mailbox signalsEvaluates SMTP responses and related provider indicators without sending a messageReachable, unknown, or rejected
Risk detectionIdentifies disposable, role-based, or catch-all addresses that may reduce campaign qualityRisk flag or confidence state

A solid implementation stores the result, timestamp, and decision alongside the contact record. Recheck older work addresses before high-volume outreach, then route valid records forward and suppress or review uncertain outcomes. That creates a feedback loop between verification, CRM hygiene, and campaign performance.

RichAPI embeds email verification directly into a unified B2B data enrichment platform, so teams can validate addresses without ripping out their CRM, automation tools, or existing go-to-market stack. A single API key handles email finding, verification, company enrichment, contact research, and other data operations through RichAPI.

The service runs on a waterfall routing model across 40+ licensed providers. If one source is down, slow, or returns stale data, RichAPI keeps cycling through approved alternatives before returning a result.

A provider outage shouldn't become a pipeline outage. Waterfall routing adds resilience while keeping endpoint pricing predictable.

This setup makes sense when verification quality matters more than relying on any single database. Execution logs track which providers were tried, which responded, and what got billed, giving operations teams a clean audit trail.

A four-step diagram illustrating the Email Verification API workflow process from syntax checking to CRM handoff.

The diagram walks through the Email Verification API workflow, from syntax and domain checks through mailbox signals and the final CRM decision.

The core takeaway: verification acts as a sequence of safeguards, letting your workflow separate deliverable contacts from risky or unusable records before outreach ever begins.

Choose the Right Interface

RichAPI offers both a standard REST API and an MCP server. REST fits backend services, CRM automations, and tools like HubSpot, Zapier, n8n, Clay, or custom applications.

MCP targets AI agents and developer environments such as Claude, Cursor, and Windsurf. An agent can request verification as part of a research or prospecting task without building a separate integration for every data source.

Here's a quick breakdown:

  • REST API handles deterministic application calls, workflow automation, and scheduled jobs.
  • MCP server handles tool calls from AI agents during interactive or autonomous processes.
  • Bulk processing handles larger datasets through asynchronous jobs and webhooks.
  • Unified access lets teams plug verification into current workflows without migrating platforms.

Apply Credits Across Endpoints

RichAPI uses fixed, credit-based pricing with no seats, contracts, or minimum commitments. The credit pool spans both email finder and email verifier endpoints, so teams can shift usage based on pipeline demand.

Email and phone misses cost zero credits, while successful results follow the endpoint's stated credit cost. That makes testing and fallback routing far less risky, especially when a waterfall call burns through multiple providers before landing on a usable answer.

Consider a typical workflow: find a work email first, verify it before CRM insertion, then push only passing records into a sequence. The execution log captures the route and billing outcome, helping teams forecast spend and troubleshoot unexpected results.

{ "email": "alex@example.com", "status": "valid", "confidence": 0.98, "is_disposable": false, "is_role_based": false, "is_catch_all": false, "domain": "example.com", "credits_used": 1, "request_id": "req_8f31" }

Think of an email verification API response as a routing instruction, not just a pass/fail label. Store the HTTP status, result state, request ID, and timestamp so your CRM or automation can retry safely and explain every decision later.

Validation Result States

Each verification call returns a result state that tells you what the provider actually determined. Treat these as distinct signals in your pipeline rather than collapsing them into a simple binary.

Result CodeMeaningRecommended Action
validSyntax, domain, and mailbox signals support deliverySend to the next workflow stage
invalidThe address is malformed, rejected, or undeliverableSuppress it and request correction
disposableThe domain is associated with temporary inboxesReject for durable B2B records
catch_allThe domain accepts mail broadly, so mailbox certainty is limitedReview or send only with safeguards
unknownProviders did not return a reliable conclusionRetry later or route to manual review

A valid result does not guarantee inbox placement, consent, or recipient engagement. Likewise, unknown is not equivalent to invalid. Keep that distinction in your pipeline logic, because aggressive suppression can discard real contacts when a provider is temporarily slow or inconclusive.

Use result states to control workflow actions, while retaining confidence and supporting flags for later analysis.

Client Errors and Fixes

Client-side failures usually require a request correction rather than a retry. Common responses include:

  • 400 invalid_request means malformed JSON, an unsupported validation option, or an incorrectly formatted email. Validate the payload before submission.
  • 422 missing_parameter indicates that a required field, usually email, was omitted or empty. Check field mapping and form serialization.
  • 401 unauthorized means the API key is missing, expired, or incorrect. Load secrets from server-side environment variables and confirm the correct authorization header.
  • 403 forbidden indicates that the key lacks permission for the requested endpoint. Review workspace access and endpoint availability.
  • 409 duplicate_request signals an idempotency or duplicate-processing conflict. Reuse the original request ID instead of creating another job.

For example, never place a production key in browser JavaScript. A documented security review of exposed API credentials shows why client-visible secrets can enable unauthorized access and account compromise.

Server Errors and Recovery

Server-side responses generally support controlled retries. A 408 timeout or 504 provider_timeout should use exponential backoff, while preserving the same idempotency key. A 429 rate_limited response requires honoring Retry-After, reducing concurrency, and spacing bulk requests.

For 500 internal_error or 503 service_unavailable, record the request ID, wait briefly, and retry within a fixed limit. If failures persist, route records to an asynchronous queue rather than blocking your CRM workflow.

Use this sequence:

  1. Log the status and request ID.
  2. Retry only transient errors.
  3. Stop after a defined attempt limit.
  4. Mark unresolved records unknown.
  5. Alert operations when the error rate rises.

RichAPI's waterfall routing across 40+ licensed providers helps reduce single-source failures, while execution logs show which providers answered and what was billed. Review those logs before changing business rules, then test recovery behavior with representative payloads through the RichAPI email verifier.

A professional software developer working on data processing tasks at his clean, minimalist modern home office desk.

RichAPI handles both immediate checks and asynchronous bulk jobs. Pick the synchronous email verification API request when you need a quick decision on a single address, like validating a signup form before writing a record to your CRM.

const response = await fetch("https://api.richapi.ai/v1/email/verify", { method: "POST", headers: { "Authorization": Bearer ${process.env.RICHAPI_KEY}, "Content-Type": "application/json" }, body: JSON.stringify({ email: "alex@example.com" }) }); const result = await response.json();

When you're dealing with larger files, submit a bulk job rather than holding open hundreds of individual requests. RichAPI hands back a job reference, works through the records in the background, and pushes completion details to whatever webhook you've configured.

Select the Right Processing Mode

These thresholds work well as a starting point, but always double-check your current account limits in the RichAPI documentation:

  • Single records: synchronous verification gives you the lowest latency in your application.
  • Small batches: group records into moderate batches and keep concurrent submissions in check.
  • Large datasets: use the bulk endpoint, queue jobs, and consume webhook notifications.
  • Time-sensitive launches: submit early enough to leave room for retries on unknown results.

A pattern that holds up well in practice is keeping batches in the 100 to 500 address range instead of cramming everything into one massive payload. If a request fails, you retry a smaller chunk, and tracking progress becomes far less painful.

Think of asynchronous verification like a warehouse conveyor belt. Feed it manageable batches, track each job, and only move completed results into the next stage of your workflow.

Configure Webhook Automation

Your webhook should accept the job identifier, processing status, result location, and request signature if RichAPI provides one for your workspace. Respond with a success status quickly, then push the event onto an internal queue for validation and CRM updates.

  1. Confirm the event belongs to a known job.
  2. Reject duplicate events using the job ID as an idempotency key.
  3. Retrieve or process the completed results.
  4. Route valid, invalid, disposable, catch_all, and unknown records into separate paths.
  5. Store completion time, request ID, and credit usage for auditing.

Keep your webhook handlers decoupled from campaign execution. A completed job should update contact status first, while a separate automation decides whether a verified record is eligible to enter a sequence.

For implementation details and operational examples, learn more about bulk email verification workflows. This separation also makes provider timeouts or temporary 429 responses easier to retry without accidentally duplicating CRM records.

RichAPI's MCP server lets AI agents call email verification as a defined tool rather than improvising API requests on the fly. MCP bridges an agent environment—Claude, Cursor, Windsurf, and similar—with external capabilities through structured tool definitions, inputs, and outputs.

For an AI SDR, this means an agent can check a prospect's address during research, before creating a CRM record, or right before proposing an outreach sequence. The agent gets back a machine-readable result and can apply rules for valid, invalid, disposable, catch_all, or unknown outcomes.

Configure the MCP Connection

Start by creating or locating your RichAPI API key, then add the RichAPI MCP server to the configuration your agent environment uses. Store the secret in an environment variable or a protected secret store—never in prompts, shared project files, or client-side code.

A typical setup looks like this:

  1. Register the RichAPI MCP server in Claude, Cursor, or Windsurf.
  2. Pass the API key through the environment configuration.
  3. Restart the agent client so the tool manifest loads.
  4. Confirm the email verification tool appears.
  5. Test with a non-production contact before enabling any CRM actions.

The tool definition usually describes the operation name, the required email input, optional depth or provider preferences, and the response fields. Your client's current RichAPI documentation is the source of truth for exact server names and configuration syntax.

Give the agent permission to verify addresses first, but keep CRM writes and campaign enrollment behind explicit workflow rules.

Design Safe Agent Workflows

An AI SDR shouldn't treat every response as a green light to send. Store the verification result, confidence score, flags, timestamp, and request identifier, then apply deterministic business logic outside the model.

Here's how that logic typically breaks down:

  • valid allows enrichment or review.
  • disposable routes the contact to suppression.
  • catch_all requires human approval.
  • invalid prevents sequence enrollment.
  • unknown triggers a later retry.

A conversation might play out like this:

  1. Agent: "I found Alex at example.com. Should I verify the address?"
  2. User: "Yes."
  3. Agent invokes the RichAPI verification tool with the email.
  4. Tool returns valid, confidence, risk flags, and request ID.
  5. Agent reports the result and waits for approval before writing or sending.

Because MCP tools can fire during multi-step tasks, log every invocation and gate destructive actions with separate permissions. For deeper pipeline patterns, cross-reference the REST endpoint reference and RichAPI.

Email verification improves deliverability by keeping malformed, inactive, disposable, and risky addresses out of your campaigns. That said, an email verification API reports address signals — it does not guarantee inbox placement, consent, or engagement. Think of its response as one control point within a broader sending process, not a final verdict.

A printed email deliverability performance report on a desk, highlighting inbox placement rates, metrics, and data visualizations.

Connect Verification With Reputation

Every rejected message wastes sending capacity and generates negative performance signals. Repeatedly mailing invalid addresses also muddies your ability to distinguish real engagement from list decay, which puts avoidable pressure on your sending reputation.

List hygiene protects the domain behind your outreach. Store the verification result, confidence score, flags, timestamp, and request ID — then use those fields to separate clean contacts from records that need a second look.

Verification reduces preventable failures, but authentication, consent, suppression rules, engagement monitoring, and responsible volume still determine overall deliverability.

Use a clear decision table to keep pipeline logic consistent:

Verification StatePipeline Action
validPermit campaign eligibility, subject to consent and engagement rules
invalidSuppress immediately and request corrected data
disposableExclude from durable B2B sequences
catch_allReview manually or test with conservative sending
unknownRetry later instead of treating it as a hard failure

Place Checks Throughout the Pipeline

Verification works best when it is distributed across operational checkpoints rather than reserved for campaign day alone.

  1. Lead capture: Check syntax immediately, then verify before saving or activating the record. This stops obvious errors from spreading into downstream systems.
  2. Enrichment: Verify newly found work addresses before assigning ownership or adding them to a sequence. Provider data can be stale even when the contact profile looks current.
  3. Campaign launch: Recheck records collected earlier, especially addresses untouched for several months. This catches job changes, retired domains, and newly risky mailboxes.
  4. Database maintenance: Schedule recurring reviews based on contact age, campaign frequency, and historical bounce behavior. Prioritize old, inactive, or previously uncertain records.

For launch-specific workflows, read the guide to verifying contacts before a sequence push. It pairs naturally with the result-state logic described in the response-code reference below.

Balance Depth and Speed

Not every workflow needs the same verification depth. A signup form benefits from a fast syntax and domain decision, while a high-volume outbound campaign may justify mailbox signals and risk classification before sending.

  • Interactive forms: Use the quickest dependable check so validation does not interrupt conversion.
  • CRM enrichment: Run deeper verification asynchronously before records become campaign eligible.
  • Campaign launches: Prefer freshness and confidence over minimum latency.
  • Large databases: Batch records, retry unknown outcomes, and process older contacts first.

Finally, measure bounce rate, inbox placement, complaint rate, and engagement by verification state. That feedback shows whether stricter suppression rules actually improve outcomes — letting your pipeline become more selective without discarding useful contacts unnecessarily.

Plan Verification Spend

RichAPI draws from a single shared credit pool that covers email verification, email finding, phone lookup, company enrichment, and other go-to-market endpoints. Teams can move spend between workflows without juggling separate plans for each data category.

A typical campaign might use credits to find work emails, verify them, enrich the associated companies, and surface reachable phone numbers. Since every call pulls from the same balance, budget planning works best when you start with expected workflow volume rather than counting individual endpoint calls.

Estimate Monthly Usage

A straightforward formula keeps projections grounded:

Records × expected successful results × endpoint credit cost = projected credits

Say you verify 10,000 addresses and roughly 70% come back as successful results. At one credit per successful verification, the math looks like this:

10,000 × 0.70 × 1 = 7,000 credits

Failed lookups cost nothing, so the remaining 3,000 unsuccessful attempts don't add to the bill. Compare that with a traditional per-record model charging $0.02 per attempt: those same 10,000 requests would run $200, regardless of outcome.

ModelCalculationCost Basis
RichAPI7,000 successful resultsSuccessful results only
Per-record pricing10,000 × $0.02Every submitted record
Zero-credit misses make testing, fallback routing, and database cleanup far easier to forecast.

Read Execution Logs

Execution logs record which providers were tried, which one returned the result, and what got billed. Pull these entries whenever costs or response patterns shift, particularly after you increase verification depth or layer in enrichment steps.

Logs help surface:

  • Repeated misses, often a sign of weak source data.
  • Provider timeouts, which can explain slower-than-usual results.
  • Unexpected billed calls, frequently pointing to duplicated workflow steps.
  • High-volume stages, where verification should happen earlier in the chain.

Running verification before expensive enrichment or campaign activation prevents downstream credits from burning through records that fail basic email checks.

Finally, set aside part of the shared balance for priority workflows, track credit consumption by endpoint on a weekly basis, and apply idempotency controls so retries don't double-bill successful requests. That keeps enrichment costs predictable while leaving room to flex across go-to-market operations.

How Accurate Is an Email Verification API?

Accuracy varies based on provider coverage, mailbox behavior, and how deep the verification goes. A valid result means the address can receive mail, but it says nothing about whether the recipient will actually see it, opted in, or engage. You'll want to weigh confidence scores, risk flags, and verification timestamps alongside the status itself.

For high-value leads, re-run verification right before you reach out. And don't auto-suppress unknown results—route them to a review queue instead. Temporary provider hiccups can look a lot like genuinely uncertain mailboxes, and you don't want to lose a good contact over a timeout.

How Fast Are Verification Requests?

Single-address checks work well for real-time workflows like lead capture or CRM inserts. When you're dealing with larger lists, switch to asynchronous bulk jobs with webhooks so you're not holding up automation with long-running requests.

Here's how to route things:

  • One record: synchronous verification is fine.
  • Small batches: cap concurrency and build in retries for transient failures.
  • Large datasets: submit bulk jobs and handle results through webhook events.

Will It Integrate With My CRM?

In most cases, integration boils down to a server-side request and a field mapping for status, confidence, is_disposable, is_role_based, is_catch_all, request_id, and timestamp. Keep verification logic separate from campaign enrollment—a CRM field update shouldn't automatically kick off an email sequence.

A verification result should inform your workflow decisions, not override consent requirements or sending policies.

How Should Catch-All Results Be Handled?

A catch_all domain accepts mail for just about any address at that domain, so you can't be confident a specific mailbox exists. Keep the record in play for manual review, enrichment, or very cautious outreach, but don't treat it the same as a verified, high-confidence address.

How Do I Protect API Keys?

Store keys in server-side environment variables or a managed secret store. Never put them in browser code, public prompts, repositories, or client-side applications. The Wiz investigation of exposed API credentials shows how a misconfigured setup can leak private data and open the door to account takeover.

For a unified REST and MCP workflow, check out RichAPI at https://richapi.ai.

More from the blog