Phone validation API
Phone validation API that flags risky numbers at signup.
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 documentationCheck 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.isValidLine type
line.typeCarrier type
line.carrierTypePorting
line.isPortedDisposable
risk.isDisposablePreviously disposable
risk.previouslyDisposableSMS destination risk
risk.smsDestinationRiskComplaints
risk.complaints90dFields 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.
| Field | Twilio Lookup | Trueguard |
|---|---|---|
| Number validation | Free | Included |
| Line type | $0.008 per lookup | Included |
| SMS pumping risk | $0.025 per lookup outside North America | Included, 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.
Sign up for a free API key
Call POST /phone/validation
Read the JSON
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.
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
Block disposable numbers at signup
Spot virtual numbers
Clean a contact list before you text it
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 keyNo credit card required.

