Make your first request
Call the sandbox discovery endpoint. You do not need an account or a credential.200 response confirms that the sandbox is ready. The response includes:
- A ready-to-run synthetic event request under
try. - A live sandbox key under
self_serve_key.issued_key.
Test an authenticated client
Read the key fromself_serve_key.issued_key.api_key, store it in a protected local environment variable, and send it as a bearer token:
GET /api/v1/sandbox/keys returns HTTP 200, while POST /api/v1/sandbox/keys returns HTTP 201. Issuance writes nothing, so both operations are safe to repeat.
Every issued key has this shape:
PlainRouter never persists a sandbox key.
Validate without a credential
UsePOST /api/v1/sandbox/events when you want to validate a synthetic event without testing bearer authentication:
200 response has accepted: true, status: "simulated", persisted: false, and provider_delivery: false.
Use identity-free synthetic fields
The public sandbox accepts these documented fields:
The sandbox rejects
user_data, visitor_id, click_ids, event_source, consent, consent_mode, and tcf. A request containing one of these fields returns HTTP 422 with this validation message:
Understand what the sandbox does
The sandbox validates each request in memory and immediately discards it. A sandbox request:- Does not write to the Signal ledger or any other database table.
- Does not enqueue work.
- Does not contact Meta or another provider.
- Does not read production data.
Handle sandbox key errors
The keyed endpoint returns HTTP401 when its bearer credential is missing, invalid, or expired.
Each error includes an
error.resolution field that tells you to supply or issue a replacement sandbox key. The response also includes WWW-Authenticate: Bearer.
Stay within the rate limits
Sandbox limits are per client IP address:
Key issuance and keyed validation use independent budgets. Validation traffic cannot exhaust the issuance budget.