tools/integrations/truelist.md
Email verification and deliverability validation. Validates single emails synchronously or bulk lists asynchronously. Returns an email_state + email_sub_state plus rich metadata (domain, MX record, suggested correction, disposable/role classification).
Spec source: Truelist-Labs/truelist-openapi (OpenAPI 3.1).
| Integration | Available | Notes |
|---|---|---|
| API | ✓ | REST API, OpenAPI 3.1 spec |
| MCP | ✓ | Official truelist-mcp server (Claude, Cursor, VS Code) |
| CLI | ✓ | Official Go truelist-cli |
| SDK | ✓ | Official: Node/TypeScript, Python, Ruby, PHP, Go, Java, C#/.NET. Framework integrations: Django, Laravel, Next.js, Rails, React, Svelte, Vue, WordPress |
Authorization: Bearer YOUR_API_KEYhttps://api.truelist.ioPOST https://api.truelist.io/api/v1/[email protected]
Authorization: Bearer YOUR_API_KEY
No request body — the email is a query parameter. Returns a single-element emails array with verification fields:
{
"emails": [
{
"address": "[email protected]",
"domain": "example.com",
"canonical": "[email protected]",
"mx_record": null,
"first_name": null,
"last_name": null,
"email_state": "ok",
"email_sub_state": "email_ok",
"verified_at": "2026-02-21T10:39:12.570Z",
"did_you_mean": null
}
]
}
POST https://api.truelist.io/api/v1/verify
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"emails": [
"[email protected]",
"[email protected]"
]
}
Processes the list in the background. The response acknowledges submission; results are available via the dashboard, the Truelist UI's CSV download, or via integrations (Mailchimp, Klaviyo, HubSpot, Zapier, Make, n8n, etc.).
For large lists, the dashboard's CSV upload + download flow is typically the lowest-friction path.
GET https://api.truelist.io/me
Authorization: Bearer YOUR_API_KEY
Returns email, name, UUID, time zone, admin role, API keys, and account plan info.
| Field | Type | Description |
|---|---|---|
address | string | The email address validated |
domain | string | The domain part of the address |
canonical | string | Canonical form of the address |
mx_record | string | null | MX record for the domain |
first_name | string | null | First name if detected |
last_name | string | null | Last name if detected |
email_state | enum | Overall validation verdict (see below) |
email_sub_state | enum | More specific reason (see below) |
verified_at | datetime (ISO 8601) | When verification ran |
did_you_mean | string | null | Suggested correction for typos |
email_state values| State | Meaning | What to do |
|---|---|---|
ok | The email address is deliverable. | Include in outreach |
email_invalid | The email address is not deliverable. | Exclude — would bounce |
risky | May be deliverable but carries risk (role address, disposable, etc.) | Include cautiously, lower priority |
unknown | Deliverability could not be determined (timeout/connection). | Skip or re-verify with Thorough strategy |
accept_all | The mail server accepts all addresses (catch-all domain) | Include cautiously — can't confirm specific mailbox |
email_sub_state values| Sub-state | Meaning |
|---|---|
email_ok | Passed all checks |
is_disposable | Disposable / temporary provider (e.g., 10minutemail) |
is_role | Role-based address (info@, sales@, admin@) |
unknown_error | Sub-state could not be determined |
failed_smtp_check | SMTP check failed |
Pair the two: email_state: ok + email_sub_state: is_role means "deliverable but a role inbox," whereas email_state: email_invalid + email_sub_state: failed_smtp_check means "doesn't exist."
| Endpoint | Limit |
|---|---|
/api/v1/verify_inline | 10 requests/second |
/api/v1/verify | 10 requests/second |
/me | 10 requests/second |
A 429 is returned on rate-limit exceed. Note: the per-email validation rate is separate and depends on your plan.
| Code | Meaning |
|---|---|
| 401 | Unauthorized — API key missing, invalid, or expired |
| 429 | Rate limit exceeded |
| 500 | Server error |
All error bodies follow {"error": "<human-readable message>"}.
Cold email reputation is built over months and destroyed in days. ISPs (Gmail, Outlook, etc.) track sender reputation through:
A single unvalidated send to a bought or scraped list can damage a domain's sending reputation for months.
Typical prospecting flow:
/api/v1/verify for async bulk OR /api/v1/verify_inline for sync singleemail_state: ok, include risky/accept_all cautiously with a strategy, exclude email_invalid, re-verify unknownFor non-developer workflows, Truelist has direct integrations:
See https://truelist.io/integrations for the current list.