Phone Validation (v1)
Validate Phone Number
Validate a phone number for list cleaning — line type, current carrier, portability, and DNC status.
POST
Validate a single phone number against Trackly’s list cleaning pipeline. Returns current (post-port) carrier, line type (mobile / fixed line / VoIP), ported flag, and DNC membership — everything you need to decide whether the number is safe to include in an SMS campaign.
Backed by carrier network (NPAC-sourced) data, not a static numbering-plan table. Results reflect the current state of the number, including recent ports.
Pricing & Billing
Each non-cached lookup is billed at $0.003. Once a phone has been validated for your account, repeat lookups of the same number are free indefinitely (cached: true, cost: 0) — pass force=true to bypass the cache and re-validate at $0.003 (rare; LRN data only changes on carrier porting). Lookups accrue throughout the month and are charged to your Stripe-on-file payment method on the 1st of the following month.
Your account must have an active payment method to use this endpoint. Requests from accounts with payment_failed or suspended billing status return 402 Payment Required.
Request
string
required
Phone number to validate. E.164 format recommended (e.g.,
+14155551234). Common US formats are normalized automatically (4155551234, (415) 555-1234).boolean
default:"false"
Bypass the per-account cache and run a fresh paid lookup. Defaults to
false. Must be a strict boolean — string "true" is rejected with invalid_force. LRN data only changes on carrier porting (rare), so cache hits are correct for the vast majority of repeat lookups.Response
string
Normalized E.164 phone number.
boolean
true if the phone number is valid per the carrier network.string
One of:
mobile, fixed line, voip, other, unknown. Note the literal value for landlines is "fixed line" with a space.string
Normalized, customer-friendly carrier display name (e.g.,
Verizon Wireless, T-Mobile, Frontier). Derived from carrier_raw.string
Raw carrier string from the underlying SPID (Service Provider ID) registry (e.g.,
CELLCO PARTNERSHIP DBA VERIZON). Useful for programmatic matching.boolean
true if the number has been ported away from the carrier that originally owned its NPA-NXX prefix.string
ISO-3166 alpha-2 country code (e.g.,
US).string
Region / state associated with the number (US only).
string
City associated with the number (US only; may be abbreviated).
boolean
true if the number is on Trackly’s DNC list (populated nightly from the FTC Do Not Call Registry and state registries).string
Summary verdict combining line type and DNC status:
ok— mobile, valid, not on DNC. Safe to send.unreachable— landline or VoIP. Cannot receive SMS reliably.risky— valid mobile but flagged on a DNC list.invalid— not a valid number per the carrier network.unknown— line type could not be determined.
number
USD billed for this lookup.
0 when served from cache.boolean
true if the result was served from Trackly’s per-account cache (no charge). Cache is permanent per (account, phone) once the number has been validated; pass force=true on the request to bypass.Error Codes
Billing Status
Check your billing status at any time under Settings → Billing. A dashboard banner will alert you if a recent charge failed, with a one-click link to update your payment method.
Caching Behavior
Once a phone has been validated for your account, the result is cached permanently for that(account, phone) pair. Repeat validations return the same data with no charge (cached: true, cost: 0). Pass force=true to bypass the cache and refresh the stored result with a new LRN call (the existing record is overwritten, not deleted). Reasoning: LRN data only changes when a number is ported between carriers — a rare event — so persistent caching gives correct results for the vast majority of repeat lookups.
A short-lived cache (30 days) sits in front for read latency, but the underlying per-account record is what makes repeat lookups free indefinitely.
What’s Detected vs Not
Detected at $0.003:- Line type (mobile / landline / VoIP)
- Current post-port carrier name
- Number validity (is this number assigned?)
- Portability status
- DNC membership (FTC + state registries)
- Disconnected / inactive numbers — requires a live HLR query, not included
- Caller name (CNAM) — separate product
- Reassigned number status (FCC RND) — surfaced separately in the Compliance Engine
- Litigator risk — surfaced separately via Blacklist Alliance in the Compliance Engine