Skip to main content
On-demand endpoint + built into the buyer intent endpoints

Know before you hit send

Verify any address on demand with POST /v1/emails/verify, single or 1,000 per bulk call. And every intent contact ships with an email_validation_status; pass the email_validated filter and only verified emails come back.

Verification as data

Already verified when it arrives

Instead of checking addresses after you source them, source contacts whose emails are already verified.

01

Status on Every Contact

Each contact returned by the buyer intent endpoints carries an email_validation_status field - the verification work is already done.

02

Verified-Only Filter

Pass email_validated: true and only contacts with a verified email come back. No post-processing, no second vendor.

03

Works in Bulk Exports

The same filter applies to async JSONL exports, so entire lists arrive pre-verified and ready for your sequencer.

04

Fair Billing

On-demand checks cost 1 credit per email verified. Unknown results are free, and upstream failures are never charged. Intent contacts include verification in their 1 credit.

What you get back

Send-ready contacts, not a raw boolean.

Validation Status

Core

email_validation_status on every contact - values like 'Valid (Esp)' and 'Valid (Digital)'.

Contact Details

Person

Name, job title, LinkedIn URL, and mobile phone where available.

Company Firmographics

Company

Employer name, domain, industry, revenue and employee-count buckets.

Intent Context

Intent

The topics each contact's company is researching, from a 38,000+ topic catalog.

Targeting Filters

Filters

Seniority, department, has_email, has_mobile, and email_validated request filters.

Cursor Pagination

Scale

Keyset pagination via next_cursor for stable iteration over large result sets.

Integration

Pick your language

Two patterns: verify any address on demand, or source contacts that arrive already verified. Works from any language.

1. Verify any address on demand

Send one address to POST /v1/emails/verify and get a deliverability verdict back in a single synchronous call.

curl -X POST \
  'https://signals.autobound.ai/v1/emails/verify' \
  -H 'X-API-KEY: your_api_key' \
  -H 'Content-Type: application/json' \
  -d '{
    "email": "jane@stripe.com"
  }'

Response

verify-response.json
{
  "result": {
    "email": "jane@stripe.com",
    "result": "deliverable",
    "confidence": 0.99,
    "reason": "accepted_email",
    "risk_level": "low",
    "details": {
      "is_free_provider": false,
      "is_disposable": false,
      "is_role_account": false,
      "is_catch_all": false,
      "has_mx_record": true,
      "email_provider": "google",
      "domain_age_days": 6205,
      "suggested_correction": null
    },
    "validated_at": "2026-08-07T18:24:05.312Z"
  }
}

The verdict lives in result: one of deliverable, undeliverable, risky, or unknown, with a 0 to 1 confidence score and a machine-readable reason. The details block flags catch-all domains, disposable and role accounts, and even suggests a correction for likely typos.

Bulk verify (up to 1,000 per call)

Have a list? Post up to 1,000 addresses to POST /v1/emails/verify/bulk in one request. Duplicates are collapsed and only charged once.

curl -X POST \
  'https://signals.autobound.ai/v1/emails/verify/bulk' \
  -H 'X-API-KEY: your_api_key' \
  -H 'Content-Type: application/json' \
  -d '{
    "emails": [
      "jane@stripe.com",
      "no-such-user@acme.co"
    ]
  }'

Response

verify-bulk-response.json
{
  "verifications": [
    {
      "email": "jane@stripe.com",
      "result": "deliverable",
      "confidence": 0.99,
      "reason": "accepted_email",
      "risk_level": "low",
      "details": {
        "is_free_provider": false,
        "is_disposable": false,
        "is_role_account": false,
        "is_catch_all": false,
        "has_mx_record": true,
        "email_provider": "google",
        "domain_age_days": 6205,
        "suggested_correction": null
      },
      "validated_at": "2026-08-07T18:24:07.918Z"
    },
    {
      "email": "no-such-user@acme.co",
      "result": "undeliverable",
      "confidence": 0.99,
      "reason": "mailbox_not_found",
      "risk_level": "high",
      "details": {
        "is_free_provider": false,
        "is_disposable": false,
        "is_role_account": false,
        "is_catch_all": false,
        "has_mx_record": true,
        "email_provider": "unknown",
        "domain_age_days": 3121,
        "suggested_correction": null
      },
      "validated_at": "2026-08-07T18:24:07.918Z"
    }
  ],
  "summary": {
    "total": 2,
    "deliverable": 1,
    "undeliverable": 1,
    "risky": 0,
    "unknown": 0
  },
  "errors": [],
  "validated_at": "2026-08-07T18:24:07.918Z"
}

