API docs

A read-only REST API and a WebSocket feed. No key is needed to read. Responses are JSON.

REST base URL
https://api.popping.fi
WebSocket
wss://api.popping.fi/ws

Endpoints

MethodPathReturns
GET/api/markets?column=live_trading&limit=50Markets with live coins. column: latest, active, live_trading or resolved. Optional category and search.
GET/api/markets/{id}One market with its outcomes. Outcome prices are Popping pot shares.
GET/api/markets/{id}/candles?tf=1h&outcome=0Pot share history for one outcome. tf: 1m, 15m, 1h, 4h, 1d.
GET/api/onchain/mirrorsWhich markets have coins, and when and by whom they were launched.
GET/api/v2/onchain/marketsOn-chain state: coin addresses, coin prices, pot, circulating supply, status.
GET/api/v2/onchain/trades?limit=50Recent swaps through Popping pools. Filter with poolIds.
GET/api/v2/onchain/volumes?poolIds=…24-hour volume and trade count per pool.
GET/api/v2/onchain/positions?wallet=0x…Coins a wallet holds and what it can redeem.
GET/api/leaderboard?window=7dWallets ranked by ETH traded. window: 24h, 7d or all.
GET/api/statsLive markets, 24h volume in ETH, distinct traders.
GET/api/launch/candidates?q=…Polymarket markets that can be launched.

Amounts are in ETH as decimal numbers. Coin amounts use 18 decimals on-chain and are returned as decimal numbers too.

Examples

Fetch the live markets, then listen for updates.

curl "https://api.popping.fi/api/markets?column=live_trading&limit=10"
curl "https://api.popping.fi/api/leaderboard?window=24h"

WebSocket events

Browsers can connect only from allow-listed origins. Each message has a type:

{ "type": "onchain",       "kind": "buy" | "sell" | "resolved" | ..., "txHash": "0x…", ... }
{ "type": "market_update", "market": { ... } }
{ "type": "candle",        "marketId": "pm-…", "tf": "1m", "candle": { ... } }
{ "type": "signals",       "kind": "...", "rows": [ ... ] }

Send {"subscribe": ["market:pm-123"]} to receive only one market's events.

Errors and limits

Errors are JSON: {"error": "message"}, with conventional status codes (400 invalid request, 404 not found, 429 rate limited, 5xx server problem).

Reads are limited to 20 requests per second per IP (bursts up to 80). Requests with an issued API key in an Authorization: Bearer header get 100 per second (bursts up to 400). Keys are issued by the operator.