Skip to main content
POST
Validate a single phone number against Trackly’s list cleaning pipeline. Returns current (post-port) carrier, line type (mobile / landline / voip), ported flag, and federal Do Not Call membership — a deliverability and list-hygiene signal, not a consent or legal-compliance clearance. It doesn’t check state DNC registries, litigator lists, reassigned-number status, or your own consent records; see What’s Detected vs Not below for full coverage. 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 payment method on file 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, landline, voip, toll_free, unknown, premium_rate.
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. Only reliable on a fresh lookup — repeat lookups served from the permanent per-account cache return false.
string
ISO-3166 alpha-2 country code (e.g., US).
string
Region / state associated with the number (US only). Only reliable on a fresh lookup — repeat lookups served from the permanent per-account cache return "".
string
City associated with the number (US only; may be abbreviated). Only reliable on a fresh lookup — repeat lookups served from the permanent per-account cache return "".
boolean
true if the number is on the federal FTC Do Not Call Registry. Trackly refreshes this list daily, and on_dnc is evaluated against it on every request — including cached results, so force=true is never needed for current DNC status. State DNC registries are not ingested.
string
Summary verdict combining line type and DNC status:
  • ok — mobile, valid, not on the federal DNC list. Deliverable.
  • unreachable — landline or VoIP. Cannot receive SMS reliably.
  • risky — valid, not a landline or VoIP number, and on a DNC list.
  • invalid — not a valid number per the carrier network.
  • unknown — valid, not on DNC, and neither mobile nor landline/voip.
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 carrier and line-type result is cached permanently for that (account, phone) pair; on_dnc is not part of the cache and is evaluated against the current registry on every request. This permanent cache is the primary layer, and it’s what makes repeat lookups free indefinitely (cached: true, cost: 0). A shorter 30-day cache sits behind it and absorbs back-to-back lookups, so rapid repeat validations of the same number are free as well. Pass force=true to bypass both caches and run a fresh paid lookup — the new result refreshes them both. 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.
For bulk list cleaning, the cache makes re-validation across campaigns effectively free after the first pass. A 100K-contact list cleaned today and re-cleaned a year later will cost approximately $0 on the second pass — assuming the same account and unchanged numbers.

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 (federal FTC registry)
Not detected (not included in this endpoint):
  • 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 and state-DNC risk — available separately in the Compliance Engine add-on