Each address gets the same per-email result shape, and the summary block gives you counts by verdict so you can gate a send without iterating the list. Billing is 1 credit per email verified; results that come back unknown are free, and upstream failures are never charged. Full endpoint details are in the API reference.

2. Source contacts already verified

Skip the verification step entirely: pass email_validated: true to POST /v1/buyer-intent/contacts and only contacts with a verified email come back.

curl -X POST \
  'https://signals.autobound.ai/v1/buyer-intent/contacts' \
  -H 'X-API-KEY: your_api_key' \
  -H 'Content-Type: application/json' \
  -d '{
    "topic_ids": ["b2b_2990"],
    "email_validated": true,
    "seniority": ["Vp", "Cxo"],
    "page_size": 50
  }'

Response

response.json
{
  "contacts": [
    {
      "topic_id": "b2b_2990",
      "intent_score": 12,
      "contact": {
        "first_name": "Jane",
        "last_name": "Doe",
        "email": "jane@stripe.com",
        "email_validation_status": "Valid (Esp)",
        "job_title": "VP of Engineering",
        "linkedin_url": "https://linkedin.com/in/jane-doe"
      },
      "company": {
        "name": "Stripe",
        "domain": "stripe.com",
        "industry": "Financial Services"
      }
    },
    {
      "topic_id": "b2b_2990",
      "intent_score": 8,
      "contact": {
        "first_name": "Sam",
        "last_name": "Roe",
        "email": "sam@acme.co",
        "email_validation_status": "Valid (Digital)",
        "job_title": "CTO",
        "linkedin_url": "https://linkedin.com/in/sam-roe"
      },
      "company": {
        "name": "Acme",
        "domain": "acme.co",
        "industry": "Software"
      }
    }
  ],
  "count": 2,
  "page_size": 50,
  "next_cursor": "eyJvZmZzZXQiOjUwfQ"
}

Every contact carries an email_validation_status showing how the address was verified, so lists go straight from API to sequencer.

Bulk export (async JSONL)

curl -X POST \
  'https://signals.autobound.ai/v1/buyer-intent/contacts/export' \
  -H 'X-API-KEY: your_api_key' \
  -H 'Content-Type: application/json' \
  -d '{
    "topic_ids": ["b2b_2990", "b2b_27322"],
    "email_validated": true,
    "limit": 10000
  }'

Exports run asynchronously: submit the job via POST /v1/buyer-intent/contacts/export, poll GET /v1/buyer-intent/exports/{id} until ready, then download the signed JSONL file. The email_validated filter applies to exports too.

Built for signal-driven teams

Send-ready intent lists

Pull contacts showing purchase intent with verified emails in one query. Straight from API to sequencer.

Sender reputation protection

Only verified addresses enter your outreach pipeline, so bounce rates stay low and deliverability stays healthy.

AI SDR guardrails

Wire email_validated: true into your autonomous sending pipeline so AI agents only ever email verified addresses.

List building at scale

Async JSONL exports deliver thousands of pre-verified contacts per job, filtered by topic, seniority, and department.

CRM data quality

Store the validation status alongside each contact and route verified addresses to sequences with confidence.

Lead scoring enrichment

Use validation status as a scoring input: contacts with verified emails get priority in routing and sequencing.

FAQ

Two ways. On-demand: submit any address to POST /v1/emails/verify (or up to 1,000 at once to /v1/emails/verify/bulk) and get back a deliverability verdict. Pre-computed: every contact returned by the buyer intent endpoints already carries an email_validation_status field, so sourced contacts arrive verified without an extra call.

Pass email_validated: true in your request to POST /v1/buyer-intent/contacts (or the bulk export endpoint). Only contacts whose email has a verified validation status are returned. Combine it with has_email, seniority, and department filters to build send-ready lists.

A string describing how the address was validated - values like 'Valid (Esp)' (validated against the email service provider) or 'Valid (Digital)'. Contacts whose email has not been validated return null, and the email_validated filter excludes them.

On-demand verification costs 1 credit per email verified. Results that come back unknown are free, and upstream failures are never charged. For buyer-intent contacts there is no extra charge: the validation status and the email_validated filter are included in the 1 credit per contact returned, and zero-result requests are free.

Yes. POST /v1/emails/verify checks a single address, and POST /v1/emails/verify/bulk checks up to 1,000 per call. Each costs 1 credit per email verified. Results that come back unknown are free, and upstream failures are never charged.

Get your first verified contacts

1 credit per email verified, unknown results free. Intent contacts include verification in their 1 credit per contact.