# Email and Phone Validation in One API (2026) | ContactLint

- **Canonical URL**: https://contactlint.com/email-and-phone-validation-api
- **Author**: John Alewine

> One API key for email and phone checks: 250 free/month, then $9, $35, or $99 packs. Syntax, DNS/MX, disposable, typos, E.164. Prices checked 2026-11-05.

---

[Home](/) / Email and Phone Validation in One API

# Email and Phone Validation in One API

Published November 7, 2026 · Updated November 7, 2026

[Email this to yourself](mailto:?subject=Email%20and%20Phone%20Validation%20in%20One%20API&body=https%3A%2F%2Fcontactlint.com%2Femail-and-phone-validation-api)

By John Alewine, founder of ContactLint. Prices checked 2026-11-05. Markdown copy: [/email-and-phone-validation-api.md](/email-and-phone-validation-api.md).

If your signup form asks for an email and a phone, you want one key, one balance and one bill. This page lists what ContactLint publishes for both kinds of check, what each check proves, and what it skips. Two other combined APIs appear in the tables with facts from their official pages, checked 2026-11-05, so you can read across.

TL;DR

- One API key and one credit balance cover email and phone. One check is one email or one phone.

- 250 free checks every month, no card. Then $9 for 5,000, $35 for 25,000, $99 for 100,000. Packs do not expire.

- ContactLint checks syntax, DNS/MX, disposable and role domains, typos, and parses phones to E.164. It does not probe mailboxes or call carriers.

- No winner on this page. Read the table row that matters to your signup flow.

