Your tcbUSD, decomposed by sub-account
The tcbUSD booked to each sub-account — held, reserved by steps in flight, and available — with the totals and the balance of the TCB wallet assigned to you. Your vault shares are on GET /positions.
The tcbUSD booked to each sub-account — held, reserved by steps in flight, and available — with the totals and the balance of the TCB wallet assigned to you. Your vault shares are on GET /positions.
Authorization
bearer In: header
Query Parameters
The currency of the token (ISO 4217).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/partner/v1/positions/tokens?currency=USD"{ "data": { "asOf": "2026-09-02T10:15:30.000Z", "currency": "USD", "custody": { "mode": "TCB_SUBACCOUNT", "walletAddress": "0x3B9aC4f27D18E056b1C4a9F30d2E85c7A6b1F094" }, "disclosure": { "items": [ "ENVIRONMENT_IS_TESTNET: The environment is a testnet (Arbitrum Sepolia). No mainnet deployment exists.", "YIELD_IS_SIMULATED: The vault rate is set administratively and the interest it produces is minted as fresh underlying, not earned. It does not represent a return generated by deployed capital.", "FIAT_RAILS_ARE_MOCKED: No real fiat movement occurs. Balances are ledger entries against a sandbox provider.", "CONVERSION_RATES_ARE_MARKET_QUOTED_OR_REFUSED: A conversion is priced only by an external venue that quotes independently of TCB. When no such venue can price the pair, the conversion is refused rather than priced from an internal table. Read rate.pricingModel on every conversion: MARKET is a venue quote; any other value is not a market rate and must not be presented as one.", "CONTRACTS_ARE_UNAUDITED: No audit has been performed. Mainnet is gated on a two-firm audit that has not been commissioned.", "CUSTODY_IS_TCB_SUBACCOUNT: Everything held for the client — its vault shares, and the tcbUSD it holds between the steps of the tokenised deposit chain — is held in TCB custody, in the one TCB wallet assigned to the client. The client holds no keys and moves those tokens only through this API; each sub-account's shares and tcbUSD are book entries against what that wallet holds.", "INTEGRATION_AGREEMENT_ONLY: Fees as published on the rate card; no yield share, no return commitment." ], "summary": "This is a pilot integration on a testnet. Nothing in this system earns anything: the yield is simulated and the fiat rails are mocked.", "version": "2026-10-27" }, "subAccounts": [ { "available": "600", "externalRef": "acme-fund-002", "held": "600", "isDefault": false, "label": "Growth Fund II", "reserved": "0", "subAccountId": "9f1c2a54-7b3d-4e08-9a61-2c5f0b7d4e13" } ], "token": { "address": "0x5c9E0a7d4F3b21C68e0A9b7D1f2E34c5A6b7C8d9", "chain": "ARBITRUM", "symbol": "tcbUSD" }, "totals": { "available": "1000", "held": "1000", "reserved": "0", "walletTokens": "1000.004" }, "yieldNote": "tcbUSD earns nothing on its own: only vault shares carry the yield." }, "success": true, "timestamp": "2026-09-02T10:15:30.000Z"}A vault's observed share price, day by day GET
One entry per UTC day in the range, oldest first: the share price as first observed that day, with the chain block it was read at and when. A day the price was not observed is returned with nulls, never a zero and never filled from a neighbouring day.
List your sub-accounts GET
Registry rows only, oldest first, so your default sub-account leads the list. Positions are on GET /partner/v1/positions, which needs a currency to be meaningful.