{"uid":"cap_DjnxtdfZazFKM-F9F_IwR","slug":"scanna-market-resolutions-21aa8329","name":"Scanna Market Resolutions","description":"Returns up to limit rows from the market_resolutions Postgres table, newest resolved_at first: condition_id, platform, question, winning_side (the literal 'side_a' or 'side_b', not a human label), volume_total, resolved_at. LIMIT is pushed into the SQL. No freshness field. An empty result, or one where a malformed since was silently dropped, is still a billable 200.","url":"https://api.scanna.xyz/resolutions","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":[],"properties":{"limit":{"type":"integer","default":50,"maximum":500,"minimum":1,"description":"Rows to return; out-of-range is clamped, not rejected"},"since":{"type":"string","description":"ISO 8601 timestamp, or unix MILLISECONDS as digits. Unparseable values are dropped silently and NO filter is applied."}},"additionalProperties":false}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","required":["resolutions","count"],"properties":{"count":{"type":"integer","description":"Rows returned; there is no next-page cursor"},"resolutions":{"type":"array","items":{"type":"object","required":["condition_id","platform","question","resolved_at","winning_side"],"properties":{"platform":{"type":"string"},"question":{"type":"string"},"resolved_at":{"type":"string","format":"date-time"},"condition_id":{"type":"string"},"volume_total":{"type":["number","null"]},"winning_side":{"enum":["side_a","side_b"],"type":"string","description":"Canonical side, never a human label"}}}}}}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.005007","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.005007/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005007","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005007","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_e8x1wcyn2sFgTxmYOJlnk","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005007","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Returns recent resolved prediction market outcomes from the market_resolutions table, with condition ID, platform, question, winning side, volume, and resolution timestamp.","exampleAgentPrompt":"Show me the last 100 prediction markets that have resolved, including their winning side and total volume — pull from Scanna's resolutions endpoint and filter to anything resolved since 2025-01-01T00:00:00Z.","exampleUseCases":[{"title":"Backtest prediction market strategy","prompt":"Pull the 500 most recently resolved prediction markets from Scanna with their winning sides and volumes so I can analyze which side historically wins more often across platforms."},{"title":"Daily resolution digest","prompt":"Get me all the prediction markets that resolved in the last 24 hours — use a since timestamp of 2025-06-01T00:00:00Z and limit to 200 rows — I want the question text, platform, and which side won."},{"title":"Audit specific condition IDs","prompt":"Fetch the most recent 50 resolved markets from Scanna so I can cross-reference their condition IDs against my open positions and see which ones have already settled."}],"resultDescription":"A JSON object containing a count (integer number of rows returned) and a resolutions array. Each resolution includes condition_id (string), platform (string), question (string), winning_side (enum: 'side_a' or 'side_b'), volume_total (number or null), and resolved_at (ISO 8601 datetime). Results are ordered newest resolved_at first. No pagination cursor is provided; use the limit and since parameters to paginate manually. An empty resolutions array is a valid 200 response.","failureModes":["Malformed or unparseable 'since' timestamp is silently dropped with no error — all rows are returned without date filtering, and the call is still billed as a 200","Out-of-range limit values are clamped (not rejected), so limit=0 or limit=600 resolve to boundary values silently","Empty result set (count=0) is returned as 200 and is still billable — not an error condition","No freshness guarantee: resolved_at data may lag behind actual resolution events","No next-page cursor means large datasets require repeated calls with since-based pagination, risking gaps or overlaps"],"whenToPreferThis":"Use this endpoint when you need bulk access to historical resolved prediction market outcomes across platforms (Polymarket, Kalshi, etc.) for backtesting, analytics, or settlement verification. Prefer it when you want the raw canonical winning_side ('side_a'/'side_b') rather than human-readable labels. If you only need live prices or open positions, use Scanna's prices or open-interest endpoints instead. Best suited for periodic batch pulls rather than real-time resolution monitoring.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T06:36:40.077Z","isFirstParty":false}