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
| Method | Path | Returns |
|---|---|---|
| GET | /api/markets?column=live_trading&limit=50 | Markets 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=0 | Pot share history for one outcome. tf: 1m, 15m, 1h, 4h, 1d. |
| GET | /api/onchain/mirrors | Which markets have coins, and when and by whom they were launched. |
| GET | /api/v2/onchain/markets | On-chain state: coin addresses, coin prices, pot, circulating supply, status. |
| GET | /api/v2/onchain/trades?limit=50 | Recent 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=7d | Wallets ranked by ETH traded. window: 24h, 7d or all. |
| GET | /api/stats | Live 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.