Quickstart
Create an API key in the Dashboard, keep it on your server, and send it as a Bearer credential. A verification request accepted for processing consumes one credit.
curl -sS -X POST 'https://api.verifyemail.net/api/v1/verifications' \
-H 'Authorization: Bearer ve_live_your_api_key' \
-H 'Content-Type: application/json' \
-d '{"address":"[email protected]"}'{
"errcode": 0,
"address": "[email protected]",
"is_deliverable": true,
"status": 250,
"catch_all": false,
"disposable": false
}Authentication
Create an API key in your dashboard: Dashboard → API keys
The complete ve_live_… value is shown only once.
Verify an email
/verificationsRequest body
| Field | Type | Required | Description |
|---|---|---|---|
| address | string | Yes | A complete email address. |
Response fields
| Field | Type | Description |
|---|---|---|
| errcode | number | 0 means the request succeeded. Handle other values using the error table. |
| address | string | The normalized email address. |
| is_deliverable | boolean | Whether the receiving server accepts the recipient. |
| status | number | null | The numeric SMTP response code, or null when no SMTP response was received. |
| catch_all | boolean | null | Whether the domain accepts every recipient. Null means no reliable conclusion. |
| disposable | boolean | Whether the address belongs to a disposable email domain. |
250 · HTTP 200 · errcode 0
The receiving server accepted the recipient.
550 · HTTP 200 · errcode 0
The domain or receiving server rejected the recipient.
null · HTTP 422
The address is invalid or cannot be verified.
null · HTTP 503
No reliable conclusion is available; retry later.
A GET form is also available at the endpoint below. POST is recommended so addresses do not appear in proxy access logs or browser history: /verifications?address=…
Check remaining credits
/usageThis request does not consume a verification credit. Dashboard sessions and every API key owned by the same user share one allowance.
curl -sS 'https://api.verifyemail.net/api/v1/usage' \
-H 'Authorization: Bearer ve_live_your_api_key'{
"errcode": 0,
"verification_limit": 100,
"verification_used": 1,
"remaining_verifications": 99,
"unlimited": false
}| Field | Type | Description |
|---|---|---|
| verification_limit | number | The current total allowance. Zero means unlimited. |
| verification_used | number | The number of verification credits already used. |
| remaining_verifications | number | null | Credits still available. Null when the account is unlimited. |
| unlimited | boolean | Whether the current allowance is unlimited. |
Unlimited plans return remaining_verifications: null, unlimited: true.
Error codes
Use the numeric errcode for program logic. The human-readable message may change.
{
"errcode": 10006,
"message": "request rate limit exceeded"
}| errcode | HTTP | Meaning |
|---|---|---|
| 0 | 2xx | Success. |
| 10000 | 400 | Malformed request. Check JSON, headers, and the HTTP method. |
| 10001 | 400 / 422 | A parameter or business rule failed validation. |
| 10002 | 401 | The credential is missing, invalid, or expired. |
| 10003 | 403 | The account cannot access this resource. |
| 10004 | 404 | The requested resource does not exist. |
| 10005 | 409 | The resource conflicts with the current state. |
| 10006 | 429 | The per-second request limit was exceeded. |
| 10007 | 429 | Verification credits are exhausted. |
| 10008 | 429 | Service concurrency capacity is exhausted. |
| 10009 | 500 | An internal service error occurred. |
| 10010 | 503 | The service is temporarily unavailable or not configured. |
| 10011 | 502 | An upstream service returned an error. |
Rate-limit headers
Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset — describe the current request window.