WAChecker Public API
A simple REST API to check whether phone numbers are registered on WhatsApp. Authenticate with an API key, get 100 free checks to start, then pay as you go at $5 per 1,000 validations. Build automations, AI agents, and integrations.
Auth & pricing
- 100 numbers per request — submit up to 100 phone numbers in one API call.
- API key required — send it as
Authorization: Bearer wac_...orx-api-keyon every request. Create keys on your /account page. - 100 free credits, then $5 per 1,000 — 1 credit per successfully checked number. Invalid or unparseable lines are free.
- Poll endpoints are unmetered — GET status calls do not consume credits. Poll as often as needed.
Need higher limits? Contact us.
The flow below is the bulk async API (submit → poll → CSV). For a single number, skip the polling entirely and use the synchronous GET /api/v1/lookup endpoint — one request, answer in the body.
Submit numbers
POST up to 10 phone numbers. You receive a request_id immediately. Validation happens asynchronously.
curl -X POST https://api.bulknumberchecker.com/api/v1/check \
-H "Content-Type: application/json" \
-H "Authorization: Bearer wac_your_api_key" \
-d '{
"numbers": ["+6281234567890", "+14155552671"],
"default_country": "ID"
}'Example response (2 credits charged):
{
"request_id": "req_abc123xyz",
"total": 2,
"cached": 0,
"pending": 2,
"status": "pending",
"status_url": "https://api.bulknumberchecker.com/api/v1/check/req_abc123xyz"
}Poll for results
Poll every 3–5 seconds until status is completed or failed. Poll calls do not consume quota.
curl https://api.bulknumberchecker.com/api/v1/check/req_abc123xyzExample completed response:
{
"request_id": "req_abc123xyz",
"status": "completed",
"progress": { "total": 2, "completed": 2, "cached": 0 },
"eta_seconds": null,
"results": [
{
"input": "+6281234567890",
"phoneNumber": "+6281234567890",
"countryCode": "ID",
"countryName": "Indonesia",
"whatsappStatus": "valid"
},
{
"input": "+14155552671",
"phoneNumber": "+14155552671",
"countryCode": "US",
"countryName": "United States",
"whatsappStatus": "invalid"
}
]
}Download CSV
Once status is completed, download results as a CSV file. Returns 404 {error:"not_ready"} if called before completion.
curl -o results.csv \
https://api.bulknumberchecker.com/api/v1/check/req_abc123xyz/csvCSV columns: Input, Phone Number, Country Code, Country, WhatsApp Status
Code examples
// JavaScript (fetch) — submit, poll, and print results
const API = "https://api.bulknumberchecker.com";
async function checkNumbers(numbers) {
// Step 1: submit
const res = await fetch(`${API}/api/v1/check`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ numbers }),
});
if (!res.ok) throw new Error(`Submit failed: ${res.status}`);
const { request_id } = await res.json();
// Step 2: poll until completed
while (true) {
const poll = await fetch(`${API}/api/v1/check/${request_id}`);
const data = await poll.json();
if (data.status === "completed") return data.results;
if (data.status === "failed") throw new Error("Validation failed");
await new Promise((r) => setTimeout(r, 3000)); // wait 3s
}
}
checkNumbers(["+6281234567890", "+14155552671"])
.then((results) => console.log(results))
.catch(console.error);OpenAPI 3.1 Specification
The full machine-readable API spec is available at /openapi.json. Load it into any OpenAPI-compatible tool (Postman, Insomnia, Stoplight, Scalar, etc.) or feed it to an AI agent as a tool definition.
Resources
Try the web tool
No code needed — paste numbers, get 100 free checks, then pay as you go.
Check Numbers