CSV upload vs API: two ways to validate WhatsApp numbers
When a bulk upload makes sense, when to call the API directly, and how to combine both.
August 27, 2026 · 6 min read
There are two ways to check whether a number is on WhatsApp: upload a list and validate it in bulk, or call an API and check a number in real time. Both hit the same underlying check (same accuracy, same coverage across 195+ countries). The difference is entirely about where the check happens in your workflow, not what it does.
Bulk CSV validation
Upload a CSV, get back the same list with each number marked valid or invalid. This is the right tool for:
- Cleaning an existing list before a campaign
- A one-time cleanup of old CRM or export data
- Anyone who doesn't want to write integration code
It's a batch job: you're validating a list you already have, not a number as it comes in. The whole list gets checked in one pass, and the result is tied to a named batch so you can come back later and see exactly which numbers passed or failed without re-uploading or re-running anything.
This is almost always the right starting point. If you've never validated your existing contact list, do that before wiring anything into a live workflow: there's no point checking new numbers carefully if the list they're joining is already full of dead ones. If the list spans several countries, normalize it to the right WhatsApp format per country first, a lot of what looks like a dead number in an unformatted export is really just a missing digit.
Real-time API validation
Calling the API checks a single number in real time and gets an answer back in the same request, fast enough to run inline. A single call looks roughly like this:
curl https://wavalid.rizon.agency/api/v1/validate \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber": "+14155551234"}'{
"phoneNumber": "+14155551234",
"status": "valid",
"creditsRemaining": 482
}This is the right tool for:
- Validating a number the moment it's entered in a signup form
- Checking a number before an automated message goes out
- Any workflow where the check needs to be part of a live request, not a batch step
The key difference from a CSV upload isn't speed (bulk validation is also fast per number). It's that the API check happens synchronously, in the same request as whatever triggered it, so you can act on the result immediately (accept the signup, reject it, route to a fallback channel) instead of finding out later that a number was bad.
Choosing between them
| CSV upload | API | |
|---|---|---|
| Best for | Lists you already have | Numbers entering your system live |
| Timing | Batch, run once (or periodically) | Synchronous, per request |
| Integration effort | None, just upload and go | Requires calling the API from your code |
| Typical trigger | Pre-campaign cleanup, CRM import | Signup form, new lead, pre-send check |
If you're only doing occasional list cleanup and don't have an engineering team wiring things into your signup flow, CSV covers you completely. There's no requirement to touch the API at all.
Using both
Most teams end up using both: bulk validation to clean up what already exists, and the API wired into new-signup or new-lead flows so the list doesn't rot again after the initial cleanup. That combination matters because a one-time CSV cleanup only solves the problem as of the day you ran it: every number that enters afterward through an unvalidated form is a fresh way for the same problem to come back. See how to automate WhatsApp validation for leads entering your CRM for a concrete webhook-based setup that keeps a CRM's lead flow validated automatically.
Either way, the check and its result are saved to your account, and a CSV upload can be grouped into a named batch so you can revisit the results later. The API and the CSV upload aren't two different products: they're two entry points into the same validation and the same account history.
If you're deciding where to start, clean the list you already have first (see how to clean a contact list before a campaign), then add the API check at the point where new numbers enter your system, so the cleanup you just did doesn't need repeating in a few months.
Either method also tells you which numbers to route off WhatsApp entirely. See WhatsApp vs. SMS marketing: which one actually gets delivered for what to do with the numbers that come back invalid.
