Skip to main content
Test-mode keys (rb_test_*) route every send to a simulator that:
  • Does not contact real carriers.
  • Does not debit your wallet.
  • Does fire webhooks with realistic delivery receipts.
  • Does return deterministic outcomes based on magic numbers.
You build your whole integration — including DLR handling and error branching — before a single real kobo changes hands.

Creating a test key

In the dashboard: API keys → Create → check “test mode”. The returned key is prefixed rb_test_*.
Keep live and test keys in separate env vars. Convention: ROBASE_API_KEY for prod, ROBASE_TEST_KEY for dev/CI.

Magic numbers

Send to specific numbers to simulate outcomes: Any other E.164 number defaults to the …0001 behavior (fast delivery).

Example: exercise every branch

Webhooks in test mode

Test-mode sends fire webhooks exactly the same way live sends do. Register a test webhook at a tunnel URL (ngrok, cloudflared) while developing, then swap for your production URL when you ship. The event payload includes test_mode: true in the data object so you can branch or log differently:

Test mode in CI

A common CI pattern:
Every integration test hits real Robase with a test key. You get genuine end-to-end confidence without cost, and you catch API contract regressions immediately.

What test mode doesn’t simulate

Carrier-specific rejections. Some MNOs filter certain keywords (gambling, loan promos) that our simulator passes through. Test mode catches schema / wallet / compliance issues — it doesn’t replace a smoke test on real numbers before launch.