# Quickstart

> Verify your first email address in under a minute with the EmailVerify Pro REST API, CLI, Python/TypeScript SDK, or MCP server for AI assistants.

Source: https://emailverifypro.com/docs/quickstart

EmailVerify Pro checks whether an email address can actually receive mail, before you
send to it. It runs 152 endpoints covering SMTP probing, DNS and MX intelligence,
catch-all resolution, disposable and role detection, and a deliverability score that
combines all of them.

There are four ways to use it. Pick one:

| | Best for | Start here |
|---|---|---|
| **REST API** | Any language, any platform | [API guide](https://emailverifypro.com/docs/api) |
| **CLI** | Terminal, scripts, CI, one-off checks | [CLI guide](https://emailverifypro.com/docs/cli) |
| **SDK** | Python or TypeScript applications | [SDK guide](https://emailverifypro.com/docs/sdk) |
| **MCP server** | Claude and other AI assistants | [MCP guide](https://emailverifypro.com/docs/mcp) |

## Verify one address in 10 seconds

No signup, no key. The API answers unauthenticated requests, rate limited by IP:

```bash
curl "https://emailverifypro.com/validate?email=someone@example.com"
```

The same thing from the terminal, if you'd rather not read raw JSON:

```bash
pipx install emailverify
emailverify verify someone@example.com
```

```
VALID  someone@example.com  (mailbox_verified)  score=96 A+  can_send=yes
```

## Reading the result

```json
{
  "email": "someone@example.com",
  "status": "valid",
  "sub_status": "mailbox_verified",
  "deliverability_score": {
    "score": 96,
    "grade": "A+",
    "can_send": true,
    "recommendation": "Send",
    "primary_risk": null
  },
  "mx_found": true,
  "smtp_provider": "google",
  "is_disposable": false,
  "is_role": false,
  "catch_all": false
}
```

**The one field that matters is `deliverability_score.can_send`.** It is a boolean that
already accounts for catch-all domains, greylisting, provider quirks and role addresses.
If you only read one field, read that one.

`status` is the raw SMTP verdict and is more nuanced:

| `status` | Meaning | Should you send? |
|---|---|---|
| `valid` | The mailbox was confirmed to exist | Yes |
| `invalid` | The mail server explicitly rejected it | No |
| `accept_all` | Catch-all domain — accepts every address, so existence cannot be proven over SMTP | Judge by `can_send` |
| `unknown` | No definitive answer (greylisting, timeout, provider blocking) | Judge by `can_send` |

> A `status` of `unknown` is common and often still scores well above the send threshold,
> because dozens of non-SMTP signals agree the address is real. Do not treat `unknown` as
> a failure.

## Verify a list

```bash
curl -X POST https://emailverifypro.com/validate/bulk \
  -H "Content-Type: application/json" \
  -d '{"emails":["a@example.com","b@example.com"],"deduplicate":true}'
```

Up to 100 addresses per call. For more, use the async job API:

```bash
curl -X POST https://emailverifypro.com/validate/bulk/async \
  -H "X-API-Key: evp_your_key" \
  -H "Content-Type: application/json" \
  -d '{"emails":["..."]}'
# -> {"job_id": "job_abc123"}

curl -H "X-API-Key: evp_your_key" https://emailverifypro.com/jobs/job_abc123
```

Or let the CLI handle files, batching and polling:

```bash
emailverify bulk --file leads.csv --out results.json
```

## Get an API key

You don't need one to try the API, but a key raises your limits and attributes usage to
your account.

```bash
curl -X POST https://emailverifypro.com/keys \
  -H "Content-Type: application/json" \
  -d '{"name":"my-laptop","tier":"free","owner_email":"you@company.com"}'
```

The secret is shown **once**. Full details in the [API keys guide](https://emailverifypro.com/docs/api-keys).

## How long does it take?

A single verification typically takes **1–5 seconds**, and can legitimately take
**30 seconds or more** when the destination server greylists or stalls. Set a client
timeout of at least 60 seconds, and use the async bulk API for large lists rather than
holding a connection open.

## Where to go next

- [API guide](https://emailverifypro.com/docs/api) — authentication, every core endpoint, full request and response shapes
- [API keys](https://emailverifypro.com/docs/api-keys) — create, scope, rotate, revoke
- [CLI](https://emailverifypro.com/docs/cli) — all 152 endpoints as shell commands
- [SDKs](https://emailverifypro.com/docs/sdk) — Python and TypeScript
- [MCP server](https://emailverifypro.com/docs/mcp) — connect Claude or another AI assistant
- [Recipes](https://emailverifypro.com/docs/recipes) — clean a CRM export, gate a signup form, verify before a campaign
- [Endpoint reference](https://emailverifypro.com/docs/endpoints) — all 152, searchable
- [Errors and limits](https://emailverifypro.com/docs/errors) — status codes, rate limits, timeouts
