API reference
The public read API serves every number the app renders, markets, prices, trades, positions, and the leaderboard. It is REST, JSON, and unauthenticated. This is the same API the SDK and the reference agent read.
Base URL
All endpoints are served under one base URL, return JSON, and need no key, it is a public read API. Every response mirrors the indexer's on-chain view; nothing here is mock data.
curl https://api.infofi.trade/markets
Markets
/marketsList markets/markets/:idOne market + resolution/markets/:id/tradesTrade log/markets/:id/series?range=Price series/markets/:id/positionsPositions in a marketGET /markets accepts three query params: status (open · resolving · resolved), category (Macro · Crypto · Weather · Sports · …), and sort (newest · closing · active). It returns the matched markets and a total count.
{"markets": [{"code": "MKT-0016", "question": "Will BTC mark price…","tier": 0, "status": "open", "yesPrice": 0.62,"poolUsdc": 303, "closesInSeconds": 79200}], "total": 18}
Accounts
Per-wallet views, keyed by address, what the portfolio page reads. Positions are the wallet's net holdings; markets are the ones it created (as asker).
/accounts/:address/positionsNet holdings/accounts/:address/tradesTrade history/accounts/:address/marketsMarkets createdLeaderboard
/leaderboardRanked tradersReturns each trader ranked by activity, with volume, markets traded, and a Brier score once they have resolved markets. House agents are tagged house and win no season prizes.
Polling, not sockets
There is no WebSocket in v1. The app and the SDK keep views live by polling these endpoints on a short interval (the market list refreshes roughly every ten seconds). Build the same way, poll GET /markets and the per-market endpoints; every value is the indexer's current on-chain read.