Email Validation API for Developers

A real-time email verification API: send up to 100 addresses in one request and get back a 0-10 score, a classifier and the reason for each.

200 free validations · No credit card

Example request to the email validation API and its response
POST/v1/email/validate

{ "emails": ["john@gmai.com"] }

syntax
"pass"
mx
"fail"
score
0
classifier
"invalid"
didYouMean
"john@gmail.com"

Selected response fields for an address whose domain has no MX records.

100
Emails per request
0-10
Score per address
200
Free validations

Simple Integration

Validate an email with one request

Copy and paste one of these examples to validate your first email address.

cURL

curl -X POST https://api.campaignkit.cc/v1/email/validate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"emails": ["test@example.com"]}'

JavaScript (Node.js 18+)

const response = await fetch('https://api.campaignkit.cc/v1/email/validate', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ emails: ['test@example.com'] })
});

const data = await response.json();
console.log(`Classifier: ${data.results[0].result.classifier}`);
console.log(`Score: ${data.results[0].result.score}/10`);

Python

import requests

response = requests.post(
    'https://api.campaignkit.cc/v1/email/validate',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={'emails': ['test@example.com']}
)

data = response.json()
result = data['results'][0]['result']
print(f"Classifier: {result['classifier']}")
print(f"Score: {result['score']}/10")

What the email validation API returns

Each request to the email address validation API returns the same result object per address: syntax, MX and mailbox checks, a score from 0 to 10, a classifier, description flags and the SMTP response. The response also tells you how many credits the call used.

Example response for a mistyped domain

{
  "creditsUsed": 1,
  "results": [
    {
      "email": "john@gmai.com",
      "contextId": "",
      "result": {
        "syntax": "pass",
        "mx": "fail",
        "mailbox": "",
        "score": 0,
        "description": ["domain", "didYouMean"],
        "classifier": "invalid",
        "smtpResponse": "",
        "didYouMean": "john@gmail.com",
        "didYouMeanDomain": "gmail.com"
      }
    }
  ]
}

Example built from the documented response format: an address whose domain has no MX records. The domain check fails, so the score is 0, and because the domain looks like gmail.com, the result suggests a correction you can show to the user. The mailbox field stays empty because validation stopped at the domain check.

valid
No risk flag found. Score 10 when the mailbox was confirmed, 9 on a catch-all domain, and lower when the mailbox couldn't be verified.
risky
A role address (info@, sales@), a disposable address, a blocked local part such as abuse@, or a domain on a blocklist. Scores vary; decide per use case.
invalid
The syntax, domain or mailbox check failed. The score is always 0.

Flags you can see in description: syntax, domain, mailbox, verifyRejected, catchAll, role, disposable, blacklist and didYouMean. A passed mailbox check on a catch-all domain doesn't prove the address exists. See how the score is calculated.

Real-time or bulk: pick how you validate

One API key works for all of them. Want to try a single address first, without a key? Use the free email verifier.

Real-time

POST /v1/email/validate

Up to 100 addresses per request, with results in the response. Use it in signup and checkout forms.

Email validation docs →

Bulk jobs

POST /v1/email/validate/job

Upload a file or paste a list, poll the job, then read the results or download a CSV. The bulk email validation API for lists too big for one request.

Validation jobs docs →

Webhooks

validation.job.completed

Get a POST when a job finishes, signed with HMAC-SHA256 in the X-Webhook-Signature header.

Webhooks docs →

MCP server

POST /v1/mcp/sse

Five tools that let AI assistants such as Claude validate emails and run jobs with your API key.

MCP server docs →

Each address that passes the syntax check uses one credit, and credits never expire. See pricing.

Quick Start

Integrate in 3 Simple Steps

From signup to your first response in a few requests.

1Get Your API Key

Sign up for free and generate your API key from the dashboard in seconds. No credit card required to start.

2Make Your First Request

Use our REST API to validate emails with a simple POST request. Get instant results with detailed validation data.

3Integrate & Scale

Add validation to your forms, CRM, or workflows. Process single emails or batch validate up to 100 at once.

