OpenPoly logo
Operator Api

Resolutions

Query resolved market exposure and payout liability for the operator.

Resolutions

Query resolved markets where this operator has current or settlement-time Mini App exposure.

Path

GET /api/operator/resolutions

Required scope: redemptions:read

Query params

All query parameters are optional.

ParameterTypeRequirementValues/default
searchstringOptionalCase-insensitive match against market slug or title.
marketstringOptionalConvenience filter: positive numeric market ID or exact market slug.
market_idpositive integerOptionalExact market ID. Takes precedence over a numeric market.
market_slugstringOptionalExact market slug. Takes precedence over a slug in market.
resolved_fromISO 8601 date-timeOptionalInclude rows whose approximate resolved_at is on or after this timestamp.
resolved_toISO 8601 date-timeOptionalInclude rows whose approximate resolved_at is on or before this timestamp.
resolved_from_datedate (YYYY-MM-DD)OptionalInclusive Operator-local approximate resolution-date lower bound.
resolved_to_datedate (YYYY-MM-DD)OptionalInclusive Operator-local upper bound; cutoff is next-day local midnight.
sortstringOptionalresolved_at_desc (default), resolved_at_asc, net_desc, or net_asc.
pagepositive integerOptionalDefault 1.
page_sizepositive integerOptionalDefault 25, maximum 100.

Response fields

The response-level summary contains totals across all filtered rows, not only the current page:

  • yes_shares_micro_total
  • no_shares_micro_total
  • net_shares_micro_total
  • net_balance_minor_total
  • currency_code
  • timezone

Each item contains:

  • nested market.id, market.slug, market.title
  • resolved_at
  • outcome: yes or no
  • yes_shares_micro
  • no_shares_micro
  • net_shares_micro
  • losing_value_minor
  • winning_value_minor
  • net_balance_minor
  • currency_code
  • fx_rate_snapshot: latest snapshot used by a processed auto-redemption item for this operator and market, or null; contains id, provider, pair, rate, and quoted_at

Calculation rules

net_shares_micro is losing-side shares minus winning-side shares.

net_balance_minor is losing_value_minor - winning_value_minor in operator currency minor units. The dashboard, CSV, and copied HTML label it Net resolution exposure; the API field is unchanged. This lifetime market exposure is not monthly settlement, closed-market principal, or realized trading P&L. Use Opinion Settlement Reports with settlements:read (or *) for monthly accounting.

losing_value_minor is the losing outcome's historical processed trade value: sum(buy wallet amount - converted fee) - sum(sell wallet amount + converted fee). It can be negative after net selling; it is not simply losing shares multiplied by a current price. winning_value_minor combines stored processed redemption payouts (preferring succeeded credits, otherwise stored item amounts) and current/pending-share projections. net_desc / net_asc sort by net_shares_micro, not currency cash PnL.

Share exposure is reconstructed from current positions plus winning shares already deducted by Mini App redemption items. This matters because midnight redemption processing can deduct winning shares before an operator reviews the resolved market.

When multiple processed auto-redemption items exist for one market, fx_rate_snapshot comes from the most recently updated item (then highest item ID). A row without processed auto-redemption returns null. Pending winning-share projections still use the current request-time FX snapshot; processed payouts retain their stored operator-currency amounts.

Actual successful reconciled wallet-credit cash is authoritative for settlement. Resolution exposure and stored payout fallbacks are not evidence that every payout has reconciled; the monthly report discloses unreconciled payouts and blocks export until reconciled.

Caveat

Current resolved_at and resolution date filters are based on markets.updated_at in v1 API. Treat them as approximations until dedicated resolved timestamp exists. Date-only filters use response summary.timezone.

Resolved-market user cash PnL

GET /api/operator/market-pnl requires both trades:read and redemptions:read (or *). It groups confirmed Opinion wallet cash by user and resolved market, including users who sold all holdings before resolution. This is a different measure from resolution exposure.

See the dedicated Market PnL reference for filters, exact integer-string cash amounts, historical quoted_fee_credits / quoted_fee_minor, warning counts, and summary/pagination shapes. Quoted fees are reference-only and must not be deducted from cash PnL again.

Cash-flow issue drill-down

  • GET /api/operator/market-pnl/issues returns paginated source records behind warnings.
  • GET /api/operator/market-pnl/issues/{kind}/{sourceId} returns redacted wallet evidence and resolution history.

Both additionally require balance_operations:read. See Cash-flow triage for issue-state filters, source/operation fields, detail evidence, and limits. The Operator API is read-only for reconciliation; Admin confirmation permissions are a separate boundary.

Copyright © 2026