Developer GuideSandboxTesting as a DSP

Testing as a DSP (Sandbox)

Test your bidding infrastructure or Delegate strategy against synthetic supply before going live. Win rates in sandbox are higher than production — this is intentional to make validation easy.


Enable sandbox on your DSP

Open your DSP settings

Log in → Demand → click your DSP → Settings.

Enable Sandbox Mode

Toggle Sandbox Mode → Save.

In sandbox mode your demand source (DSP):

  • Receives bid requests only from sandbox supply sources
  • Is evaluated against sandbox Delegate strategies (if applicable)
  • Incurs no real spend

Traditional RTB — testing your endpoint

Receive a test bid request

Use the sandbox test-bid endpoint to generate a sample bid request and send it to your endpoint:

POST /api/sandbox/test-bid
X-API-Key: {YOUR_KEY}
Content-Type: application/json
 
{
  "dsp_id": "{YOUR_DSP_ID}",
  "scenario": "ctv-uae-drama"
}

This fires a synthetic bid request to your registered endpoint and returns the full request/response details.

Or: generate a sample bid request

Pull a sample bid request JSON without sending it to your endpoint:

GET /api/sandbox/test-bid?scenario=ctv-uae-drama

Available scenarios: ctv-uae-drama, mobile-uk-sport, web-us-news, ctv-timeout (triggers 150ms wait to test circuit breaker).

What your endpoint must return

Win (valid bid):

HTTP 200
Content-Type: application/json
 
{
  "id": "{auction-id-from-request}",
  "seatbid": [{
    "bid": [{
      "id": "your-bid-001",
      "impid": "imp-001",
      "price": 5.50,
      "adm": "https://your-vast-server.com/vast?...",
      "crid": "creative-001",
      "w": 1920,
      "h": 1080
    }],
    "seat": "{YOUR_DSP_ID}"
  }],
  "cur": "USD"
}

No bid:

HTTP 204
(empty body)

In sandbox, your win rate is higher than production because HighBidder competes with you at moderate CPMs. You win auctions where you bid above $2.50 CPM for most inventory types.


Delegate — testing your strategy

  1. Go to Demand → your DSP → Strategy tab
  2. Edit your strategy JSON in the editor
  3. Click Test in Sandbox — the dashboard fires a configurable test auction against your strategy
  4. Adjust scenario parameters (geo, device type, genre, hour) and re-test
  5. The result shows which rule matched, the effective bid calculated, and the outcome

Testing budget pacing

To test that Guide and daily budget limits work:

  1. Set a low daily_budget (e.g., $5.00) on a Delegate campaign
  2. Fire 100+ test auctions via POST /api/sandbox/simulate-auction
  3. Watch QPS drop in the dashboard as budget approaches
  4. Verify auctions stop when budget is exhausted
  5. Budget resets at midnight UTC (or via POST /api/sandbox/reset)

Testing the circuit breaker

To test circuit breaker behaviour for traditional RTB:

  1. Set your endpoint to return responses with >150ms delay
  2. Fire 10+ bid requests via POST /api/sandbox/test-bid
  3. Check health: GET /api/demand/sources/{DSP_ID}/health — circuit_breaker should become "open"
  4. Fix the latency and reset: POST /api/demand/sources/{DSP_ID}/reset
  5. Confirm circuit breaker returns to "closed"

Pre-go-live checklist — DSPs

Traditional RTB:

  • Endpoint returns HTTP 200 with valid bid within 150ms
  • Endpoint returns HTTP 204 for no-bid (not HTTP 200 with empty body)
  • VAST URL in adm field is reachable and returns valid VAST
  • Win rate > 0% in sandbox testing
  • Circuit breaker remained closed throughout testing

Delegate:

  • At least one rule matches in the test simulator
  • Effective bid is above floor for target scenarios
  • daily_budget pacing behaves correctly
  • Fallback rule ("conditions": {}) present and returning a non-zero bid

When all pass: disable Sandbox Mode → you’re live.