Up/Down
Wallet Up/Down Record
The Up/Down record of any wallet, from the database (GET /api/v1/me/updown is its alias). The live lobby, bet quotes and claim payouts are read on chain: UPDOWN.currentRoundId + getRound for the live round, quoteSharesForInput for a bet, quoteClaimPayout for each claimable round (the SDK's upDown module).
Rendered from /openapi.json. Amounts are raw decimal strings in the units of the asset named beside them; USD values are USD × 1e18, null when unknown, with a usdSource. Quotes are hints: the contract is the final check.
GET
/api/v1/wallet/{address}/updown
Wallet Up/Down record. The Up/Down record of a wallet, from the database (no chain read): summary, active and claimable bets, the number of claimable positions per settle asset, and a cursor-paged history. Stakes are pool-token wei (18 dec); payouts are the asset's settle asset. A no-winner round refunds every bet. `stakeUsdb` on the lists is deprecated (use stake). The claimable list says which rounds to claim; the payout is UPDOWN.quoteClaimPayout(asset, tf, roundId, user) on chain (one multicall; a 0 result means not quotable now), and the wallet sends UPDOWN.claim(asset, tf, roundId, 10000, 1, minOut) itself. Removed on 2026-10-09: claimableBets[].payoutQuote / payoutUsdE18 / usdSource / call, unclaimed[].amount / unquoted / amountUsdE18 / usdSource, and the live getRound end time of a round the index has not stored (activeBets[].endTime stays null until it is indexed).
Auth: API Key
| Param | Type | Description |
|---|---|---|
| address * | string | |
| cursor | Cursor | `blockNumber:logIndex` from `history.pagination.nextCursor`. |
| limit | integer | A strict integer ("2.5" or "12abc" answer 400); values above 100 are clamped to 100. |
| Field | Type | Description |
|---|---|---|
| wallet | string | Lowercase address. |
| summaryCapped | boolean | True when the wallet has more than 50,000 bets or more than 50,000 claims. The summary figures, active bets and claimable list then cover the newest 50,000 of each, so they are a recent window. The paged history is not cut. |
| totalBetEvents | integer | BetPlaced events. |
| distinctRoundsBet | integer | Distinct (asset, tf, round) positions. |
| totalStake | RawAmount | Sums wei across different pool tokens (legacy); use stakes[] or stakeUsdE18. |
| stakes | object[] | Stake per asset, in that asset's pool-token wei (net of the fee). |
| stakeUsdE18 | UsdE18 | null | USD of `paid` (gross input, fee included) at bet time, summed; null unless every bet has a value. |
| stakeUsdSource | UsdSource | null | Source of stakeUsdE18: set when every bet shares one source, else null. |
| stakeUsdCovered | integer | Bets with a USD value. |
| payouts | object[] | Payouts and refunds per settle asset. |
| payoutUsdE18 | UsdE18 | null | USD at claim time, summed; null unless every claim has a value. |
| payoutUsdSource | UsdSource | null | Source of payoutUsdE18: set when every claim shares one source, else null. |
| payoutUsdCovered | integer | Claims with a USD value. |
| netUsdE18 | UsdE18 | null | Closed positions: payout USD less paid USD. |
| netUsdSource | UsdSource | null | Source of netUsdE18: set when every row in it shares one source, else null. |
| netBySettle | object[] | Per settle asset, over closed positions paid in that asset. |
| wins | integer | |
| losses | integer | |
| refunds | integer | |
| activeBetsCount | integer | |
| claimableCount | integer | |
| activeBets | object[] | Positions in rounds not settled in the index. |
| claimableBets | object[] | Unpaged: won or refunded positions not fully claimed. Quote each with UPDOWN.quoteClaimPayout(asset, tf, roundId, user). |
| unclaimed | object[] | Per settle asset: how many claimable positions (no amounts). |
| history | object | |
| totalStakeUsdb | string | Deprecated: removed at the Robinhood cutover. Use totalStake. |
| totalPayoutUsdb | string | Deprecated: removed at the Robinhood cutover. Use payouts[]. |
| netUsdb | string | Deprecated: removed at the Robinhood cutover. Use netUsdE18. |
200 Up/Down record400 Invalid parameter401 Missing or invalid API key429 Rate limit exceeded502 The database read failed (code db_failed). The route makes no chain read.503 Not deployed on this network: { error, code: "not_deployed", feature }.