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
ParamTypeDescription
address *string
cursorCursor`blockNumber:logIndex` from `history.pagination.nextCursor`.
limitintegerA strict integer ("2.5" or "12abc" answer 400); values above 100 are clamped to 100.
FieldTypeDescription
walletstringLowercase address.
summaryCappedbooleanTrue 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.
totalBetEventsintegerBetPlaced events.
distinctRoundsBetintegerDistinct (asset, tf, round) positions.
totalStakeRawAmountSums wei across different pool tokens (legacy); use stakes[] or stakeUsdE18.
stakesobject[]Stake per asset, in that asset's pool-token wei (net of the fee).
stakeUsdE18UsdE18 | nullUSD of `paid` (gross input, fee included) at bet time, summed; null unless every bet has a value.
stakeUsdSourceUsdSource | nullSource of stakeUsdE18: set when every bet shares one source, else null.
stakeUsdCoveredintegerBets with a USD value.
payoutsobject[]Payouts and refunds per settle asset.
payoutUsdE18UsdE18 | nullUSD at claim time, summed; null unless every claim has a value.
payoutUsdSourceUsdSource | nullSource of payoutUsdE18: set when every claim shares one source, else null.
payoutUsdCoveredintegerClaims with a USD value.
netUsdE18UsdE18 | nullClosed positions: payout USD less paid USD.
netUsdSourceUsdSource | nullSource of netUsdE18: set when every row in it shares one source, else null.
netBySettleobject[]Per settle asset, over closed positions paid in that asset.
winsinteger
lossesinteger
refundsinteger
activeBetsCountinteger
claimableCountinteger
activeBetsobject[]Positions in rounds not settled in the index.
claimableBetsobject[]Unpaged: won or refunded positions not fully claimed. Quote each with UPDOWN.quoteClaimPayout(asset, tf, roundId, user).
unclaimedobject[]Per settle asset: how many claimable positions (no amounts).
historyobject
totalStakeUsdbstringDeprecated: removed at the Robinhood cutover. Use totalStake.
totalPayoutUsdbstringDeprecated: removed at the Robinhood cutover. Use payouts[].
netUsdbstringDeprecated: 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 }.