Make phone number checks

In review — coming soon

Our 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

  1. Add the HTTP › Make a request module.
  2. URL: https://api.mobilevalidate.com/v1/lookup. Method: POST.
  3. Headers: Authorization = Bearer followed by your API key.
  4. 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.
  5. Turn on Parse response, run the module once, and map the fields you need in the next modules.
JSON
{"numbers": ["+447700900001"], "checks": ["whatsapp", "carrier"], "wait": 20}

This is the same request as this curl call (it runs as pasted):

Shell
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):

JSON
{
  "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.message and error.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?

Put up to 100 numbers in one request's numbers array (an array aggregator helps), or send larger lists as a bulk job and read the results when the job.completed webhook arrives in a Custom webhook module.

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.