409
conflict, a validation_failed naming the field you got wrong, a photo URL we refuse:
all of it behaves in the sandbox exactly as this documentation says.
The environment is not a parameter
Every API key is issued for exactly one workspace, and that workspace is either a sandbox or a production tenancy. Your token carries the environment it was issued for, we compare it against the workspace on every request, and a disagreement in either direction is refused withworkspace_scope_mismatch.
There is no header, no query parameter and no request field that switches environments.
To move from sandbox to production you exchange a production key — your code otherwise
does not change.
What is isolated
Everything a sandbox workspace contains is excluded from every public surface:- sandbox properties never appear in search, on the map, or in the guest feed;
- a sandbox listing has no public listing page;
- no notification of any kind is sent for sandbox activity;
- a sandbox booking can never end in a real charge — sandbox workspaces do not reach a payment provider at all, and anything that would lead to a charge is refused with a real error rather than faked.
Treat sandbox content as disposable
The platform is designed to reset sandbox content on a nightly schedule: properties, calendars and blocks can be wiped. What always survives a reset is what your integration depends on — the workspace itself, your API key, and your webhook registration. Build your sandbox setup as something you can re-run (the property and block contracts are idempotent by construction, so re-pushing your catalogue is one loop), and never treat sandbox data as durable.What the sandbox cannot prove yet
One loop is not exercisable end-to-end today: a sandbox booking. Because a sandbox workspace cannot reach a payment provider, no guest can complete a booking in it, which means abooking.confirmed webhook cannot be triggered by a real sandbox stay. Webhook
registration, the signed challenge and signature verification are all real in the
sandbox — the delivery you verify against is the challenge. This limitation is stated
here rather than papered over; see the changelog for when it
changes.