Browse World Cup Games
Endpoint
Section titled “Endpoint”GET /browse/topics/world-cup/games
Server: https://api.openfish.me (port 3002)
Auth: None
Tags: Browse, Market Data
The endpoint returns World Cup markets grouped by game and section. It is intended for pages and agents that need a tournament view rather than a flat market list.
Request Parameters
Section titled “Request Parameters”| Name | In | Type | Description |
|---|---|---|---|
section | query | string | Optional comma-separated section filter. Omit it, use all, or pass values such as winner, total, or spread. |
eventSlug | query | string | Optional game/event slug filter. |
locale | query | string | Optional display locale. Supports en, zh, ja, ko, fr, es and BCP-47 aliases such as zh-CN or ja-JP. If omitted, Accept-Language may be used; otherwise the API falls back to English. |
Response
Section titled “Response”200 — Topic document with game, market, outcome, and stream metadata.
{ "topic": { "slug": "world-cup-games", "title": "世界杯", "canonicalTitle": "World Cup", "source": "openfish:mv_world_cup_games_topic", "updatedAt": "2026-06-15T00:00:00Z" }, "localization": { "requestedLocale": "zh", "locale": "zh", "fallbackLocale": "en", "source": "query", "translated": true, "supportedLocales": ["en", "zh", "ja", "ko", "fr", "es"], "contentSources": { "marketTranslations": "clob_markets.translations", "fallbackTemplates": "world_cup_deterministic_v1" }, "fallbackCounts": { "topic": 0, "events": 0, "sections": 0, "markets": 0, "outcomes": 0 } }, "summary": { "eventCount": 64, "marketCount": 320, "activeMarketCount": 320, "liveMarketCount": 320, "volume": "0", "volume24h": "0" }, "dates": [ { "date": "2026-06-11", "eventCount": 1, "activeMarketCount": 5, "liveMarketCount": 5 } ], "events": [ { "eventId": "fifwc-team-a-team-b-2026-06-11", "eventSlug": "fifwc-team-a-team-b-2026-06-11", "title": "西班牙 对 佛得角", "canonicalTitle": "Spain vs. Cabo Verde", "homeTeam": "Spain", "awayTeam": "Cabo Verde", "homeTeamDisplay": "西班牙", "awayTeamDisplay": "佛得角", "startTime": "2026-06-11T20:00:00Z", "eventDate": "2026-06-11", "status": "upcoming", "marketCount": 5, "sections": [ { "key": "winner", "title": "胜平负", "canonicalTitle": "Winner", "markets": [ { "conditionId": "0x...", "questionText": "2026-06-11 西班牙 会获胜吗?", "canonicalQuestionText": "Will Spain win on 2026-06-11?", "status": "LIVE", "openfishLive": true, "outcomes": [ { "tokenId": "71321045...", "label": "是", "canonicalLabel": "Yes", "price": "0.52", "bestBid": "0.51", "bestAsk": "0.53", "pct": "52.0" } ] } ] } ] } ], "priceStream": { "type": "websocket", "publicEndpoint": "wss://api.openfish.me/ws/market", "assetIdField": "events[].sections[].markets[].outcomes[].tokenId" }}Freshness
Section titled “Freshness”The topic response is cached for 300 seconds per filter. It is a discovery and initial-render response, not a real-time price feed.
Locale is part of the cache key. ?locale=en and ?locale=zh are cached independently.
For current prices:
- Use
tokenIdwithGET /price,POST /prices,GET /book, orPOST /books. - Use
priceStream.publicEndpointand subscribe to token IDs for near-real-time updates. - Use
conditionIdwith/prices-history?market={condition_id}for persisted snapshot history.
curl "https://api.openfish.me/browse/topics/world-cup/games"curl "https://api.openfish.me/browse/topics/world-cup/games?locale=zh"curl "https://api.openfish.me/browse/topics/world-cup/games?section=winner"curl "https://api.openfish.me/browse/topics/world-cup/games?eventSlug=fifwc-team-a-team-b-2026-06-11"Localized display text is best-effort. World Cup localization uses three layers: clob_markets.translations when present, deterministic World Cup templates and team dictionaries, then canonical English fallback. Machine fields such as conditionId, tokenId, eventSlug, section.key, status, prices, and WebSocket payloads remain language-neutral.