API Reference
| Sandbox | https://rwa-api-sandbox.tbook.com/v1 |
| Production | https://rwa-api.tbook.com/v1 |
Authentication, error envelope, idempotency, pagination, amounts, and rate limits are defined once in Authentication and Conventions and apply to every endpoint below.
Endpoint map
| Area | Endpoints |
|---|---|
| Assets & Vaults | GET /assets · GET /vaults · GET /vaults/:vaultId · GET /vaults/:vaultId/price |
| Accounts | POST/GET/PATCH /accounts |
| Transactions | POST /vaults/:vaultId/tx/{deposit,redeem,claim,cancel-deposit} · POST /transactions/:intentId/confirm · GET /transactions/:intentId |
| Positions & Earnings | GET /accounts/:id/{positions,earnings,transactions,portfolio} |
| Analytics | GET /analytics/{users,aum,yield,flows} |
| Treasury | POST/GET/DELETE /treasury/allowlist · POST /treasury/withdrawals (+ approve) |
| Webhooks | POST/GET/PATCH/DELETE /webhooks · POST /webhooks/:id/rotate-secret · GET /events |
| Sandbox | POST /sandbox/{settle,faucet} (sandbox only) |
Object IDs
Every object carries a type-prefixed ID:
| Prefix | Object |
|---|---|
acct_ | Account |
txi_ | Transaction intent |
al_ | Treasury allowlist entry |
twd_ | Treasury withdrawal |
wh_ | Webhook endpoint |
evt_ | Webhook event |
req_ | Request (in error envelopes) |
che_ | Chain-history row (an on-chain transaction not built through the API, in account history) |
All timestamps are ISO-8601 UTC.
Transaction intent lifecycle
Every money movement is a transaction intent, created when you call a tx/* build endpoint:
| Status | Meaning | Entered by |
|---|---|---|
built | Unsigned transaction returned; nothing on-chain yet | build endpoint |
submitted | You reported a digest/signature via /confirm | confirm endpoint |
confirmed | Transaction observed on-chain (≤ ~1 min indexer lag) | indexer |
settled | Economic effect final: shares credited / USDC claimable / claim paid | settlement |
failed | Transaction reverted on-chain | indexer |
expired | Never seen on-chain before the unsigned transaction's validity ended — harmless, rebuild freely | indexer |
Terminal states: settled, failed, expired. The step from confirmed to settled takes one settlement cycle (T+1 / T+3 depending on the vault).
Treasury withdrawal lifecycle
pending_approval → built → submitted → confirmed, with expired as the alternate when the 24-hour approval window lapses. A successful approval builds the transaction immediately, so pending_approval moves straight to built; on-chain progress after that is tracked through the withdrawal's intentId. Organizations without dual-approval start directly at built. Details in Treasury.