Sandbox

The simulated WhatsApp number every organization gets: delivery and read receipts, auto replies, template review and failure numbers.

Every organization gets a sandbox: a simulated WhatsApp Business Account with one number, on every plan. It is served by a Meta simulator that answers the way Meta's Cloud API does, so the inbox, templates, AI agents, segments, your webhooks, the CLI and MCP can all be tried before Meta has verified your business. Nothing reaches real WhatsApp users and Meta charges nothing.

Get it

It is created the first time you sign in, or the first time anything asks for it. get_sandbox returns its account id (use it wherever an account id is asked for), its phone number id (the sender for sends), the test customers, the failure number and the starter template:

curl -X POST https://getwabi.dev/api/v1/get_sandbox \  -H "Authorization: Bearer wabi_…"

What the simulator does

WhenWhat happens
You send to a test customerSent at once, delivered after ~1 s, read after ~3 s, each as a status on the message timeline and a webhook event.
The customer repliesAbout 5 s after your message, a test customer writes back (at most once every 30 seconds and 20 times a day each), opening their 24-hour window.
You call simulate_inbound_messageA test customer sends exactly the text you give, through the same webhook pipeline as real Meta traffic.
Free-form text outside the windowFails with Meta's error 131047, as on a real number: send a template first, or have the customer write.
You submit a templateReviewed after ~60 s: approved, or rejected with INVALID_FORMAT when a variable has no example or the name contains "reject".
You send to a number ending in 0000Fails with Meta's error 131026 (undeliverable), for example 15550100000, to try failure handling end to end.
CostsEvery send carries a Meta-style price estimate so the usage pages fill in, but nothing is charged, and sandbox messages do not count against your plan.

Test customers

The sandbox number can message these WhatsApp ids, and only these:

  • 15550100001 (Sandbox customer)
  • 15550100002 (Sandbox customer 2)
  • 15550100003 (Sandbox customer 3)
  • 15550100004 (Sandbox customer 4)
  • 15550100005 (Sandbox customer 5)
  • 15550100000 and any number ending in 0000: always undeliverable.

hello_world (en_US, utility) comes approved with every sandbox, so the first message can go out before any customer has written.

Simulate a customer

curl -X POST https://getwabi.dev/api/v1/simulate_inbound_message \  -H "Authorization: Bearer wabi_…" \  -H "Content-Type: application/json" \  -d '{"text":"Hi, where is my order?"}'

from picks the test customer (default the first) and name their WhatsApp profile name. Use it to test an agent's answer, an escalation rule or your webhook handler without a phone.

What it does not do

  • It does not send real WhatsApp messages, and real phones cannot message it.
  • Meta's review is not real: a template the sandbox approved can still be rejected by Meta, so check wording and category on your live account.
  • It is not a place to load-test: its timings are fixed, not Meta's real throughput.

When it works in the sandbox, connect your own WhatsApp Business Account. Agents, contacts and webhooks carry over; templates are submitted again to the real account, because Meta approves them per account. Questions: jonathan@getwabi.dev.