The official command-line tool for Truelist.io email validation. Validate single emails, bulk CSV files, or pipe from stdin.
Start free — 100 validations + 10 enhanced credits, no credit card required. Get your API key → Works with the free plan.
brew install Truelist-io-Email-Validation/tap/truelistgo install github.com/Truelist-io-Email-Validation/truelist-cli@latestDownload the latest release from the Releases page and add it to your PATH.
# Set your API key (get one at https://truelist.io)
truelist config set api-key YOUR_API_KEY
# Validate a single email
truelist validate user@example.com
# Validate a CSV file
truelist validate --file contacts.csv
# Pipe emails from stdin
cat emails.txt | truelist validateValidate a single email address.
truelist validate user@gmail.com✓ user@gmail.com
State: ok
Sub-state: email_ok
Domain: gmail.com
Canonical: user
Flags:
| Flag | Description |
|---|---|
--json |
Output result as JSON |
-q, --quiet |
Output only the state (ok, email_invalid, accept_all) |
Validate emails from a CSV file. The CLI auto-detects the email column, or you can specify it with --column.
truelist validate --file contacts.csv
truelist validate --file contacts.csv --column email_address
truelist validate --file contacts.csv --output results.csvOutputs a new CSV with truelist_state, truelist_sub_state, truelist_domain, truelist_verified_at, and truelist_suggestion columns appended.
Flags:
| Flag | Description |
|---|---|
-f, --file |
Path to the input CSV file |
-o, --output |
Output file path (default: <input>_validated.csv) |
-c, --column |
Name of the email column in the CSV |
Pipe emails from stdin, one per line.
cat emails.txt | truelist validate
echo "user@example.com" | truelist validateCheck your API key and display account information.
truelist whoamiAccount Info
Email: you@company.com
Name: Your Name
UUID: abc-123
Time Zone: America/New_York
Plan: pro
Save your API key to the config file.
truelist config set api-key tk_live_abc123Print the CLI version.
truelist versionThe CLI looks for your API key in the following order:
- Config file at
~/.config/truelist/config.yaml - Environment variable
TRUELIST_API_KEY
Set via config file:
truelist config set api-key YOUR_API_KEYSet via environment variable:
export TRUELIST_API_KEY=YOUR_API_KEY✓ user@gmail.com
State: ok
Sub-state: email_ok
Domain: gmail.com
Canonical: user
Verified At: 2026-02-21T10:00:00.000Z
{
"address": "user@gmail.com",
"domain": "gmail.com",
"canonical": "user",
"mx_record": null,
"first_name": null,
"last_name": null,
"email_state": "ok",
"email_sub_state": "email_ok",
"verified_at": "2026-02-21T10:00:00.000Z",
"did_you_mean": null
}ok
| State | Description |
|---|---|
ok |
The email is deliverable |
email_invalid |
The email is not deliverable |
accept_all |
Domain accepts all addresses (catch-all) |
| Sub-state | Description |
|---|---|
email_ok |
Email is valid and deliverable |
is_disposable |
Temporary/disposable email address |
is_role |
Role-based address (e.g., info@, admin@) |
failed_mx_check |
Domain has no valid MX records |
failed_spam_trap |
Address is a known spam trap |
failed_no_mailbox |
Mailbox does not exist |
failed_greylisted |
Server temporarily rejected the request |
failed_syntax_check |
Email address has invalid syntax |
The CLI respects Truelist API rate limits (10 requests/second). Bulk validation automatically throttles requests.
# Build
make build
# Run tests
make test
# Build for all platforms
make build-allSign up for a free Truelist account to get your API key. The free plan includes 100 validations and 10 enhanced credits — no credit card required.
MIT - see LICENSE for details.