Developer GuideSandboxTest Data & Scenarios

Test Data & Scenarios

Use these pre-built scenarios to test specific integration paths without setting up your own supply sources (Publishers) or demand sources (DSPs).


Pre-built sandbox supply sources

These supply sources are available in every sandbox environment — no setup required.

Supply SourceIDInventoryGeoGenreFloor
Sandbox CTV UAEsandbox-pub-ctv-uaeCTV video 1920×1080AEdrama$3.00 CPM
Sandbox Mobile UKsandbox-pub-mobile-ukMobile video 640×480GBsport$1.50 CPM
Sandbox Web USsandbox-pub-web-usWeb banner 300×250USnews$0.50 CPM
Sandbox CTV Globalsandbox-pub-ctv-globalCTV video 1920×1080Multiplemixed$2.00 CPM

Use these Supply Source IDs in your VAST tags or RTB requests to generate realistic auction scenarios.


Pre-built test scenarios

Retrieve any scenario via:

GET /api/sandbox/test-bid?scenario={SCENARIO_NAME}

ctv-uae-drama — CTV, Dubai, drama genre, prime time

{
  "id": "sandbox-auction-001",
  "at": 1,
  "tmax": 150,
  "app": {
    "id": "sandbox-app-ctv-uae",
    "name": "Sandbox Streaming (UAE)",
    "bundle": "com.praevis.sandbox.ctv",
    "content": { "genre": "drama", "title": "Test Drama Series" },
    "publisher": { "id": "sandbox-pub-ctv-uae" }
  },
  "imp": [{
    "id": "imp-001",
    "video": { "mimes": ["video/mp4"], "minduration": 15, "maxduration": 30, "w": 1920, "h": 1080, "startdelay": 0, "skip": 0 },
    "bidfloor": 3.00, "bidfloorcur": "USD", "secure": 1
  }],
  "device": {
    "ip": "203.0.113.42",
    "ua": "Mozilla/5.0 (SMART-TV; Tizen 6.0)",
    "devicetype": 3,
    "geo": { "country": "AE", "region": "AE-DU", "city": "Dubai" }
  }
}

mobile-uk-sport — Mobile, UK, sport genre, weekend afternoon

{
  "id": "sandbox-auction-002",
  "at": 1,
  "tmax": 150,
  "app": {
    "id": "sandbox-app-mobile-uk",
    "bundle": "com.praevis.sandbox.sport",
    "content": { "genre": "sport", "title": "Premier League Highlights" },
    "publisher": { "id": "sandbox-pub-mobile-uk" }
  },
  "imp": [{
    "id": "imp-001",
    "video": { "mimes": ["video/mp4"], "minduration": 15, "maxduration": 30, "w": 640, "h": 480, "startdelay": 0, "skip": 1 },
    "bidfloor": 1.50, "bidfloorcur": "USD", "secure": 1
  }],
  "device": {
    "ip": "198.51.100.15",
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0)",
    "devicetype": 1,
    "os": "iOS",
    "geo": { "country": "GB", "region": "GB-ENG", "city": "London" }
  }
}

web-us-news — Desktop web, US, news, morning

{
  "id": "sandbox-auction-003",
  "at": 1,
  "tmax": 150,
  "site": {
    "id": "sandbox-site-web-us",
    "domain": "sandbox-news.example.com",
    "cat": ["IAB12"],
    "publisher": { "id": "sandbox-pub-web-us" }
  },
  "imp": [{
    "id": "imp-001",
    "banner": { "w": 300, "h": 250, "mimes": ["image/jpeg", "image/png"] },
    "bidfloor": 0.50, "bidfloorcur": "USD", "secure": 1
  }],
  "device": {
    "ip": "192.0.2.100",
    "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120",
    "devicetype": 2,
    "geo": { "country": "US", "region": "US-NY", "city": "New York" }
  }
}

ctv-timeout — Circuit breaker test

Same as ctv-uae-drama but routed to TimeoutDSP (a synthetic demand source). Your endpoint will receive the request and Praevis will wait 150ms before timing out. Use this to test your endpoint’s timeout handling and circuit breaker behaviour.


Expected VAST responses

Filled — 15s pre-roll

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="4.0">
  <Ad id="sandbox-ad-001">
    <InLine>
      <AdSystem>Praevis Sandbox</AdSystem>
      <AdTitle>Sandbox Creative — 15s</AdTitle>
      <Impression id="imp"><![CDATA[https://rtb.praevis.com/track/impression?id=sandbox-001]]></Impression>
      <Creatives>
        <Creative>
          <Linear>
            <Duration>00:00:15</Duration>
            <MediaFiles>
              <MediaFile type="video/mp4" width="1920" height="1080" bitrate="2000" delivery="progressive">
                https://sandbox.praevis.com/creatives/test-15s.mp4
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

Empty — no winner

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="4.0"/>

Your ad server or player must handle the empty VAST gracefully — fire your passback tag or show a house ad.


Expected bid request for RTB validation

If you’re building a new bidder, use the ctv-uae-drama scenario above as your canonical test input. Verify your bidder:

  1. Parses app.content.genre correctly (string "drama")
  2. Reads imp[0].bidfloor (float 3.00)
  3. Reads device.devicetype (int 3)
  4. Returns HTTP 200 with price > 3.00 within 150ms OR HTTP 204

Resetting between test runs

POST /api/sandbox/reset
X-API-Key: {YOUR_KEY}

Clears all sandbox metrics and auction logs for a clean baseline. Takes effect immediately.

The pre-built sandbox supply sources are always available and are not affected by the reset — only your metrics and logs are cleared.