Free API · No signup
API Documentation
Integrate email verification into your app in minutes. No API key required - quota is tracked by IP.
Base URL: https://www.mailtruster.com
Endpoints
POST
/api/check-emailVerify a single email addressGET
/api/quotaGet your remaining daily quotaPOST
/api/bulk-check-emailSubmit a bulk verification job (max 100 emails)GET
/api/verification-result/:job_idPoll a bulk job resultCheck a single email
POST
/api/check-emailRequest body
| Field | Type | Description |
|---|---|---|
| string | The email address to verify | |
| validation_type | string | smtp · mx · mx_blacklist · regex (default: smtp) |
Example
curl -X POST https://www.mailtruster.com/api/check-email \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "validation_type": "smtp"}'Response · 200
{
"success": true,
"data": {
"email": "user@example.com",
"validation_type": "smtp",
"valid": true,
"checks": {
"syntax": true,
"dns": true
},
"reason": null,
"errors": []
},
"meta": {
"request_id": "018e6b3c-...",
"timestamp": "2026-04-11T12:00:00+00:00",
"version": "v1"
}
}reason is null when valid. When invalid: REGEX · DNS · BLACKLIST · SMTP
Validation types
smtpFull check - syntax + DNS + SMTP connection to the mail server. Most accurate.mxSyntax + DNS MX record lookup. Fast, no SMTP connection.mx_blacklistMX check + disposable domain blacklist. Ideal to block throwaway emails.regexSyntax only. Instant, no network call.Get quota
GET
/api/quotaExample
curl https://www.mailtruster.com/api/quota
Response · 200
{
"daily_limit": 100,
"used": 14,
"remaining": 86
}Bulk verification
Async workflow - submit a list, get a job_id per email, then poll each one individually.
1 - Submit a job
POST
/api/bulk-check-emailcurl -X POST https://www.mailtruster.com/api/bulk-check-email \
-H "Content-Type: application/json" \
-d '{
"emails": ["alice@example.com", "bob@test.com"],
"validation_type": "mx"
}'Maximum 100 emails per request. Returns 202 Accepted.
{
"success": true,
"data": {
"results": [
{
"email": "alice@example.com",
"status": "queued",
"message": "Queued for verification",
"job_id": "018e6b3c-1111-..."
},
{
"email": "bob@test.com",
"status": "queued",
"message": "Queued for verification",
"job_id": "018e6b3c-2222-..."
}
]
},
"meta": { ... }
}2 - Poll a result
GET
/api/verification-result/:job_idcurl https://www.mailtruster.com/api/verification-result/018e6b3c-1111-...
{
"success": true,
"data": {
"job_id": "018e6b3c-1111-...",
"result": {
"email": "alice@example.com",
"status": "valid",
"message": "Email is valid",
"details": { ... },
"created_at": "2026-04-11T12:00:00+00:00",
"updated_at": "2026-04-11T12:00:05+00:00"
}
},
"meta": { ... }
}Poll until status is no longer queued or processing. Recommended interval: 2s.
queuedJob received, waiting to be processedprocessingVerification in progressvalidEmail is validinvalidEmail is invaliderrorVerification failed (e.g. invalid format)Error codes
EMAIL_REQUIRED400Missing or invalid email fieldINVALID_VALIDATION_TYPE400Unknown validation_type valueQUOTA_EXCEEDED429Daily limit reached - details include limit, remaining, requestedBULK_LIMIT_EXCEEDED422More than 100 emails in a single bulk requestJOB_NOT_FOUND404No result found for the given job_idUPSTREAM_ERROR502Error from the verification serviceINTERNAL_ERROR500Unexpected server error