Make phone number checks
In review — coming soonOur Make app is in review and coming soon; this page will say when it is public. You can check numbers in a scenario today: Make's HTTP › Make a request module sends one POST request to the MobileValidate API and passes the parsed answer to the next modules, for example a router or a CRM update. You pay only for conclusive answers.
Get a key for your scenario
Start with a test key and the test numbers, then switch to a live key. You pay only for conclusive answers.
Use the HTTP module today
- Add the HTTP › Make a request module.
- URL:
https://api.mobilevalidate.com/v1/lookup. Method:POST. - Headers:
Authorization=Bearerfollowed by your API key. - Body type: Raw. Content type: JSON (application/json). Request content: the body below, with the phone field of an earlier module mapped in place of the number.
- Turn on Parse response, run the module once, and map the fields you need in the next modules.
{"numbers": ["+447700900001"], "checks": ["whatsapp", "carrier"], "wait": 20}This is the same request as this curl call (it runs as pasted):
curl https://api.mobilevalidate.com/v1/lookup \
-H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
-H "Content-Type: application/json" \
-d '{"numbers": ["+447700900001"], "checks": ["whatsapp", "carrier"], "wait": 20}'Response (real sandbox output, trimmed):
{
"object": "lookup",
"status": "completed",
"results": [{
"e164": "+447700900001",
"country": "GB",
"number_status": "valid",
"checks": {
"whatsapp.registered": {"status": "completed", "registered": true, "checked_at": "2026-11-08T04:18:15.858Z", "billed": false},
"network.carrier": {"status": "completed", "registered": true, "attributes": {"line_type": "mobile", "carrier": "Test Carrier", "country": "GB"}, "billed": false}
}
}],
"billing": {"billed_units": 0, "cost": {"amount": "0", "currency": "USD"}},
"next": null
}Read these fields from the response: results[0].checks["whatsapp.registered"].registered (true, false, or null when the answer is not conclusive) and results[0].checks["network.carrier"].attributes.line_type. If status is "pending", an answer took longer than wait: call the URL in next.poll_url (GET, same header) after a short delay, or send the numbers as a bulk job instead.
- Test first. The example uses the public sandbox key, which answers only the documented test numbers and is never billed. Use your own test key, then a live key, from the dashboard.
- Cost. You pay per conclusive check; unknown, unsupported, invalid and duplicate results are free, and a repeat check within the freshness window is answered from cache at no charge. See pricing.
- Lists. For more than a few hundred numbers, send one bulk job (
POST /v1/jobs, bulk price) instead of one request per number. - Errors. Errors return JSON with
error.code,error.messageanderror.retryable; the error catalog lists every code.
Last updated
Frequently asked questions
Is there a MobileValidate app on Make?
It is in review and not public yet. Until then, the HTTP module calls the same API with the request on this page.
How do I check many records?
How do I handle errors?
Errors come back as JSON with error.code, error.message and error.retryable. Add an error handler to the HTTP module: retry when retryable is true (for example rate limits), stop otherwise. The error catalog lists every code.
What do I pay?
Only conclusive checks, at our prices; inconclusive answers are free. Make operations are billed by Make.

