Endpoints
Authentication
All endpoints require a session JWT:List opportunities
Query parameters
number
default:"40"
Minimum arbitrage score to include. Range 0–100. The default of 40 excludes noise-tier opportunities.
string
Filter by classification tier. One of
actionable, informational, or noise.actionable— Score ≥ 70, positive net spread, liquidity above $500.informational— Score 40–69 or low liquidity. Worth monitoring but not immediately executable.noise— Score below 40. Likely ephemeral or uneconomical.
string
Filter by market category, e.g.
crypto, politics, sports.string
Filter by lifecycle status:
active, stale, or resolved.string
Filter by policy guarantee class:
STRICT or QUASI. STRICT indicates the opportunity passed all policy checks cleanly.string
Filter by runtime risk gate state:
allowed, degraded, or blocked.number
default:"50"
Maximum items to return (1–200).
Example request
cURL
Response structure
The response contains adata object with two keys:
data.opportunities— array ofArbitrageOpportunityobjects.data.stats—ScanStatsfor the filtered result set.data.stats_all—ScanStatsfor the unfiltered result set (useful for dashboard summaries).meta— pagination state plussource(database,cache, orempty) and adisclaimernote about guarantee interpretation.
ArbitrageOpportunity schema
string
required
Unique opportunity identifier, e.g.
"arb_poly_limit_abc123".string
required
UUID of the canonical question this opportunity belongs to.
string
required
Human-readable question text, e.g.
"Will BTC reach $100k by 2026?".string
URL-safe question slug.
string
Market category.
string
ISO 8601 market expiry timestamp.
null for perpetual markets.string
required
Arbitrage strategy:
direct (same outcome priced differently across platforms) or dutch_book (buy Yes on one platform and No on another for a combined cost below $1).object
required
Platform where you buy the outcome. Contains
id, slug, and name.object
required
Platform where you sell (or buy the opposite outcome). Contains
id, slug, and name.number
required
Price to buy the outcome, expressed as a probability from 0 to 1.
number
required
Price to sell the outcome on the other platform, from 0 to 1.
number
required
Raw price spread (
sell_price – buy_price).number
required
Spread in basis points (1 bps = 0.01%).
number
required
Spread after deducting platform fees from both legs.
number
required
Estimated profit per $100 deployed, in USD.
number
Annualized return based on time remaining to market expiry.
number
required
Multi-factor quality score from 0 to 100. Combines execution quality (spread, fees), market quality (liquidity, volume), and temporal quality (time to expiry).
string
required
actionable, informational, or noise.number
Combined available liquidity across both legs in USD.
number
Combined 24-hour trading volume across both legs in USD.
number
Number of platforms listing this question.
string
required
ISO 8601 timestamp when this opportunity was first detected.
string
Last timestamp when this opportunity was observed in a scan cycle.
string
Lifecycle state:
active, stale, or resolved.object
required
Fee breakdown for both legs.
number
Estimated probability of execution fill, from 0 to 1.
number
Estimated slippage in basis points.
number
Net expected edge after accounting for fill probability and slippage.
number
Advisory position size in USD.
number
Advisory portfolio allocation weight from 0 to 1.
string
Runtime risk gate:
allowed, degraded, or blocked.string
Machine-readable reason when the gate is
degraded or blocked. null when allowed.string
Policy guarantee class:
STRICT or QUASI.string
Certificate identifier when governance evidence exists.
object
Freshness metadata for this opportunity.
object
Per-dimension quality scores that feed into the final
arbitrage_score.Get single opportunity
Path parameters
string
required
Opportunity identifier, e.g.
arb_poly_limit_abc123.Example request
cURL
Get certificate
guarantee class. Only opportunities with a non-null certificate_id have a certificate.
