The EmailKit API lets you integrate email verification directly into your applications, CRMs, sign-up forms, and workflows. Everything you can do from the dashboard — single verification, bulk verification, credit checks — is available via the API.
https://api.emailkit.dev/api/v1All API requests require a Bearer token. Use your API key (prefixed with ek_) in the Authorization header:
Authorization: Bearer ek_your_api_key_hereMethod | Endpoint | Description |
|---|---|---|
POST |
| Verify a single email address |
POST |
| Verify up to 100 emails synchronously |
POST |
| Submit a bulk verification job (up to 10,000 emails) |
GET |
| Check the status of a bulk job |
GET |
| Download bulk job results |
GET |
| Check your credit balance |
POST |
| Create a webhook |
GET |
| List your webhooks |
DELETE |
| Delete a webhook |
Verify a single email:
curl -X POST https://api.emailkit.dev/api/v1/verify \
-H "Authorization: Bearer ek_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com"}'Response:
{
"email": "test@example.com",
"status": "deliverable",
"reason": "valid_mailbox",
"isDeliverable": true,
"isDisposable": false,
"isRoleBased": false,
"isCatchAll": false
}50 requests per second per API key
30 concurrent requests per API key
If you exceed these limits, you'll receive a 429 Too Many Requests response. Implement exponential backoff in your integration to handle rate limiting gracefully.
For retry safety, include an Idempotency-Key header (UUID format) with your requests. If you send the same request with the same idempotency key within 24 hours, you'll get the cached response instead of being charged again.
curl -X POST https://api.emailkit.dev/api/v1/verify \
-H "Authorization: Bearer ek_your_api_key_here" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-d '{"email": "test@example.com"}'All errors return standard HTTP status codes with a JSON body:
{
"error": "Insufficient credits",
"code": "INSUFFICIENT_CREDITS"
}Status Code | Meaning |
|---|---|
400 | Bad request — invalid input |
401 | Unauthorized — invalid or missing API key |
402 | Insufficient credits |
429 | Rate limit exceeded |
500 | Server error — retry with backoff |