DocsSandbox
Sandbox
Test your integration end to end with play money. Orders placed with a test key move through a real lifecycle and fire webhooks, but never reach a supplier and never touch your real balance.
How it works
- Create a test key in the panel: API & webhooks, switch to Sandbox, Create key. Test keys start with
orb_test_. - Use the same URLs as live. Both APIs work: v2 and v1.
- Your sandbox balance starts at $1,000 and is kept apart from your real balance.
- Orders go through the same checks as live ones: service, link, quantity limits, drip-feed support and balance. They are charged at your own rates.
- Nothing a test key does reaches a supplier. Live and sandbox data never mix: a test key can’t see live orders, and a live key can’t see sandbox ones.
Request
curl https://orbismm.com/api/v1/orders \
-H "Authorization: Bearer $ORBISMM_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"service":1001,"link":"https://www.instagram.com/yourbrand","quantity":1000}'
Response · 201 Created, trimmed
{
"id": 58301,
"object": "order",
"status": "processing",
"livemode": false
}Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_TEST_KEY \
-d action=add \
-d service=1001 \
-d link=https://www.instagram.com/yourbrand \
-d quantity=1000
Response · 200 OK
{
"order": 58301
}Order lifecycle
A sandbox order moves on its own. We advance sandbox orders once a minute, so each step can come up to a minute later than shown.
| After | Status | What changes |
|---|---|---|
| Placing | processing | The charge is taken from the sandbox balance. |
| 1 minute | in_progress | start_count becomes 1000. order.started fires. |
| 3 minutes | completed | remains is 0 and refill becomes available if the service has it. order.completed fires. |
Every status change also fires order.status_changed, as on live.
Pick the ending
The link decides how the order ends, so you can test every branch of your code. Upper or lower case doesn’t matter.
| Link contains | Ending |
|---|---|
partial | partial after 3 minutes: half delivered, the other half refunded to the sandbox balance. |
cancel | canceled after 1 minute, before it starts. The full charge is refunded. |
| Anything else | completed after 3 minutes. |
# Ends completed
https://www.instagram.com/yourbrand
# Ends partial
https://www.instagram.com/yourbrand-partial
# Ends canceled
https://www.instagram.com/yourbrand-cancelCancel and refill
On a service that supports cancel, a cancel closes a sandbox order at once: canceled with a full refund if it hasn’t started, partial with the undelivered part refunded if it has. A refill on a completed or partial order starts as in_progress and completes about a minute later, firing refill.completed.
Webhooks
Add a webhook endpoint with a test key (or in the panel’s Sandbox view) to receive sandbox events. They are signed the same way and carry livemode: false. Live endpoints never get sandbox events, and sandbox endpoints don’t get service.changed or balance.low. See Webhooks.
Reset the balance
Spent your play money? Put the sandbox balance back to $1,000. Your sandbox orders stay where they are.
Request
curl -X POST https://orbismm.com/api/v1/sandbox/reset \
-H "Authorization: Bearer $ORBISMM_TEST_KEY"
Response · 200 OK: your account, with
{
"balance": "1000.0000",
"currency": "USD",
"livemode": false
}Only test keys can reset; a live key gets 403 sandbox_only. API v2 has no reset action, but its balance action shows the sandbox balance when you call it with a test key.
Going live
- Create a live key with the same scopes and swap it in for the test key.
- Add your webhook endpoint again in the Live view. It gets its own secret; update your server with it.
- Top up your balance in the panel. Live orders are charged from it and go to real suppliers.