API Documentation
Everything you need to integrate email verification into your application.
Overview
The verify-email.net API lets you verify email addresses in real-time. Each verification runs syntax validation, MX record lookup, SMTP mailbox check, catch-all detection, disposable domain detection, and role-based address detection.
Base URL:
All API responses are JSON. Dates are ISO 8601 strings (UTC).
Authentication
Authenticated endpoints accept two methods:
API Key (recommended for server-side)
Bearer Token (for browser/dashboard)
Create API keys in your dashboard. Keys start with ve_live_ and are shown once at creation. Store them securely.
Rate Limits
| Tier | Limit | Scope |
|---|---|---|
| Free demo | 3 verifications / day | Per IP address |
| Pro (API) | 100 requests / minute | Per account |
| Bulk jobs | 10,000 emails / job, 3 concurrent jobs | Per account |
When rate limited, the API returns 429 Too Many Requests.
Errors
Errors return a JSON object with an error field:
| Status | Meaning |
|---|---|
| 400 | Bad request (missing or invalid parameters) |
| 401 | Authentication required or invalid credentials |
| 403 | Paid subscription required |
| 404 | Resource not found |
| 409 | Conflict (e.g. email already registered) |
| 429 | Rate limit exceeded |
| 500 | Server error |
Demo Verify
Free verification for trying the service. Limited to 3 per day per IP address. No authentication required.
| Parameter | Type | Description |
|---|---|---|
email | string | Email address to verify REQUIRED |
Example:
Response:
Single Verify
Verify a single email address. Requires authentication and a paid subscription.
| Parameter | Type | Description |
|---|---|---|
email | string | Email address to verify REQUIRED |
Headers:
Example:
Response:
Each successful verification is counted toward your monthly usage and billed at $0.003.
Bulk Verify
Submit up to 10,000 emails for background verification. Results are processed asynchronously.
Request body (JSON array):
Or CSV text:
Example:
Response:
Bulk Job Status
Check the progress of a bulk verification job. Once completed, results are included in the response.
Response (in progress):
Response (completed): includes results array with all individual verification results.
Download Results (CSV)
Returns a CSV file with columns: email, score, verdict, status.
API Keys
List all API keys for the authenticated user.
Create a new API key. Requires paid subscription.
| Body Parameter | Type | Description |
|---|---|---|
name | string | Display name for the key (optional, defaults to "Default") |
Revoke an API key. It will immediately stop working.
Usage
Current month usage with daily breakdown.
Monthly usage history (up to 24 months).
Billing
Billing is managed through Stripe. The Pro plan costs $3/month base fee plus $0.003 per verification.
Get current billing status and estimated cost.
Create a Stripe Checkout session to subscribe. Returns a URL to redirect the user to.
Create a Stripe Billing Portal session to manage subscription, update payment method, or cancel. Returns a URL.
Verdicts & Scores
Each verification returns a score (0–100) and a verdict:
| Verdict | Score Range | Meaning |
|---|---|---|
| deliverable | 80–100 | Email address exists and can receive mail |
| risky | 40–79 | Email may exist but has risk factors (catch-all, disposable, etc.) |
| undeliverable | 0–39 | Email does not exist or cannot receive mail |
| unknown | 40–60 | Could not determine deliverability (timeout, greylisting) |
Score Modifiers
| Factor | Effect |
|---|---|
| SMTP 250 response | Base score 95 |
| SMTP 550 rejection | Base score 10 |
| SMTP timeout / error | Base score 50 |
| No MX records | Score 0 |
| Catch-all domain | Capped at 70 |
| Disposable domain | -40 penalty |
| Role-based address | -10 penalty |
Check Types
| Check | Field | Description |
|---|---|---|
| Syntax | checks.syntax | Validates email format (RFC 5321), length limits, allowed characters |
| Disposable | checks.disposable | Checks against 1,190+ known temporary/throwaway email domains |
| Role-based | checks.role_based | Detects generic addresses like admin@, info@, support@, noreply@ |
| MX Records | checks.mx | Looks up DNS MX records to verify the domain can receive email |
| SMTP | checks.smtp | Connects to the mail server and tests if the mailbox accepts mail (RCPT TO) |
| Catch-all | checks.catch_all | Probes with a random address to detect domains that accept all mail |