Skip to main content

API Reference

Sandboxhttps://rwa-api-sandbox.tbook.com/v1
Productionhttps://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

AreaEndpoints
Assets & VaultsGET /assets · GET /vaults · GET /vaults/:vaultId · GET /vaults/:vaultId/price
AccountsPOST/GET/PATCH /accounts
TransactionsPOST /vaults/:vaultId/tx/{deposit,redeem,claim,cancel-deposit} · POST /transactions/:intentId/confirm · GET /transactions/:intentId
Positions & EarningsGET /accounts/:id/{positions,earnings,transactions,portfolio}
AnalyticsGET /analytics/{users,aum,yield,flows}
TreasuryPOST/GET/DELETE /treasury/allowlist · POST /treasury/withdrawals (+ approve)
WebhooksPOST/GET/PATCH/DELETE /webhooks · POST /webhooks/:id/rotate-secret · GET /events
SandboxPOST /sandbox/{settle,faucet} (sandbox only)

Object IDs

Every object carries a type-prefixed ID:

PrefixObject
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:

StatusMeaningEntered by
builtUnsigned transaction returned; nothing on-chain yetbuild endpoint
submittedYou reported a digest/signature via /confirmconfirm endpoint
confirmedTransaction observed on-chain (≤ ~1 min indexer lag)indexer
settledEconomic effect final: shares credited / USDC claimable / claim paidsettlement
failedTransaction reverted on-chainindexer
expiredNever seen on-chain before the unsigned transaction's validity ended — harmless, rebuild freelyindexer

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.