Introducing OTP Email Service: Send verification codes with your custom template
https://api.emailkit.app/api/
EmailKit provides a powerful yet simple API for email validation. Our service helps you verify email addresses, prevent fake signups, and maintain clean email lists. With our generous free tier, you can validate up to 50,000 emails per month at no cost.
Get started with EmailKit in minutes. Follow these simple steps to begin validating email addresses.
Navigate to the Dashboard and create an API key. You can create up to 3 API keys for different environments or applications.
Use your API key to make your first email validation request.
curl -X POST \
https://api.emailkit.app/api/validate-email \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com"}'
Create separate API keys for development and production environments. This helps you track usage and maintain security.
All API requests require authentication using an API key. You can create up to 3 API keys in your dashboard. Include your API key in the Authorization header of all requests.
Example Request
curl -X POST \
https://api.emailkit.app/api/validate-email \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com"}'
/validate
Validate an email address and get detailed information about its validity, including format checking, domain validation, and disposable email detection.
EmailKit performs comprehensive real-time email validation through multiple verification steps.
All checks are performed in real-time for each request. The API returns results only after completing all validation steps or reaching the timeout limit.
Generate and verify secure one-time passwords with two flexible integration options. Both endpoints provide identical responses while offering different delivery methods. You can customise the OTP template to match your brand in the EmailKit dashboard.
/api/v2/generate-otp
Generates an OTP and automatically sends it using your custom email template via EmailKit's delivery service.
Headers Required
{
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
Request
{
"email": "user@example.com"
}
Response
{
"success": true,
"otp": "123456",
"expiresAt": "2024-02-20T15:30:00Z",
"email": "user@example.com"
}
/api/generate-otp
Generates an OTP and returns it for use with your own email delivery service.
Headers Required
{
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
Request
{
"email": "user@example.com"
}
Response
{
"success": true,
"otp": "123456",
"expiresAt": "2024-02-20T15:30:00Z",
"email": "user@example.com"
}
/api/verify-otp
Verifies an OTP and returns the result.
Headers Required
{
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
Request
{
"email": "user@example.com",
"otp": "123456"
}
Response
{
"success": true,
"message": "OTP verified successfully"
}
// Using EmailKit's email delivery service
const response = await fetch('https://api.emailkit.app/api/v2/generate-otp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY'
},
body: JSON.stringify({
email: 'user@example.com'
})
});
// Using your own email delivery service
const response = await fetch('https://api.emailkit.app/api/generate-otp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY'
},
body: JSON.stringify({
email: 'user@example.com'
})
});
We only count successful OTP generation and verification requests towards your monthly usage limit. Using our email delivery service counts as an additional email credit. If you encounter any issues, please contact us.
Rate limits are applied on a per-API key basis. Each API key can make up to 1,000 requests every 15 minutes. When you exceed the rate limit, requests will return a 429 Too Many Requests
response.
Rate Limit Response Example
{
"error": "Too many requests, please try again later.",
"retryAfter": 1732656100
}
error
Human-readable error messageretryAfter
Unix timestamp indicating when the rate limit will resetThe API uses standard HTTP response codes to indicate the success or failure of requests.
Code | Status | Description |
---|---|---|
200 | OK | The request was successful |
400 | Bad Request | The request is missing required parameters (e.g., email address) |
401 | Unauthorized | Missing or invalid API key |
429 | Too Many Requests | Rate limit exceeded or monthly usage limit reached |
500 | Internal Server Error | An error occurred while processing the request |
Error Response Example
{
"error": "Invalid API key",
"status": 401
}
The API returns detailed validation results for each email address. Here are example responses for different scenarios.
Valid Gmail Address
{
"email": "user@gmail.com",
"deliverability": "DELIVERABLE",
"quality_score": 0.90,
"is_disposable_email": false,
"is_valid_format": true,
"is_free_email": true,
"is_role_email": false,
"is_catchall_email": false,
"is_mx_found": true,
"is_smtp_valid": true
}
Role-Based Email
{
"email": "info@company.com",
"deliverability": "RISKY",
"quality_score": 0.60,
"is_disposable_email": false,
"is_valid_format": true,
"is_free_email": false,
"is_role_email": true,
"is_catchall_email": false,
"is_mx_found": true,
"is_smtp_valid": true
}
Disposable Email
{
"email": "test@tempmail.com",
"deliverability": "UNDELIVERABLE",
"quality_score": 0.20,
"is_disposable_email": true,
"is_valid_format": true,
"is_free_email": false,
"is_role_email": false,
"is_catchall_email": false,
"is_mx_found": true,
"is_smtp_valid": false
}
deliverability
STRINGEmail delivery status: DELIVERABLE, RISKY, UNDELIVERABLE, or ERROR
quality_score
NUMBERScore between 0 and 1 indicating overall email quality
is_disposable_email
BOOLEANWhether the email is from a temporary/disposable email service
is_valid_format
BOOLEANWhether the email format is syntactically valid
is_free_email
BOOLEANWhether the email is from a free provider (Gmail, Yahoo, etc.)
is_role_email
BOOLEANWhether it's a role-based address (info@, support@, etc.)
is_catchall_email
BOOLEANWhether the domain accepts all incoming emails
is_smtp_valid
BOOLEANWhether the email address exists and can receive emails
Introducing our new OTP email delivery service with customizable templates. Send verification codes directly through EmailKit's infrastructure.
Choose from pre-built templates or create your own
Live preview with test OTP codes
Instantly update your email template
EmailKit Delivery
/api/v2/generate-otpSelf-hosted Delivery
/api/generate-otp