Why bother
It saves your allowance
A message to a number that is not on WhatsApp still counts as a send. Checks do not: they never touch your usage figures and never consume a trial allowance.
It protects your number
Sending repeatedly to numbers that are not on WhatsApp is one of the patterns that gets a number flagged or restricted. A restricted number stops sending to everyone, not just the bad entries.
It catches typos
Missing country codes, transposed digits, a stray leading zero. Better found in a lookup than in a failed batch.
It finds the right number
Some countries answer WhatsApp on a slightly different number than the one dialled. The response tells you which one to actually use.
Reading the answer
submittedvschecked— duplicates are collapsed before the lookup, so a sloppy list does not burn your batch allowance. Here 3 numbers were sent but only 2 were distinct.- Order is preserved — results come back in the order you submitted them.
The three values of exists
whatsapp_number
When it differs from number, send to whatsapp_number. Brazil’s extra 9th digit is the classic case: you store one number, WhatsApp answers on another.
Pacing a large list
The batch limit is 50 numbers per request. That is a cap on one request, not a safety guarantee — bulk number-checking looks exactly like a scraping tool, and doing 50 at a time in a tight loop is a fast route to a flagged number. Do this instead:1
Check once, store the result
Whether a number is on WhatsApp changes rarely. Cache it against the contact record and re-check every few months, not before every send.
2
Check new contacts as they arrive
One number at the moment someone signs up is invisible load. Ten thousand numbers on a Monday morning is a pattern.
3
Spread a bulk clean-up over hours
If you must validate an existing database, do it in small batches with real gaps between them — and preferably overnight, over several days.
4
Never loop checks and sends together at full speed
Check the batch, pause, then send with your normal pacing.
Python — paced batches
What it costs
- Not a message. Checks do not appear in your usage figures and do not consume a trial message allowance.
- Does count against your per-minute rate limit, shared with sending. See Rate limits.
- Needs a connected number. The lookup runs through one of your own connected numbers, so
instance_idmust point at one that is online — otherwise you get409 instance_not_connected.