One check. A real answer from the network.
Not a format check. Not a guess. Here's exactly what happens.
Your system sends a phone number to the FILTER API over HTTPS — one number, or millions in a batch.
HLR = Home Location Register · MAP SRI-SM = the signalling message used to ask a network about a subscriber · MCC-MNC = the country and network codes that identify an operator.
What we check
Format
Is the number a well-formed E.164 mobile number?
Line status
Is the line currently active or disconnected?
Line type
Mobile, landline, or something else?
Operator
Which carrier currently serves the number, including after porting.
Risk signal
Anything else the network exposes that indicates a disposable or high-risk line.
What we deliberately don't do
No OTP. We never send anything to the number — the customer never knows a check happened.
No SMS cost on your side, and none on the customer's.
No guessing from stale data. Every check queries the live network, not a cached database that goes out of date.
A request, and a response
curl -X POST https://api.usefilter.io/api/v1/filter \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone": "+919876543210", "source": "website"}'{
"country": "IN",
"valid": true,
"status": "CONNECTED",
"carrier": "Jio",
"line_type": "MOBILE",
"is_ported": false
}