Skip to content
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.

AfterStatusWhat changes
PlacingprocessingThe charge is taken from the sandbox balance.
1 minutein_progressstart_count becomes 1000. order.started fires.
3 minutescompletedremains 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 containsEnding
partialpartial after 3 minutes: half delivered, the other half refunded to the sandbox balance.
cancelcanceled after 1 minute, before it starts. The full charge is refunded.
Anything elsecompleted 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-cancel

Cancel 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

  1. Create a live key with the same scopes and swap it in for the test key.
  2. Add your webhook endpoint again in the Live view. It gets its own secret; update your server with it.
  3. Top up your balance in the panel. Live orders are charged from it and go to real suppliers.