Know your number
before you send.
In 42 milliseconds.
Validate phone numbers, detect carrier and type, check porting status and reachability — before spending a single credit on delivery.
99.2%
Accuracy
~42ms
Avg. response
200+
Networks
99.2%
Accuracy
~42ms
Response time
200+
Networks
10+
Countries
7
Data points
99.9%
Uptime SLA
What you get
Seven data points.
One API call.
Field
valid
booleanWhether the number is a correctly formatted, dialable phone number.
Why lookup first?
Stop wasting credits
on bad numbers.
18%
of phone numbers in African DBs are invalid or inactive
Without validation, nearly 1 in 5 messages you send goes nowhere — wasting budget and distorting delivery stats.
~40%
cheaper to lookup than to send to an invalid number
A lookup costs a fraction of an SMS. Catching bad numbers upfront pays for itself on the very first campaign.
3×
higher conversion when messaging active, reachable numbers only
Segmenting on reachability and line type before sending measurably improves campaign ROI.
Common use cases
Validate numbers at signup before sending an OTP
Clean your contact list before launching a bulk SMS campaign
Detect ported numbers to route to the correct carrier
Filter out landlines and VoIP before SMS dispatch
Check reachability before making outbound voice calls
Identify roaming users for targeted messaging
Cost comparison
18% invalid = 1,800 wasted → $21.60 lost
Remove 1,800 invalids before sending
Save $21.60 — lookup pays for itself 7×
Developer experience
Single or bulk —
one clean API.
Lookup a single number in real time at signup, or submit up to 100 in a single bulk call for list cleaning. Same response shape either way.
GET /v1/lookup/{number} for single queries
POST /v1/lookup/bulk for batch list cleaning
Filter on valid, line_type, and reachable
import Sendexa from "sendexa";
const client = new Sendexa(process.env.SENDEXA_API_KEY);
// Single number lookup
const result = await client.lookup.number("+233 55 123 4567");
console.log(result);
// {
// valid: true,
// country: "Ghana",
// carrier: "MTN Ghana",
// line_type: "mobile",
// ported: false,
// roaming: false,
// reachable: "yes"
// }
// Bulk lookup — up to 100 numbers per call
const bulk = await client.lookup.bulk([
"+233 55 123 4567",
"+234 80 987 6543",
"+254 71 555 0011",
]);
// Filter to valid, reachable mobiles only
const sendable = bulk.filter(
(n) => n.valid && n.line_type === "mobile" && n.reachable === "yes"
);Use cases
Smarter decisions,
cleaner data.
Fraud Prevention
- Validate before OTP
- Detect VoIP / throwaway
- Flag suspicious patterns
- Enrich KYC data
Campaign Hygiene
- Clean lists before send
- Filter unreachable numbers
- Segment by carrier
- Remove landlines from SMS list
Onboarding
- Validate at signup
- Format numbers to E.164
- Detect country from number
- Pre-fill country code
Voice & Dialler
- Screen before outbound call
- Detect roaming users
- Identify ported numbers
- Optimise IVR routing
Your first 500 lookups
are on us.
Sign up, get your API key, and run your first lookup in under 5 minutes. No credit card required.