e-PNC Phone Validation API

Validate any international phone number. Get country, carrier, and line type in a single API call.

https://verify.e-mc.co Live demo

Introduction

The e-PNC (e-MC Phone Number Checker) API lets you instantly validate phone numbers from 200+ countries. You can also try it live at api.e-mc.co/epnc. For each number you submit, the API returns:

  • Whether the number is valid and mobile
  • The country (ISO code + full name)
  • The carrier / network operator (MTN, Orange, Airtel…)
  • The line type (mobile, fixed line, VoIP…)
All requests must be authenticated with an x-api-key header. Contact us to get your API key.

Authentication

Pass your API key in the x-api-key HTTP header on every request.

Request header
x-api-key: YOUR_API_KEY
Never expose your API key in client-side code (JavaScript, mobile apps). Always call the API from your backend server.

Error codes

HTTP CodeMeaningWhat to do
200Request processed — always check valid fieldRead the response body
400Missing phone parameterCheck your request body
401Invalid or missing API keyCheck your x-api-key header
402No credits remainingContact us to recharge
429Rate limit exceededSlow down — retry after 1 minute

Validate a phone number

POST /v1/number/validate

Request body

FieldTypeRequiredDescription
phonestringYesThe phone number to validate (see formats)
Request — cURL
curl -X POST https://verify.e-mc.co/v1/number/validate \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"phone": "+229012345678"}'

Response — valid mobile number

HTTP 200
{
  "valid": true,
  "phone_e164": "+229012345678",
  "phone_local": "229012345678",
  "country_code": "BJ",
  "country": "Benin",
  "network": "MTN",
  "type": "mobile",
  "recommended_action": "proceed"
}

Response fields

FieldTypeDescription
validbooleantrue if the number is valid and mobile
phone_e164stringNumber in E.164 format (e.g. +229012345678)
phone_localstringE.164 without the leading +
country_codestringISO 3166-1 alpha-2 country code (e.g. BJ)
countrystringFull country name in English (e.g. Benin)
networkstringCarrier name (e.g. MTN) or unknown
typestringLine type — see line types
recommended_actionstringproceed when valid

Response — invalid number

HTTP 200
{
  "valid": false,
  "reason": "invalid_number"
}
reasonDescription
missing_phoneThe phone field is absent from the request
invalid_numberNumber does not match any known numbering plan
not_mobile_numberNumber is valid but is a fixed line, VoIP, etc.
parse_errorNumber could not be parsed (unreadable format)

Accepted phone formats

The API accepts numbers in any of these formats:

FormatExampleDescription
E.164+229012345678International with + prefix (recommended)
International (00)00229012345678International with 00 prefix
Digits only229012345678Full international digits without prefix
Spaces are ignored automatically. Always include the country dial code.

Line types

type valueDescriptionValid?
mobileMobile / cellular number✓ Yes
fixed_or_mobileCould be mobile or fixed line✓ Yes
fixed_lineFixed landline number✗ No
voipVoice over IP number✗ No
unknownType could not be determined✗ No

Code examples

PHP (cURL)

PHP
$ch = curl_init('https://verify.e-mc.co/v1/number/validate');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['phone' => '+229012345678']));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'x-api-key: YOUR_API_KEY',
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

if ($response['valid']) {
    echo $response['country'] . ' — ' . $response['network'];
}

Node.js (fetch)

JavaScript
const res = await fetch('https://verify.e-mc.co/v1/number/validate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({ phone: '+229012345678' })
});
const data = await res.json();
if (data.valid) {
  console.log(data.country, data.network);
}

Python

Python
import requests

r = requests.post(
    'https://verify.e-mc.co/v1/number/validate',
    json={'phone': '+229012345678'},
    headers={'x-api-key': 'YOUR_API_KEY'}
)
data = r.json()
if data['valid']:
    print(data['country'], data['network'])

Get API access

To obtain an API key or for any integration support, contact us at:

e-mc.co Contact

© 2026 e-MC — Phone Validation API v1