Overview
Sandbox mode lets you test the full media buying lifecycle — product discovery, campaign creation, creatives, execution, and delivery — without real platform calls or spending real money. Just create a sandbox advertiser and everything else is handled automatically.Safe Integration Testing
Validate your workflows end-to-end before going live. No real bids, no real spend.
Fully Automatic
Create a sandbox advertiser and you’re done. Account routing and environment isolation are handled for you.
How It Works
Sandbox is account-level, not per-request. The seller provisions a dedicated sandbox account, and every request using that account is automatically treated as sandbox. This eliminates the risk of accidentally mixing real and test traffic in a multi-step flow. When you create an advertiser withsandbox: true:
- All discovered accounts for that advertiser are sandbox accounts
- The correct sandbox account is automatically injected into every ADCP call —
create_media_buy,get_media_buy_delivery, andget_products - Delivery and reporting data are fully scoped to the sandbox environment
- Responses contain simulated but realistic data
sandbox: true flag on the advertiser.
Seller ad-server setup
For an ad-server-backed storefront, Interchange also needs a dedicated advertiser/account inside the seller’s ad server. Keep it separate from every production advertiser. The seller can either:- Create or designate a sandbox advertiser/account and assign it to the Interchange service account, then map it as the storefront’s sandbox advertiser; or
- Grant the Interchange service account permission to create advertisers so Interchange
can provision
Interchange - Sandboxautomatically.
For protocol-level details on how sandbox mode works, see the AdCP Sandbox documentation.
Creating a Sandbox Advertiser
Via API
Setsandbox: true in the create advertiser request body:
Via UI
When creating an advertiser in the dashboard, toggle the Sandbox switch before saving. Sandbox advertisers are shown with a badge in the advertiser list for easy identification.Using Sandbox
Once you have a sandbox advertiser, the entire workflow is identical to production. Discover products, create campaigns, add creatives, and execute — all using the same API endpoints. The sandbox routing is completely transparent. For example, executing a campaign:Murph Sandbox Test Plans
When Murph is enabled for an account,GET /api/v2/murph/test-runs returns the
latest sandbox test plans and diagnostics that appear in Murph’s right rail.
This endpoint is scoped to the authenticated account and requires the
ask-murph feature flag.
For a seller-owned inventory-source test, give Murph the advertiser’s brand
domain and currency during planning. Murph checks for a matching sandbox
advertiser inside that account and returns the existing advertiser ID when one
is available. The same brand-scoped sandbox account is used to preview products,
so the selected product IDs remain valid when the test runs. If no matching
advertiser exists, the read-only plan says that the confirmed execution will
create one; it never substitutes a production advertiser. Sellers do not need
buyer-side advertiser-list access or a previous test run to recover the ID.
This is a buyer advertiser owned by the currently authenticated organization;
it is not a hidden cross-organization identity or the seller-side advertiser
inside the connected ad server.
Query parameters:
Each item in
runs[] includes the plan status (planned, partial, passed,
or failed), the current stage, sanitized summary, artifacts, and
diagnostics, plus timeline steps[] with operation names, HTTP status when
available, and a diagnostic message. Murph currently records buyer-stack plans
and approval-blocked attempts; executable buyer-stack runs require a
server-issued approval token flow.
When campaign execution fails, the tool result and stored run diagnostics
distinguish local execution preflight from the buyer-side dispatch boundary.
executionAttempted: true means the buyer stack evaluated a prepared media
buy. dispatchAttempted: false means that evaluation failed before a
create_media_buy dispatch began, so no seller call could have been issued. The
associated executionErrors[] entry contains the media-buy ID, sales-agent ID,
and specific preflight message.
dispatchAttempted: true proves only that the buyer-side boundary was reached;
an internal storefront can still fail before forwarding to its inventory
source. mediaBuysAttempted counts prepared buys evaluated by
execute_campaign; it does not by itself prove that a seller received a call.
diagnostics.agentCalls lists the per-seller results returned by the discovery
round-trip (get_products), including on runs that later fail at product
selection or the dispatch boundary — a downstream failure does not clear the
seller results discovery already returned. To confirm whether a seller was
reached on the wire regardless of what discovery returned, cross-check the
storefront activity log, which records the raw round-trip. These are safe
summaries only, not raw upstream responses.
When a Murph sandbox execution fails or stalls after recording a run, Murph
opens Test Runs directly on that run. Hosts that cannot embed the MCP App, such
as Slack, show an Open diagnostics button that opens the same exact-run
view. This handoff is driven by the typed tool result and its runUid, not by
matching words in Murph’s answer.
In an app-capable host, select Fix this run to have Murph diagnose the exact
persisted failure and apply any safe repair available through typed tools. The
result, any error, and Try again stay inside that run’s detail; the action
does not add a synthetic message to the host composer. If an external change or
human decision is still required, the inline result names that prerequisite
before you rerun the test.
Filtering Sandbox Advertisers
Thesandbox field is returned on every advertiser response. Use the optional sandbox query parameter to filter:
Key Constraints
Next Steps
Advertiser API Reference
Full schema for
POST /advertisers, including the sandbox field.AdCP Sandbox Docs
Protocol-level details on how sandbox mode works in AdCP.
Quickstart
Get up and running with the Interchange API.