Sandbox and live
Every account has a sandbox and a live side. They have separate wallets, data and API keys.
Every account exists twice: a sandbox and a live side. They are separate in every way that matters, so nothing you do while testing can touch real money or real orders.
| Sandbox | Live | |
|---|---|---|
| Orders are filled by | A built-in test provider (or the registrar's own test environment, for domains) | Real upstream providers |
| Wallet | Test funds you add yourself | Real funds |
| API keys start with | rhq_test_ | rhq_live_ |
| Numbers, domains, mailboxes | Not real | Real |
| Webhook endpoints | Its own list | Its own list |
Choosing a side
In the dashboard, use the Sandbox / Live switch at the top right. New accounts start in the sandbox.
In the API, the key decides. A rhq_test_ key can only ever reach the sandbox, and a
rhq_live_ key can only ever reach the live side. There is no parameter to switch.
Create each key on the side you want it for: switch the dashboard to that side, then open Developers.
What the sandbox does
- Test funds. Add them from the Wallet page. They cannot be withdrawn or spent on the live side.
- Phone numbers are issued instantly from a
+1 555range and never receive real SMS. Send one a test message from its page in the dashboard. - Domains, on a deployment configured for it, go to the registrar's own test environment (OT&E): names are really registered there, behave like real registrations, resolve nowhere and cost nothing. Otherwise the built-in test provider answers, where whether a name is "available" is a fixed function of the name, so the same search always gives the same answer.
- Mailboxes are not created at Google. They come up within seconds with realistic sign-in details that don't work anywhere. See Mailboxes.
- Prices in the sandbox are test prices. Do not quote them to customers.
- Webhooks are real: events are signed and delivered to your endpoint exactly as on the live side.
What is open on the live side
Phone numbers are live on accounts that have a carrier enabled. Domains need a registrar key on
the deployment, and mailboxes need a mailbox provider key; while either is missing, that
product's routes answer 422 not_available on the live side.
GET /v1/account tells you what the calling key can order:
{
"environment": "sandbox",
"products": { "numbers": true, "domains": true, "licences": true }
}products.licences is about mailbox licences, which are no longer
sold. It does not cover mailboxes. To see whether mailboxes can be ordered, call
GET /v1/mailboxes/price: it answers 422 not_available where they cannot.