Two kinds of data
| Kind | Can you set it? | Examples |
|---|---|---|
Faithful data — ids, status, amounts, timestamps, counters, anything the API derives from your inputs and its own lifecycle | No — faking it would break fidelity, and you never need to | id, status: succeeded, amount, created_at |
| Out-of-control values — what the API reads or receives from outside itself; the real service can’t predict these either | Yes — this is the legitimate surface you control | a bank balance an agent reads, a transcript, a model’s risk score |
sandbox.exogenous.*).
Why the line matters
Faithful data is non-negotiable. Create a charge for$20, and the GET returns $20. The status
really advances pending → succeeded. You can’t fake these because the value of the sandbox is that
they’re real — that’s what your green test is asserting against.
Out-of-control values are genuinely nobody’s to predict. When an agent reads a rent balance off a
portal, that number originates outside the API’s logic — real prod can’t predict it either. So you
pre-define it. That’s not cheating; it’s the only honest option.
The line runs between fields, not between endpoints
A single response is assembled per field. One object can carry faithful fields (status,
created_at) and an out-of-control one (output) side by side — each resolved from its own source,
then frozen together into one object.
Set once, then frozen
An out-of-control value is resolved once, at the moment it’s produced (a run’soutput binds when
it reaches completed), then frozen into the object and replayed verbatim on every later read.
This one rule gives you a powerful guarantee:
The webhook payload, a later GET, and a list view are all views of one frozen value — so they
always agree.
That consistency holds by construction, not by reconciliation. (Test it →)
How much you’ll set depends on the API
Owns its state
Stripe, GitHub. Mostly faithful data; you barely touch the out-of-control surface.
Read-only window
Weather, market data. Out-of-control but easy — sensible defaults usually suffice.
Passthrough
Deck. Acts on reality it doesn’t own. Out-of-control-heavy — you set the values that matter.