Phone validation API

Phone validation API that flags risky numbers at signup.

Trueguard's phone number validation API is a REST endpoint that returns validity, format, location, line type, carrier, porting, disposable history and SMS destination risk in one JSON response. 100 checks a month are free with no card, then $49.99 for 20,000.
curl -X POST https://api.trueguard.io/v2/phone/validation \ -H "X-API-KEY: $YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"phone":"+14159929960"}'

Start on the free tier

100 checks a month, no card.

Same endpoint and response as the paid plan.

Get your free API keyRead the API documentation
Free100 / month
Standard$49.99 / 20,000
Overage$0.0025
Median responseUnder 500 ms

Check one number now.

No key needed. 5 free checks a day, and the response is the same shape the endpoint returns.

Or try

SMS pumping on OTP

Attackers trigger codes to premium numbers you pay to text. Check the destination before you send.

Disposable numbers at signup

Numbers from public receive-SMS sites take a free-tier seat and pass an SMS code.

One account per person

Virtual numbers let one person open many accounts. Line type and carrier type show them.

What does the phone validation API return?

Eight of the fields in one JSON response. Every field on every plan, including free.

Valid number

validity.isValid
true when the number matches the numbering plan of its country.

Line type

line.type
The kind of line: mobile, landline, VoIP, toll free, premium rate and more.

Carrier type

line.carrierType
The kind of operator that serves the line, such as a mobile network operator or a virtual operator.

Porting

line.isPorted
true when the number moved away from its original operator. US numbers only.

Disposable

risk.isDisposable
true when the number was listed on a public SMS-receiving site in the last 30 days.

Previously disposable

risk.previouslyDisposable
true when the number was listed 31 to 180 days ago, but not in the last 30 days.

SMS destination risk

risk.smsDestinationRisk
low, elevated or high: the SMS pumping (toll fraud) risk of the country of the number.

Complaints

risk.complaints90d
Number of complaints about this number in the last 90 days. +1 numbers only.

Fields others charge extra for

Line type and SMS pumping risk are separate paid lookups at Twilio. Here they are in the same response and the same price.

FieldTwilio LookupTrueguard
Number validationFreeIncluded
Line type$0.008 per lookupIncluded
SMS pumping risk$0.025 per lookup outside North AmericaIncluded, country level

Twilio list prices checked 2026-11-01.

How do I validate a phone number with one API call?

Three steps. Most teams integrate in an afternoon.

01

Sign up for a free API key

No card. 100 checks a month. Same endpoint, same response shape.
02

Call POST /phone/validation

One header. One body field. HTTPS only.
03

Read the JSON

Validity, line, carrier and risk in one response. Branch on the field that matters for your use case.

Made for developers.

The same call in curl, Node.js and Python. Paste, set the key, run. If your stack is not listed, the curl translates cleanly.

curl -X POST https://api.trueguard.io/v2/phone/validation \ -H "X-API-KEY: $YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"phone":"+14159929960"}'

What does a typical JSON response look like?

The response for a valid number. A field with no data for a number comes back as null.

{ "phone": "+14159929960", "rawPhone": "+14159929960", "validity": { "isValid": true, "isPossible": true, "reason": null }, "format": { "e164": "+14159929960", "international": "+1 415 992 9960", "national": "(415) 992-9960" }, "location": { "countryCode": "US", "countryName": "United States", "callingCode": "1", "region": "CA", "city": "San Francisco", "timezones": [ "America/Los_Angeles" ] }, "line": { "type": "voip", "voipType": "nonFixed", "smsCapable": true, "originalCarrier": "Lumen", "currentCarrier": "Twilio", "isPorted": true, "carrierType": "cpaasVirtual", "mcc": null, "mnc": null }, "risk": { "status": "safe", "isDisposable": false, "previouslyDisposable": false, "isAbuseDetected": null, "smsDestinationRisk": "low", "complaints90d": null } }

How much does the phone validation API cost?

Three tiers. Free plan needs no card.

Free

$0 forever

100 checks / month

Overage: n/a

Get started free

Standard

Popular

$49.99 / month

20,000 checks / month

Overage: $0.0025 per check

Get your API key

Custom

Contact us

500,000+ checks / month

Overage: Negotiated

Talk to us

Pay for what you check. Cancel anytime. Overage is billed through Stripe at $0.0025 per check. Higher volumes are priced lower on request. One request to the validation endpoint is one check. Looking for email instead? See the email verification API.

What do teams use phone validation for?

A bad number costs you an SMS you pay for, a fake account in your free tier, or a lead you cannot reach. One call before you act removes most of that.

Stop SMS pumping on OTP

Check the number before you send the code. Premium-rate lines and high-risk destinations show up in the response, so you can skip the send instead of paying for it.

Block disposable numbers at signup

Numbers listed on public receive-SMS sites pass an SMS code check in seconds. Flag them at the form, before they create an account or use a free trial.

Spot virtual numbers

Line type and carrier type separate mobile numbers from VoIP and virtual ones. Use them when you allow one account per person.

Clean a contact list before you text it

Drop numbers that are invalid or cannot receive SMS, and save the cost of messages that go nowhere.

Want to try a number first? Use the free phone number validator.

Frequently asked questions

Anything missing? Contact support or read the API reference.

What is a phone validation API?

A phone validation API, also called a phone number lookup API, is a REST endpoint that checks a phone number. Given a number, it returns whether the number is valid for its country, how to format it, where it belongs, what kind of line it is, which carrier holds it, and whether it carries risk. Call it from your backend at signup, at checkout or before you send an SMS.

What does the Trueguard phone validation API return?

One JSON response with the validity of the number, its E.164, international and national formats, country and region, line type, carrier type, original and current carrier, porting, SMS capability, disposable number history and the SMS destination risk of the country. A risk.status field sums it up as safe, risky, invalid or unknown.

How much does the phone validation API cost?

The Standard plan is $49.99 a month and includes 20,000 checks. Each check over that costs $0.0025, billed through Stripe. Above 500,000 checks a month, contact us for custom pricing.

Is there a free tier?

Yes. 100 checks a month, no card, no trial expiry. The free tier runs the same endpoint and returns the same response as the paid plan.

Does the API check that a number is in service?

No. There is no HLR lookup and no call to the mobile network. The check reads numbering data: the numbering plan of the country, the range the number sits in and the carrier that holds it. A number the API calls valid matches the numbering plan of its country. It does not mean someone answers it.

Can the API detect disposable phone numbers?

Yes. Trueguard monitors public receive-SMS sites itself. risk.isDisposable is true when a number was listed on one of them in the last 30 days. risk.previouslyDisposable is true when it was listed 31 to 180 days ago.

Which fields are only filled in for US numbers?

line.currentCarrier, line.isPorted and risk.complaints90d come from US data, so they cover +1 numbers only. For numbers in other countries they are null.

Is the phone check part of the Trueguard fraud event?

Not today. The phone validation API is a standalone endpoint with its own meter. You call it on its own and decide what to do with the answer. The phone check does not sit in the same event as email, IP and device signals.

Stop paying to text bad numbers.

100 checks a month, free, no card. Switch when you outgrow the quota, not when you outgrow the demo.

Get your free API key

No credit card required.

trueguard-logo© 2026 Trueguardinfo@trueguard.io