Developer Experience

An email verification API built for developers

Everything you need for a smooth integration experience.

Simple REST API
Clean, intuitive RESTful API design with JSON requests and responses. No SDK required.
Comprehensive Documentation
Detailed API docs with code examples in multiple languages and step-by-step guides.
Batch Validation
Validate up to 100 email addresses in a single API request for efficient bulk processing.
Webhook Support
Receive real-time notifications when validation jobs complete with HMAC signature verification.
Detailed Response Data
Rich validation results with syntax, MX, mailbox checks, scores, classifiers, detailed flags and typo suggestions (didYouMean).
Credits, Not Plans
Pay per validation with credits that never expire. The response tells you how many credits each call used.
Multi-Language Support
Works with any language that can make HTTP requests. Examples provided for JavaScript, Python, PHP.
Secure Authentication
Simple Bearer token authentication with API key management in your dashboard.

Use Cases

When to Use Email Validation API

Common scenarios where email validation adds value to your applications.

Form Validation

Validate email addresses in real-time as users submit forms to prevent invalid data from entering your system.

  • User registration
  • Newsletter signups
  • Contact forms
  • Lead capture

List Cleaning

Bulk validate your existing email lists to improve deliverability and reduce bounce rates.

  • Contact databases
  • Marketing lists
  • CRM data cleanup
  • User database maintenance

CRM Integration

Automatically validate new contacts as they're added to your CRM or customer database.

  • Salesforce integration
  • HubSpot workflows
  • Custom CRM systems
  • Data enrichment pipelines

E-commerce Checkout

Catch typos and undeliverable addresses at checkout so order confirmations arrive.

  • Order confirmations
  • Account creation
  • Typo correction with didYouMean
  • Guest checkout

Developer FAQ

Common questions about integrating the API. Can't find what you need? Check our full documentation or contact support.

What does an email verification API check?
For each address, the API checks the syntax, looks up the domain's MX records and asks the mail server whether the mailbox exists (an SMTP handshake; no email is sent). It also flags disposable, role, catch-all and blacklisted addresses, then returns a 0-10 score and a valid, risky or invalid classifier.
How do I authenticate API requests?
Use Bearer token authentication by including your API key in the Authorization header: "Authorization: Bearer YOUR_API_KEY". You can generate API keys in your dashboard under API Settings.
Is there a free email validation API?
Every new account gets 200 free validations with no credit card, and they work with the API. After that you pay per validation. There is no unlimited free tier.
Can I validate emails in bulk?
Yes. You can send up to 100 email addresses in a single real-time request. For larger lists, create a validation job with a file or pasted list, then poll its status or get a webhook when it completes.
How much does each validation cost?
Each address that passes the syntax check uses one credit, and the response includes a "creditsUsed" field. Pricing is pay as you go: $6 for 2,500 validations ($0.0024 each) down to $120 for 100,000 ($0.0012 each). Credits never expire, and every new account gets 200 free validations.
Do you have webhooks?
Yes. You can create webhook subscriptions to receive POST notifications when validation jobs complete. Webhooks include HMAC-SHA256 signatures for security verification. See our webhook documentation for setup instructions.
Can AI assistants call the API?
Yes. CampaignKit runs an MCP server at https://api.campaignkit.cc/v1/mcp/sse with five tools: validate_email, create_validation_job, get_job_status, get_job_results and get_validation_stats. Clients such as Claude connect with your API key.
What language SDKs are available?
Our REST API works with any language that can make HTTP requests. We provide code examples for JavaScript (Node.js), Python, and PHP in our documentation. No official SDKs are required—the API is simple enough to integrate directly.
What data is returned in the response?
Each address returns: the email, syntax, MX and mailbox checks (pass, fail or n/a; mailbox is empty when validation stops before the mailbox check), a score from 0 to 10, a classifier (valid, risky or invalid), description flags (such as disposable, role and catchAll), the SMTP response, and a didYouMean suggestion when the domain looks like a typo of a well-known provider. The response also reports creditsUsed.

Ready to get started?Start validating emails in minutes.