Skip to main content
One row per (topic, option) the key owner holds. With v21_lmsr a user places at most one order per topic — positions cannot be added to or switched. Selling a position is only available in the SeeSaw app; a position the user sold there shows up here as sold: true. Scope: read · Annotations: readOnlyHint REST equivalent: GET /open/v1/me/positions

Parameters

Returns

stake_coins is the coins the order spent. units is the raw unit count, before any ruby boost. A correct option pays units × the order’s ruby multiplier (1 without a boost), and the stake itself is not returned. While the position is open, payout_if_correct_rubies carries a guaranteed minimum — units × the order’s current multiplier; if the topic settles while a ruby boost is live, it pays at the higher multiplier. Once the topic settles, payout_rubies is what settlement actually paid. See Rubies and positions. Branch on sold first, then refunded, then settled. settled and settled_at describe the topic, so they alone do not tell you whether won is readable. A settled: true row with a null won is a sale or a refund, not a server-side error.
A sold position no longer takes part in settlement. Whatever the topic’s outcome — even if the sold option wins, or the topic is ruled invalid — the row keeps won, payout_rubies and payout_if_correct_rubies at null and refunded at false. What the user received is sold_rubies. Don’t report a win or a payout for a sold row.A refunded position got its stake back — it is neither a win nor a loss, and won / payout_rubies are null exactly like an open row. The two refund paths differ: an invalid ruling is terminal and carries invalid_reason, while an ops takedown returns the stake with no ruling at all (settled: false, invalid_reason: null, and the topic may still be active). refunded: true with a null invalid_reason is valid, not a missing field. Such positions stay visible to their holder on purpose — the money moved, so the row has to be findable.
The row carries no sale time. To find when a position was sold, look for its ruby_trade_sell entry in list_my_ruby_ledger. Example — one open position placed during a 2× ruby boost, and one position sold in the app on a topic that has since settled:
Settled outcomes live here too — there is no separate settlements tool. Pass sort=settled to lead with them.

Example prompts

  • “What positions am I holding?”
  • “How did my settled predictions turn out?”
  • “Which positions did I sell in the app, and for how many rubies?”
get_my_profile · list_my_ruby_ledger · preview_order · Rubies and positions