Mobile Number Verification
Contact & AddressConfirm a mobile number is active, who it is registered to and which network serves it.
Validate a mobile number before you trust it: active status, operator and circle, prepaid or postpaid, and a name match against the subscriber record where available. Reduce fake sign-ups, unreachable candidates and misrouted OTPs.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
mobile_number
required
|
string | Mobile number |
name_to_match
optional
|
string | Name to match |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/mobile-number-verification \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"mobile_number": "9999999999",
"name_to_match": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/mobile-number-verification",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"mobile_number": "9999999999",
"name_to_match": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/mobile-number-verification", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"mobile_number": "9999999999",
"name_to_match": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/mobile-number-verification', {
"mobile_number": "9999999999",
"name_to_match": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"active_status": STRING,
"operator_and_telecom_circle": STRING,
"connection_type": STRING,
"name_match_result_where_available": STRING,
"ported": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"active_status": "string",
"operator_and_telecom_circle": "string",
"connection_type": "string",
"name_match_result_where_available": "string",
"ported": "string"
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
A mobile number is the identifier every onboarding flow captures first and verifies least. The Mobile Number Verification API tells you whether the number is live, which operator and region it belongs to, and whether the name you hold matches the subscriber, giving you a strong, low-friction identity and reachability signal.
Use it to prioritise outreach, gate risky sign-ups and confirm that the number used for OTP belongs to the person you are onboarding.
Typical uses
- Candidate outreach. Verify numbers before sending consent and portal links.
- Fintech sign-ups. Match the OTP number to the applicant.
- Marketplace and gaming. Reduce multi-account abuse.
- Collections and support. Keep contact databases clean.
Questions
- Is name matching always available?
- It depends on the subscriber data available for the number. The response states clearly when a match could not be attempted.
- Does this send an OTP?
- No. It is a silent check. emver's consent flows handle OTP separately when you need possession proof.