On this page: [Short answer](#answer) &middot; [Pricing table](#table) &middot; [How we compared](#method) &middot; [What ContactLint publishes](#publishes) &middot; [Step by step](#steps) &middot; [Mistakes](#mistakes) &middot; [By signup flow](#segments) &middot; [Who this is not for](#not-for) &middot; [FAQ](#faq) &middot; [Changelog](#changelog)

## What is email and phone validation in one API?

Email and phone validation in one API means a single key and credit balance that can check an email address or a phone number before it hits your CRM. ContactLint publishes 250 free checks every month, then credit packs at $9, $35 and $99 (contactlint.com/pricing, checked 2026-11-05). The trade-off: it does not run SMTP mailbox probes or carrier HLR lookups.

In practice that is two HTTP calls from your signup handler, one per field, billed from the same balance. The email call returns a verdict and a suggested action. The phone call returns E.164 plus line type and region. Current packs and the free allowance are on [the pricing page](/pricing), and the [free email validation API](/free-email-validation-api) page explains what the 250 free checks cover.

Before you buy anything, put your signup volume and bounce rate into the free [Email Bounce Cost Calculator](/email-bounce-cost-calculator). It tells you what a bad address costs you. That is the number to weigh the packs against.

250 free checks a month. No card. Key shown on the next page.[Get a free API key](/signup)

## ContactLint email + phone pricing and what each check proves

    ContactLint prices from contactlint.com/pricing, checked 2026-11-05. Competitor dollar cells say not published when the official page scrape had no dollar figure.
    
      | 
        Feature / Pricing Metric | 
        ContactLint (Us) | 
        Checkfor (research) | 
        Validator (research) | 
      

    
    
      | 
        Free start | 
        250 checks every month per key, no card | 
        1 verification a day, no card; 100 credits on signup (homepage) | 
        not published as a monthly free allotment on pricing page; prepaid credits | 
      

      | 
        Published paid entry | 
        $9 for 5,000 checks | 
        dollar plan prices not published on homepage; /pricing 404 on 2026-11-05 | 
        First top-up $25 for 50,000 credits (1 credit = $0.0005) | 
      

      | 
        Mid pack | 
        $35 for 25,000 checks | 
        not published in dollars | 
        priced per credit; see getvalidator.io/pricing | 
      

      | 
        Large pack | 
        $99 for 100,000 checks | 
        not published in dollars | 
        priced per credit; see getvalidator.io/pricing | 
      

      | 
        Email + phone same balance | 
        Yes (same key, same credits) | 
        Yes (unified credits; email 1 credit, phone HLR 8 credits) | 
        Yes (both-in-one-call = 3 base credits) | 
      

      | 
        SMTP mailbox check | 
        No | 
        Optional SMTP / catch-all fields described on homepage | 
        Optional verify / premium email upgrades (20 / 77 credits) | 
      

      | 
        Carrier HLR / live line | 
        No | 
        Phone path documented as HLR (8 credits) | 
        Live line and other phone upgrades listed on pricing | 
      

      | 
        Hosted MCP server | 
        Yes at contactlint.com/mcp | 
        not published on homepage | 
        not published on pricing page | 
      

      | 
        Official source (checked 2026-11-05) | 
        https://contactlint.com/pricing | 
        https://checkfor.dev/ | 
        https://getvalidator.io/pricing | 
      

    
  
Pick the row that matters most to your signup flow and read across.

What a ContactLint check proves. An email check proves the address is well formed, the domain has MX or A records, and the domain was not on the disposable list at check time. It also flags role addresses, free providers and likely typos. A phone check proves the number parses under libphonenumber rules for its region and tells you the line type. Neither check proves a person is on the other end. How packs are billed, including the 14-day refund on unused credits, is on the [email validation API pricing](/email-validation-api-pricing) page.

## How We Compared Combined Email and Phone APIs (Disclosure First)

### Disclosure

We make ContactLint, so it is one of the options below. We are not affiliated with Checkfor or Validator. Every fact comes from each vendor's official page, checked 2026-11-05. If a vendor does not publish a fact, the cell says "not published". We do not score or rank the options. ContactLint does not connect to mail servers and does not call carriers, so it cannot confirm that a mailbox exists, detect catch-all domains, or prove a phone line is live, and the table says so.

### Evidence by Criterion

One row per criterion, no scores. Source keys: CL = contactlint.com/pricing, CF = checkfor.dev, VL = getvalidator.io/pricing. Every cell checked 2026-11-05.
| Criterion | ContactLint (ours) | Checkfor (research) | Validator (research) | 

| Free allowance | 250 checks every month per key, no card ([CL](https://contactlint.com/pricing)) | 1 verification a day, no card; 100 credits on signup ([CF](https://checkfor.dev/)) | no monthly free allotment published on the pricing page; prepaid credits ([VL](https://getvalidator.io/pricing)) | 

| Smallest published purchase | $9 for 5,000 checks ($1.80 per 1,000) ([CL](https://contactlint.com/pricing)) | dollar plans not published on the homepage; /pricing returned 404 on 2026-11-05 ([CF](https://checkfor.dev/)) | first top-up $25 for 50,000 credits ($0.0005 per credit) ([VL](https://getvalidator.io/pricing)) | 

| Larger packs | $35 for 25,000 ($1.40 per 1,000); $99 for 100,000 ($0.99 per 1,000) ([CL](https://contactlint.com/pricing)) | not published in dollars ([CF](https://checkfor.dev/)) | priced per credit; see the pricing page ([VL](https://getvalidator.io/pricing)) | 

| Cost of one email plus one phone | 2 checks from one balance; one check = one email or one phone ([CL](https://contactlint.com/pricing)) | 9 credits from one balance; email 1, phone HLR 8 ([CF](https://checkfor.dev/)) | 3 base credits when both go in one call; upgrades cost extra ([VL](https://getvalidator.io/pricing)) | 

| SMTP mailbox or catch-all check | no ([CL](https://contactlint.com/pricing)) | optional SMTP / catch-all fields described on the homepage ([CF](https://checkfor.dev/)) | optional verify / premium email upgrades (20 / 77 credits) ([VL](https://getvalidator.io/pricing)) | 

| Carrier HLR or live-line check | no ([CL](https://contactlint.com/pricing)) | phone path documented as HLR (8 credits) ([CF](https://checkfor.dev/)) | live line and other phone upgrades listed on the pricing page ([VL](https://getvalidator.io/pricing)) | 

| Hosted MCP server | yes, contactlint.com/mcp with validate_email, validate_emails and validate_phone ([CL](https://contactlint.com/pricing)) | not published on the homepage ([CF](https://checkfor.dev/)) | not published on the pricing page ([VL](https://getvalidator.io/pricing)) | 

Each row has an anchor. The signup-flow section below points at the rows instead of repeating them.

Our data. Our tracker counts vendor name mentions in Gemini, Grok and Claude answers to buyer prompts about email validation. Across the 2026-10-22, 2026-10-26 and 2026-11-02 runs, ZeroBounce, Kickbox, NeverBounce and Abstract dominate the mentions and ContactLint sits near zero. That is a count of who the assistants name, not a measure of who checks a phone correctly, so it does not feed the table.

### Core Architectural Split

The split is between checks that look at the string and the domain, and checks that ask a third party about the account. ContactLint stays on the first side. For email it runs syntax, DNS/MX, disposable, role, free-provider and typo checks. For phone it parses the number with libphonenumber metadata and reports valid or possible, line type, region and E.164. It never opens an SMTP session and never queries a carrier.

The two research options in the table document the second side as an option: SMTP or catch-all fields on one, verify and premium email upgrades on the other, and an HLR or live-line path for phones on both. Those paths cost more credits per lookup, which is why the credit math in the table matters more than the headline price. A credit on one service is not a check on another. Compare the cost of one email plus one phone, since that is what a signup form sends.

## What ContactLint Publishes for Email and for Phone

### Email

Each email check runs syntax, a DNS lookup for MX or A records, the disposable-domain list, role-address detection, a typo check that returns did_you_mean, and a free-provider flag. The response carries a verdict and a suggested_action so your handler can branch without re-implementing the rules. If the DNS lookup itself fails, the result is dns_error and the check is free. There is no SMTP mailbox probe and no catch-all detection, so a dead mailbox on a healthy domain still passes.

Two signup uses have their own guides: [block disposable email signups](/block-disposable-email-signups) and the [signup form email typo checker](/signup-form-email-typo-checker), which shows the did_you_mean suggestion inline before the account exists.

### Phone

Each phone check parses the number with libphonenumber metadata. You get valid and possible flags, the line type, the region, and the number formatted three ways: E.164, national and international. Store the E.164 form and show the national form. Pass the country when the user typed a local number without a country code. There is no carrier HLR lookup and no live-line check, so a well-formed number that was disconnected last week still parses as valid. Field details are on the [phone number validation API](/phone-number-validation-api) page, and the form pattern is in [validate phone numbers on signup](/validate-phone-numbers-on-signup).

### MCP and batch

The hosted Model Context Protocol (MCP) server at https://contactlint.com/mcp exposes three tools: validate_email, validate_emails and validate_phone. An agent that holds your key spends from the same balance as your backend and sees the same HTTP 402 when the balance is empty. Setup is in the [email validation MCP server](/email-validation-mcp-server) guide.

The email batch endpoint takes up to 50 addresses per call and bills one check per address. Use it to backfill rows you already have. On the signup path, one call per field keeps latency low.

## How to add email and phone validation in one API, step by step

### 1. Get a key

5 minutes. [Sign up](/signup), no card. The key is shown on the next page and comes with 250 free checks a month. Put it in a server-side environment variable. Never ship it to the browser. Done when a test call returns 200.

### 2. Validate the email in your signup handler

30 minutes. POST the address to /v1/email/validate with the key as a bearer token. Branch on verdict: block invalid, show did_you_mean when it is set, and decide what to do with disposable and role results. Treat dns_error as unknown, not as a fail. Done when jane@gmial.com gets a suggestion instead of an account.

curl -X POST https://contactlint.com/v1/email/validate \
  -H "Authorization: Bearer $CONTACTLINT_KEY" \
  -H "content-type: application/json" \
  -d '{"email":"jane@gmial.com"}'

### 3. Validate the phone

30 minutes. POST the number and the user's country to /v1/phone/validate. Reject when valid is false, store the E.164 form, and keep the line type if you plan to send SMS. This is the second check of the signup, from the same balance. Done when a local number comes back as E.164.

curl -X POST https://contactlint.com/v1/phone/validate \
  -H "Authorization: Bearer $CONTACTLINT_KEY" \
  -H "content-type: application/json" \
  -d '{"phone":"415-555-2671","country":"US"}'

### 4. Decide what a 402 does to signup

15 minutes. When the 250 free checks are gone the API returns HTTP 402 until the next calendar month or until a pack is bought. Pick fail-open (the signup goes through unchecked) or fail-closed (it waits) now, in code, before it happens at 2 a.m. Done when a forced 402 in staging does what you chose.

### 5. Backfill existing rows in batches

1 hour. Send the email batch endpoint up to 50 addresses per call to clean what is already in the CRM. Each address is one check. Done when every row has a verdict.

### 6. Buy a pack when the free allowance stops covering you

5 minutes. $9 for 5,000, $35 for 25,000, $99 for 100,000. Packs do not expire, and unused credits are refundable within 14 days by emailing support@contactlint.com. Done when the balance on the key page shows the pack.

### 7. Optional: give your agent the MCP server

10 minutes. Point an MCP client at https://contactlint.com/mcp and call validate_email, validate_emails or validate_phone with the same key. Done when the agent returns a verdict for a test address.

## Mistakes that cost the most

- Reading a valid verdict as proof of delivery. ContactLint does not open SMTP sessions or query carriers. A pass means the string, the domain and the number format hold up. It does not mean a mailbox or a line is live. Fix: keep the confirmation email and the SMS code. Validation runs before them, not instead of them.

- Not handling HTTP 402 in the signup path. When the free checks run out the API answers 402 until the next calendar month or a pack purchase. If your handler treats every non-200 as a hard failure, signups stop. Fix: decide fail-open or fail-closed in code, and alert on the first 402.

- Assuming one credit covers both an email and a phone in one call. On ContactLint one check is one email or one phone. A form with both fields spends two checks per signup, so 250 free checks cover 125 such signups a month. Fix: budget per field, and read the [cost of one email plus one phone](#ev-pair) row before comparing prices elsewhere.

## Which setup fits which signup flow?

Facts to check first, not a pick. Each line points to an evidence row.

- Email-only signup form -> [Free allowance](#ev-free), [SMTP mailbox or catch-all check](#ev-mailbox) -> watch out: no mailbox proof, so keep the confirmation email.

- Email plus phone with an SMS code -> [Cost of one email plus one phone](#ev-pair), [Carrier HLR or live-line check](#ev-line) -> watch out: two checks per signup on ContactLint, and the SMS code is what proves the line.

- Cleaning rows already in the CRM -> [SMTP mailbox or catch-all check](#ev-mailbox), [Smallest published purchase](#ev-entry) -> watch out: ContactLint formats and flags, it cannot find a dead mailbox behind a live domain.

- An AI agent that creates contacts -> [Hosted MCP server](#ev-agent) -> watch out: the agent spends the same balance and gets the same 402.

## Who This Page Is Not For

- Teams cleaning old lists where mailboxes may be gone. ContactLint cannot confirm a mailbox exists or detect catch-all domains. You need an SMTP verifier. Start with [ZeroBounce vs Kickbox vs NeverBounce](/zerobounce-vs-kickbox-vs-neverbounce).

- Fraud and Know Your Customer (KYC) teams that need carrier data. ContactLint does not run HLR or live-line lookups, so it cannot tell you whether a number is in service. Read the [carrier row](#ev-line) for the options that document that path.

- Anyone who wants a ranking. This page does not score vendors or pick a winner. It lists what each one publishes, checked 2026-11-05, and leaves the choice to you.

## Frequently Asked Questions

### Can one API validate both email and phone?

Yes. ContactLint uses one API key and one credit balance for both, and each call checks one email or one phone. A signup form with both fields spends two checks.

### How much does ContactLint cost for email and phone validation?

250 free checks every month per API key, no card. After that, non-expiring packs cost $9 for 5,000, $35 for 25,000 and $99 for 100,000 checks (contactlint.com/pricing, checked 2026-11-05). Email and phone checks draw from the same pack.

### Does ContactLint prove a mailbox exists or that a phone is in service?

No. ContactLint does not open SMTP sessions, so it cannot confirm a mailbox or detect catch-all domains, and it does not run carrier HLR or live-line lookups. It checks syntax, DNS/MX, disposable and role domains, typos, and parses phones to E.164 with line type and region.

### How many free checks do I get each month?

250 checks every month per API key, no card required, per contactlint.com/pricing checked 2026-11-05. Email and phone checks share that allowance. A check that fails at DNS returns dns_error and is not billed.

### Can an AI agent call ContactLint?

Yes. ContactLint runs a hosted Model Context Protocol (MCP) server at https://contactlint.com/mcp with three tools: validate_email, validate_emails and validate_phone. The agent spends from the same key and credit balance as your API calls.

### What happens when free checks run out?

The API returns HTTP 402 until the next calendar month or until you buy a pack. Decide in your handler whether signup continues unchecked or waits. Packs start at $9 for 5,000 checks.

### Do ContactLint credits expire?

No. Credit packs do not expire. Unused credits are refundable within 14 days of purchase by emailing support@contactlint.com. The 250 free checks reset each calendar month.

## Sources

- ContactLint pricing: [https://contactlint.com/pricing](https://contactlint.com/pricing) (checked 2026-11-05)

- ContactLint pack details and refund window: [https://contactlint.com/email-validation-api-pricing](https://contactlint.com/email-validation-api-pricing) (checked 2026-11-05)

- ContactLint MCP server: [https://contactlint.com/mcp](https://contactlint.com/mcp)

- The two research vendors' official pages are linked in the last row of each table above (checked 2026-11-05).

- AI answer mention counts: our tracker runs of 2026-10-22, 2026-10-26 and 2026-11-02 (method above).

## What Changed in This Guide (Changelog)

- 2026-11 (2026-11-07): Page created. Free tier (250/mo), credit packs ($9 / $35 / $99), refund window, MCP tools, and email/phone check limits checked against [https://contactlint.com/pricing](https://contactlint.com/pricing) and [https://contactlint.com/email-validation-api-pricing](https://contactlint.com/email-validation-api-pricing) on 2026-11-05.

Ready to try it on your own form? [Get a free API key](/signup) and run your first 250 checks this month.

250 free checks a month. No card. Key shown on the next page.[Get a free API key](/signup)

[Get a free API key](/signup). 250 checks per month, no card required.

[Email this to yourself](mailto:?subject=Email%20and%20Phone%20Validation%20in%20One%20API&body=https%3A%2F%2Fcontactlint.com%2Femail-and-phone-validation-api)
