Prediction Markets API
Access real-time prediction market data via x402 micropayments. Powered by Predexon.
Unified access to Polymarket, Kalshi, Binance, Limitless, Opinion and Predict.Fun, plus UMA Oracle resolution data and on-chain wallet identity & clustering — all through a single API.
Mirrors the Predexon v2 Data API (docs.predexon.com/openapi-v2.json) — read-only market data. To move funds, see the Polymarket Funding API (gasless, non-custodial deposit). Predexon's separate order-placement Trading API is not exposed.
Networks
| Network | Base URL | Asset |
|---|---|---|
| Base (Ethereum L2) | https://blockrun.ai | USDC |
| Solana | https://sol.blockrun.ai | USDC |
Pricing
| Tier | Price | Use Case |
|---|---|---|
| Tier 1 | $0.0085 | Market data, events, trades, orderbooks, positions, leaderboards |
| Tier 2 | $0.0085 | Wallet analytics (incl. identity + clustering), smart money, cross-venue search, Binance data |
Both tiers are a flat $0.0075 base plus the $0.001 per-transaction fee, so every call costs $0.0085 regardless of tier. The 402 body reports the charged price (price.amount: "0.0085") together with endpoint, method, description, category and tier; the signable x402 v2 requirements are in the X-Payment-Required / PAYMENT-REQUIRED headers (base64 JSON, also mirrored in WWW-Authenticate).
Endpoints
Polymarket — Market Data (Tier 1: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/polymarket/markets | GET | Query markets with filtering, sorting, and pagination |
/api/v1/pm/polymarket/markets/keyset | GET | Same filters as /polymarket/markets, with cursor-based keyset pagination |
/api/v1/pm/polymarket/events | GET | List events with filtering and sorting |
/api/v1/pm/polymarket/events/keyset | GET | List events with cursor-based keyset pagination |
/api/v1/pm/polymarket/crypto-updown | GET | List crypto up/down prediction markets |
/api/v1/pm/polymarket/market-price/{token_id} | GET | Get current or historical price for a token |
/api/v1/pm/polymarket/candlesticks/{condition_id} | GET | Get historical OHLCV candlestick data for a market |
/api/v1/pm/polymarket/candlesticks/token/{token_id} | GET | Get historical OHLCV candlestick data for a single outcome token |
/api/v1/pm/polymarket/volume-chart/{condition_id} | GET | Get volume chart with YES/NO breakdown |
/api/v1/pm/polymarket/orderbooks | GET | Get historical orderbook snapshots |
/api/v1/pm/polymarket/trades | GET | Query historical trade data |
/api/v1/pm/polymarket/activity | GET | Fetch trading activity (merges, splits, redeems) |
/api/v1/pm/polymarket/markets/{token_id}/volume | GET | Get historical cumulative volume |
/api/v1/pm/polymarket/markets/{condition_id}/open_interest | GET | Get historical open interest |
/api/v1/pm/polymarket/positions | GET | Fetch all user positions |
Polymarket — Analytics (Tier 1: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/polymarket/leaderboard | GET | Global leaderboard of smart wallets |
/api/v1/pm/polymarket/leaderboard/market/{condition_id} | GET | Leaderboard for a specific market |
/api/v1/pm/polymarket/cohorts/stats | GET | Compare performance across trading style cohorts |
/api/v1/pm/polymarket/market/{condition_id}/top-holders | GET | Top holders ranked by position size |
Polymarket — Wallet Analytics (Tier 2: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/polymarket/wallet/{wallet} | GET | Complete smart wallet profile |
/api/v1/pm/polymarket/wallet/{wallet}/markets | GET | Per-market performance breakdown |
/api/v1/pm/polymarket/wallet/{wallet}/similar | GET | Find wallets with similar portfolios |
/api/v1/pm/polymarket/wallet/pnl/{wallet} | GET | P&L summary and time series |
/api/v1/pm/polymarket/wallet/positions/{wallet} | GET | Open and historical positions |
/api/v1/pm/polymarket/wallet/volume-chart/{wallet} | GET | Volume chart by BUY/SELL side |
/api/v1/pm/polymarket/wallets/profiles | GET | Batch wallet profiles (max 20) |
/api/v1/pm/polymarket/wallets/filter | GET | Filter wallets by market trades |
Polymarket — Smart Money (Tier 2: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/polymarket/market/{condition_id}/smart-money | GET | Smart money positioning on a market |
/api/v1/pm/polymarket/markets/smart-activity | GET | Markets where top wallets are active |
UMA Oracle — Polymarket Resolution (Tier 1: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/polymarket/uma/markets | GET | List UMA oracle questions filtered by state (proposed, disputed, resolved, …) |
/api/v1/pm/polymarket/uma/market/{condition_id} | GET | Current UMA oracle status and event timeline for a single market |
Wallet Identity & Clustering (Tier 2: $0.0085)
Cross-context wallet labels and on-chain relationship graph data.
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/polymarket/wallet/identity/{wallet} | GET | Identity and profile metadata for a single wallet address |
/api/v1/pm/polymarket/wallet/identities | POST | Bulk identity lookup — body {"addresses":[...]} (up to 200 addresses) |
/api/v1/pm/polymarket/wallet/{address}/cluster | GET | Wallets connected to a seed address via on-chain transfers and identity proofs |
Kalshi (Tier 1: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/kalshi/markets | GET | Query markets with filtering, sorting, and pagination |
/api/v1/pm/kalshi/trades | GET | Fetch historical trade data |
/api/v1/pm/kalshi/orderbooks | GET | Fetch historical orderbook snapshots |
Binance (Tier 2: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/binance/candles/{symbol} | GET | OHLCV candlestick data (BTCUSDT, ETHUSDT, SOLUSDT, XRPUSDT) |
/api/v1/pm/binance/ticks/{symbol} | GET | Raw book ticker data at microsecond granularity |
Cross-Platform Search (Tier 2: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/markets/search | GET | Search markets across Polymarket, Kalshi, Limitless, Opinion, and Predict.Fun in a single call |
Retired. Predexon discontinued market matching on 2026-07-20, and the whole canonical layer went with it:
matching-markets,matching-markets/pairs,markets,markets/listingsandoutcomes/{predexon_id}were removed from the gateway (upstream answers410; the gateway now returns404 Not Foundfor them). Thedflow/*endpoints (dflow/trades,dflow/wallet/positions/{wallet},dflow/wallet/pnl/{wallet}) were removed on 2026-08-04 for the same reason — they no longer exist upstream.markets/searchabove is the surviving cross-venue endpoint.
Sports Markets — temporarily unavailable
/api/v1/pm/sports/* (sports/categories, sports/markets,
sports/markets/{game_id}, sports/outcomes/{predexon_id}, all Tier 1) is
returning an upstream 500 as of 2026-08-04 and is withheld from discovery until
Predexon restores it. The routes still resolve (they answer 402 unpaid), so
existing integrations keep working the moment upstream recovers; new ones should
not build on it yet. While upstream is down a paid call returns 502 and is not
charged.
Other Platforms (Tier 1: $0.0085)
| Endpoint | Method | Description |
|---|---|---|
/api/v1/pm/limitless/markets | GET | List Limitless markets with filtering and sorting |
/api/v1/pm/limitless/orderbooks | GET | Historical orderbook snapshots for Limitless |
/api/v1/pm/opinion/markets | GET | List Opinion markets with filtering and sorting |
/api/v1/pm/opinion/orderbooks | GET | Historical orderbook snapshots for Opinion |
/api/v1/pm/predictfun/markets | GET | List Predict.Fun markets with filtering and sorting |
/api/v1/pm/predictfun/orderbooks | GET | Historical orderbook snapshots for Predict.Fun |
Example: Polymarket Markets
GET https://blockrun.ai/api/v1/pm/polymarket/markets
Query Parameters
| Parameter | Type | Description |
|---|---|---|
search | string | Search query (3-100 chars) |
status | string | Filter by status (active, closed, archived) |
sort | string | Sort by volume, liquidity, created |
limit | integer | Results per page (1-100, default 20) |
pagination_key | string | Cursor for pagination |
Example
curl "https://blockrun.ai/api/v1/pm/polymarket/markets?search=bitcoin&limit=10"
Returns 402 with payment requirements. Attach an x402 payment header to get results.
Example: Kalshi Markets
GET https://blockrun.ai/api/v1/pm/kalshi/markets
Query Parameters
| Parameter | Type | Description |
|---|---|---|
status | string | open or closed |
search | string | Search in title (3-100 chars) |
ticker | string | Filter by ticker(s) (max 50) |
event_ticker | string | Filter by event ticker(s) |
sort | string | volume, open_interest, price_desc, price_asc, close_time |
limit | integer | Results per page (1-100, default 20) |
pagination_key | string | Cursor for pagination |
Example
curl "https://blockrun.ai/api/v1/pm/kalshi/markets?search=bitcoin&sort=volume"
Example: Binance Candles
GET https://blockrun.ai/api/v1/pm/binance/candles/{symbol}
Path Parameters
| Parameter | Type | Description |
|---|---|---|
symbol | string | BTCUSDT, ETHUSDT, SOLUSDT, or XRPUSDT |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
interval | string | 1s, 1m, 5m, 15m, 1h, 4h, 1d (default 1m) |
start_time | integer | Unix timestamp (seconds) |
end_time | integer | Unix timestamp (seconds) |
limit | integer | Max candles (1-1500, default 500) |
Example
curl "https://blockrun.ai/api/v1/pm/binance/candles/BTCUSDT?interval=1h&limit=24"
Example: Wallet Profile
GET https://blockrun.ai/api/v1/pm/polymarket/wallet/{wallet}
Example
curl "https://blockrun.ai/api/v1/pm/polymarket/wallet/0x1234...abcd"
Returns a complete smart wallet profile with trading stats, P&L, labels, and activity metrics.
Example: Bulk Wallet Identity (POST)
POST https://blockrun.ai/api/v1/pm/polymarket/wallet/identities
Body shape:
{ "addresses": ["0xabc...", "0xdef...", "..."] }
Up to 200 addresses per call. For a single wallet, prefer GET /polymarket/wallet/identity/{wallet}.
curl -X POST "https://blockrun.ai/api/v1/pm/polymarket/wallet/identities" \
-H "content-type: application/json" \
-d '{"addresses":["0x1234...abcd","0x5678...ef01"]}'
Example: Cross-Venue Search
GET https://blockrun.ai/api/v1/pm/markets/search
curl "https://blockrun.ai/api/v1/pm/markets/search?q=bitcoin%202026"
curl "https://blockrun.ai/api/v1/pm/markets/search?q=election&venue=kalshi"
Searches Polymarket, Kalshi, Limitless, Opinion and Predict.Fun in one call.
q is required — omitting it returns 422.
SDK Usage
Works on all clients: LLMClient (Base), AsyncLLMClient, and SolanaLLMClient.
Errors
Payment is verified before the request is forwarded and settled only after Predexon answers, so a rejected or failed request is never charged. Upstream calls time out after 30 seconds.
| Code | Description |
|---|---|
| 402 | Payment required (no payment header), payment verification failed (see codes below), authorization reused (code: "PAYMENT_REPLAY"), or settlement failed after the call (error: "Payment settlement failed") |
| 400–499 | Predexon rejected the request — its status is passed through unchanged with error: "Bad Request", a message of the form Predexon <status>: <upstream reason> (payment NOT charged), status, endpoint, method, Predexon's body in details, and for known endpoints a hint with the correct call shape. 422 is what a missing required param (e.g. q on markets/search) produces |
| 404 | Unknown or retired endpoint (error: "Not Found") |
| 502 | Predexon returned a 5xx (error: "Upstream provider error"). Payment was NOT charged, and the payment nonce is released so the SDKs can retry with the same signed header |
| 503 | Predexon integration not configured, or temporarily paused |
| 500 | Gateway error (error: "Internal server error"), including an upstream timeout |
Successful responses carry X-Payment-Response (x402 v2 settlement receipt) and X-Payment-Receipt (the settlement transaction hash).
Predexon returns 200 with unfiltered data when it receives an unknown query-parameter name — it never rejects one. Use the exact names above: free-text search is search on every list endpoint but q on markets/search; the slug filter is slug on polymarket/events but event_slug / market_slug on polymarket/markets.
Payment verification codes
A verification 402 spreads a machine-readable code:
code | Meaning |
|---|---|
PAYMENT_INVALID | Signature, amount, network or recipient did not match the requirements (default; message omitted) |
PAYMENT_UNFUNDED | The authorization could not execute on-chain — usually insufficient USDC on Base, or an expired validAfter/validBefore window |
PAYMENT_BLOCKHASH_STALE | Solana gateway only: signed against an expired blockhash — re-sign and retry |
PAYMENT_REPLAY | That authorization was already used. Sign a fresh one for each request |
Partner
These endpoints are powered by Predexon — a unified prediction market data aggregator. Payments go directly to the Predexon treasury via x402.
Full Predexon API documentation: docs.predexon.com