World Cup Topic
The World Cup topic endpoint powers openfish.me/world-cup.html and integrations that need a tournament or match view instead of a flat market list. It groups Openfish World Cup markets by game, date, and market section.
Endpoint
Section titled “Endpoint”GET https://api.openfish.me/browse/topics/world-cup/gamesNo authentication is required.
Query Parameters
Section titled “Query Parameters”| Parameter | Type | Description |
|---|---|---|
section | string | Optional comma-separated section filter, such as winner, total, or spread. Use all or omit it for every section. |
eventSlug | string | Optional game/event slug filter, for example fifwc-team-a-team-b-2026-06-11. |
locale | string | Optional display locale. Supports en, zh, ja, ko, fr, es and aliases such as zh-CN, ja-JP, fr-FR. |
Response Shape
Section titled “Response Shape”The response is a topic document:
| Field | Description |
|---|---|
topic | Topic metadata including slug, title, source, and updatedAt. |
localization | Locale metadata including normalized locale, source, fallback locale, and fallback counts. |
summary | Aggregate event, market, live-market, volume, and 24h volume counts. |
dates | Date rollups for rendering schedule navigation. |
events | Games with eventSlug, startTime, status, rollups, and grouped sections. |
priceStream | WebSocket subscription metadata for all outcome token IDs in the topic payload. |
Each market appears under:
events[].sections[].markets[]Each outcome token ID appears under:
events[].sections[].markets[].outcomes[].tokenIdUse conditionId for market-level REST queries and tokenId for order books, prices, orders, and WebSocket subscriptions.
Localization
Section titled “Localization”The endpoint supports API-level display localization:
curl "https://api.openfish.me/browse/topics/world-cup/games?locale=zh"curl "https://api.openfish.me/browse/topics/world-cup/games?locale=ja§ion=winner"Localized fields are display-only. The endpoint may add canonical fields alongside localized fields:
| Localized field | Canonical companion |
|---|---|
topic.title | topic.canonicalTitle |
events[].title | events[].canonicalTitle |
events[].homeTeamDisplay | events[].homeTeam |
events[].awayTeamDisplay | events[].awayTeam |
sections[].title | sections[].canonicalTitle |
markets[].questionText | markets[].canonicalQuestionText |
outcomes[].label | outcomes[].canonicalLabel |
Machine fields remain language-neutral across locales:
conditionIdpolyConditionIdtokenIdeventSlugsection.keystatus- prices and order-book fields
priceStream
Localization is best-effort and layered:
clob_markets.translationsis used first when a market already has translated question/outcome text.- World Cup deterministic renderers localize match titles, tournament team names, section titles, fixed outcome labels, and common match-result questions.
- Any unsupported custom text falls back to canonical English and is counted in
localization.fallbackCounts.
Price Freshness
Section titled “Price Freshness”The topic endpoint is optimized for page discovery and initial render:
- It reads
mv_world_cup_games_topicwhen available and falls back to Gamma topic metadata if the materialized view is unavailable. - It applies current in-memory CLOB best bid/ask while building the response.
- The final topic response is cached for 300 seconds per
sectionandeventSlugfilter.
Do not treat embedded price, bestBid, and bestAsk values as a real-time feed. For near-real-time prices, extract token IDs and subscribe to /ws/market, or query /price, /prices, /book, or /books at request time.
Streaming Prices
Section titled “Streaming Prices”The response includes priceStream metadata:
{ "type": "websocket", "endpoint": "/ws/market", "publicEndpoint": "wss://api.openfish.me/ws/market", "assetIdField": "events[].sections[].markets[].outcomes[].tokenId", "subscribeTemplate": { "type": "subscribe", "assets_ids": ["<tokenId>"], "level": 2, "initial_dump": false }}Recommended flow:
- Fetch
/browse/topics/world-cup/games. - Extract all
tokenIdvalues from outcomes you render. - Open
wss://api.openfish.me/ws/market. - Send one or more
subscribemessages withlevel: 2. - Apply
price_change,best_bid_ask, andlast_trade_priceevents to the rendered outcomes.
Request level: 3 with initial_dump: true only when you need one initial full order book snapshot before applying deltas.
Examples
Section titled “Examples”Fetch all World Cup games:
curl "https://api.openfish.me/browse/topics/world-cup/games"Fetch localized display text:
curl "https://api.openfish.me/browse/topics/world-cup/games?locale=zh"Fetch match-winner markets only:
curl "https://api.openfish.me/browse/topics/world-cup/games?section=winner"Fetch a single game:
curl "https://api.openfish.me/browse/topics/world-cup/games?eventSlug=fifwc-team-a-team-b-2026-06-11"