# Verify emails from your own code with one POST request

For an email verification API inside a signup form, a CRM sync or a script: send one POST to the RouterGrowth runs endpoint with capability contact.verify and the address. The response is JSON with the status, a certainty grade when available, the catch-all flag and the mail servers. One key covers several verification providers.

HTML page: https://www.routergrowth.com/tools/email-finder/verification-api
Part of: [Email finder tools](https://www.routergrowth.com/tools/email-finder.md)

## The call

[`contact.verify`](https://www.routergrowth.com/catalog/contact.verify): Verify deliverability of a professional email: valid, invalid, or unknown, with catch-all and mail-server details.

Price on this network: $0.002 per verdict. The exact quote is shown before every run.

## What a real run returned

Run on 2026-10-16: 1 records in 3.9 s for $0.002. Personal fields are masked. One API call for an address at a .co startup domain: valid, ultra_sure, catch-all not reported by this provider, Google mail servers.

| email | status | certainty | catch_all | mx_provider |
|---|---|---|---|---|
| s***@***.co | valid | ultra_sure | None | google |

## How to do it

1. **Get a key.** Create an API key in the RouterGrowth dashboard. No developer account with a verification company is needed.
2. **POST the address.** Send capability contact.verify with input {"email": ...} and a max_cost. The response carries a run_id and, for short calls, the result.
3. **Read the JSON.** result.status is valid, invalid or unknown. certainty, catch_all and mx_provider sit next to it, and billing.charged shows what the call cost.
4. **Handle unknown.** Treat unknown as a soft result: let the user continue, and recheck later or ask for another address.

## Ask it like this

- Write a Python function that calls RouterGrowth contact.verify for an email and returns True only for valid. (`contact.verify`)
- Add an email check to our signup endpoint: block invalid addresses, allow unknown with a warning. (`contact.verify`)

## Connect

MCP server: `https://api.routergrowth.com/mcp`

```bash
claude mcp add --transport http routergrowth https://api.routergrowth.com/mcp
```

```bash
npm install -g routergrowth && routergrowth setup
routergrowth run -c contact.verify -i '{"email": "rivera@example.com"}'
```

```bash
curl -X POST https://api.routergrowth.com/v1/run \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -d '{"capability": "contact.verify", "input": {"email": "rivera@example.com"}}'
```

## Worth knowing

- **Same call from an agent or from code.** The REST endpoint and the MCP tool run the same capability with the same input and the same response.
- **max_cost is the guard.** Pass max_cost on each request. The run refuses to start if the quote is above it.
- **Provider fallback is built in.** If the first provider cannot decide, the next is tried within the same request, so your code handles one response shape.

## Questions

### What does the request look like?

A POST with your key in the header and a JSON body naming the capability, the input with the email, and max_cost.

### Is the response synchronous?

Short runs return the result directly. A longer one returns a run_id to poll until it is done.

### Is there a rate limit?

The router retries a rate-limited provider by itself. For large lists, run them as a batch.

### Can I test without spending?

Sandbox keys return clearly labeled simulated data, useful for wiring up your code before using a live key.

## Related

- [Find where to reach a brand from its YouTube channel](https://www.routergrowth.com/tools/email-finder/youtube.md)
- [Read a TikTok brand account's bio, links and contact email](https://www.routergrowth.com/tools/email-finder/tiktok.md)
- [Find the contact details a brand lists on its social profiles](https://www.routergrowth.com/tools/email-finder/social-media.md)
- [Check whether an email address will accept mail before you send](https://www.routergrowth.com/tools/email-finder/verification-tools.md)
- [Turn the LinkedIn profile you are reading into a verified work email](https://www.routergrowth.com/tools/email-finder/linkedin.md)
- [Get the email and links an Instagram brand account shows](https://www.routergrowth.com/tools/email-finder/instagram.md)
- [Get work emails for the people you want at one company](https://www.routergrowth.com/tools/email-finder/company.md)
- [Find someone's work email from their name and where they work](https://www.routergrowth.com/tools/email-finder/by-name.md)
- [Verify one email address in the middle of a conversation](https://www.routergrowth.com/tools/email-finder/address-verification.md)
- [Verify a whole list of emails without uploading it anywhere](https://www.routergrowth.com/tools/email-finder/bulk-verification-software.md)
