BOUNCELAYER API V1.4 & MCP PROTOCOL

Email Verification API & Developer Integration Hub

Integrate BounceLayer's sub-140ms email verification API and email validation service via standard REST endpoints, official language SDKs, or directly inside AI agents (Cursor, Claude, Windsurf) through our native Model Context Protocol (MCP) server.

Native AI Agent Ready (MCP)

Verify Emails Directly Inside Your AI Agent or IDE

Equip Claude Code, Cursor, Windsurf, or custom LangChain agents with real-time email verification. Run our official MCP server launcher with one command:

claude mcp add --transport http bouncelayer https://bouncelayer.com/mcp/ --header "X-API-Key: bl_live_..."

1. Authentication & API Keys

All requests to the BounceLayer API require an API key passed in the X-API-Key header or as a Bearer token. Generate keys inside your API Keys Dashboard.

Header: X-API-Key: bl_live_a1b2c3d4e5f6...
Base URL: https://bouncelayer.com/api/v1 (or https://api.bouncelayer.com/v1)

2. Real-Time Single Verification

POST /api/v1/verify/single

Executes a live 7-layer verification in under 150ms. Checks syntax, authoritative DNS, MX hosts, disposable firewalls, and conducts a direct TCP port 25 SMTP handshake to confirm whether the recipient mailbox accepts mail.

Billing Rule:

Deducts 1 credit for deliverability verdicts (valid, invalid, catch_all, do_not_mail). Unknown results are 100% free (0 credits charged).

3. Asynchronous Bulk Verification

POST /api/v1/verify/bulk

Process lists of up to 10,000 addresses in parallel. Specify an optional webhook_url to receive cryptographic HMAC-signed notifications when verification finishes.

EndpointMethodCostDescription
/api/v1/verify/bulkPOSTReserves NQueue batch job
/api/v1/verify/bulk/{id}GETFREEPoll status & results
/api/v1/verify/bulk/{id}DELETEFREECancel & release credits
/api/v1/verify/bulk/{id}/downloadGETFREEExport CSV/JSON results

4. Granular Status Reason Matrix

BounceLayer provides machine-readable diagnostic reasons for every single evaluation so automated pipelines can filter leads with pinpoint accuracy:

status_reasonPrimary StatusCredit CostExplanation
mailbox_confirmedvalid1 CreditRemote mail server confirmed mailbox exists with 250 OK
mailbox_not_foundinvalid1 CreditRemote mail server returned 550 User Unknown
failed_syntax_checkinvalid1 CreditMalformed address failing RFC 5322 structure
no_dns_entriesinvalid1 CreditTarget domain does not exist in public authoritative DNS
no_mx_recordsinvalid1 CreditDomain has no valid Mail Exchanger (MX) records
disposabledo_not_mail1 CreditMatches 100,000+ temporary burner domains
role_baseddo_not_mail1 CreditGeneric departmental account (e.g. info@, support@)
accept_allcatch_all1 CreditDomain accepts all addresses; specific mailbox cannot be isolated
antispam_systemunknown0 Credits (Free)Remote MTA blocked probe or requires human challenge
failed_smtp_connectionunknown0 Credits (Free)TCP port 25 connection timed out or dropped
greylistingunknown0 Credits (Free)Remote MTA deferred connection per greylisting policy

5. HTTP Error Standards & Rate Limits

StatusCode MeaningHandling Strategy
401 UnauthorizedInvalid or missing API keyVerify X-API-Key header
402 Payment RequiredZero credits remainingTop-up credits in dashboard
413 Payload Too LargeBatch exceeded 10,000 limitChunk requests into 10K batches
429 Rate LimitedPer-minute threshold metInspect Retry-After header and back off

6. Webhooks & Real-Time Event Streaming

Configure in Dashboard →

Receive instant HTTP POST notifications whenever asynchronous bulk list jobs finish or verification thresholds are met. Configure a persistent endpoint in the Webhooks Dashboard or supply a per-job webhook_url on submission.

Event NameTrigger PointIncluded Payload Data
job.completedBulk list verification finishestotal_emails, valid_count, invalid_count, results_url
job.startedTaskiq worker begins processingjob_id, started_at, total_emails
job.failedWorker encountered unrecoverable errorjob_id, error_message
verification.completedSingle verification event (stream)email, status, confidence_score, latency_ms
job.cancelledJob manually stoppedjob_id, credits_refunded
Cryptographic HMAC-SHA256 Signature Headers
Security Standard

Every webhook request delivers an X-BounceLayer-Signature header computed over the exact UTF-8 raw request payload using your secret key:

X-BounceLayer-Signature: 8f9b2c... (hex digest of HMAC-SHA256)
X-BounceLayer-Event: job.completed
Automatic Retry & Exponential Backoff Policy:

Your webhook destination must return an HTTP 2xx status within 5 seconds. If your endpoint returns 4xx/5xx or times out, BounceLayer automatically retries up to 5 times using exponential backoff:Attempt 1: immediate → Attempt 2: +1 min → Attempt 3: +2 min → Attempt 4: +4 min → Attempt 5: +8 min

curl -X POST https://bouncelayer.com/api/v1/verify/single \
  -H "X-API-Key: bl_live_9a8b7c6d5e4f3a2b1c0d" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "alex@company.com"
  }'
Live Response Simulator200 OK
{
  "success": true,
  "credits_used": 1,
  "result": {
    "email": "alex@company.com",
    "status": "valid",
    "is_valid": true,
    "syntax_valid": true,
    "domain": "company.com",
    "domain_valid": true,
    "has_mx": true,
    "mx_records": [
      {
        "priority": 10,
        "host": "aspmx.l.google.com"
      }
    ],
    "smtp_checked": true,
    "smtp_response_code": 250,
    "is_disposable": false,
    "is_role_based": false,
    "is_catch_all": false,
    "is_free_provider": false,
    "confidence_score": 98,
    "status_reason": "mailbox_confirmed",
    "provider": "google",
    "verification_time_ms": 138,
    "cached": false
  }
}