Phone validation

Phone number validation with the evidence attached

+1 212 555 0142 is correctly formed. It parses, it matches the United States numbering plan, and it is in the range NANPA reserves for fictional use. No operator assigns those numbers to anybody, so it will pass a form and fail the first time somebody tries to use it.

Orisift returns that as a decision, with the registry line and its source attached. Here is the response.

POST /v1/lookup · +12125550142

This phone number will not work

verdict
rejected
risk_score
64
evidence_coverage
72
credits
1

recommendation
Do not accept this phone number. Ask for a replacement at the point of capture.

What the check established
CapabilityStateWhat it says
FormatVERIFIEDParsed successfully
Plan validityFAILEDMatches the national numbering-plan pattern, but the range is not assignable: NANPA reserves 555-0100 to 555-0199 for fictional use.
CarrierNOT OFFEREDOrisift does not currently contract a carrier-data provider, so the operator of this line is not looked up.
ReachabilityNOT OFFEREDNothing here dials or pings the number. Plan validity is not evidence that a line is active or reachable.

The signal that decided it

NANPA reserves 555-0100 to 555-0199 for fictional use. No operator assigns these to subscribers.

source: National regulator allocations

The line type in the same response is reported with the same care: Fixed line or mobile, derived from the numbering plan. This is the range's designation, not a carrier lookup, and it does not reflect porting.

What this adds to libphonenumber

libphonenumber is good, and if you are already using it you are already doing the hard part. It parses, it formats, it validates the plan shape, and its metadata carries a line type. The signal above names it as the source for two of the four findings in that response, because it is the source.

What you would be building on top of it is the part below.

  1. 01

    The registry allocation decision

    libphonenumber tells you the digits match a published pattern. This adds whether the range is one an operator assigns at all, from regulator allocation data, and returns the source with the answer.

  2. 02

    The same contract for email, IP and domain

    One endpoint, one response shape and the same capability vocabulary across four identifier types, so the code that reads a phone result reads an email result unchanged.

  3. 03

    An explicit insufficient-evidence outcome

    When the evidence is not there, the response says so and carries no score, rather than returning a number that looks like a judgement.

  4. 04

    Data somebody else maintains

    Numbering plans and registry allocations change. Keeping that current is work, and on this side of the API it is not yours.

What a result does not establish

Before the pricing, because it is the part that decides whether this is any use to you.

In the response itself

  • no_carrier_provider — Carrier, porting and reachability are not available on any plan. See /coverage.

Every response carries its own limitations. You do not have to remember them, and you do not have to read this page again to find them. The full coverage matrix lists every capability by country.

What it costs to find out

Three a day

Checks from the homepage with no account at all. Run the number above and read the same response this page quotes.

500 credits

On signup, once, with no card. A phone check costs 1 credit.

From £19

A month, for 20,000 credits. All plans and currencies

Maintaining several client integrations rather than one? The agency case covers what one contract across four identifier types does and does not include. For the reserved ranges themselves, and the UK equivalent, what a reserved range actually means is the longer answer.