API Reference
The API returns data, not presentation. A formatted string is not replayable,
and replay is the whole point of the record, so numbers arrive as integers with
an explicit decimals, never as display text.
Money is an integer plus decimals
⛔ Never a float, and never a pre-formatted string. GIWA USDC is 6 decimals; so is Maru USDC. and they are different tokens. A bare number with the decimals inferred is how those two get confused.
{ "amount": "1500000", "decimals": 6, "symbol": "USDC" }Shapes come from one place
packages/schema is the single source of truth for every payload. Downstream
clients generate from it and CI fails on a non-empty diff, so a shape cannot
drift between the backend and the surfaces that read it.
The receipt
Any decision endpoint returns apyInputs, the inputs a third party replays to
reach the same verdict independently. See Verify for doing that without
asking Heron for anything.
⚠️ dataSource is required, never defaulted to "live". A response carrying
recorded data while looking live is the precise dishonesty this system exists to
remove.
This page is being regenerated from
packages/schema. Endpoint-level detail lands with that generator; the invariants above are stable and hold today.