POST /api/:exchange/:method), the
Router is GET-based, browser-friendly, and never falls through to a
live venue call. It is always served from the Postgres catalog.
Endpoint
Query parameters
| Parameter | Type | Default | Notes |
|---|---|---|---|
query | string | — | Full-text ILIKE over event title and slug. |
limit | integer | 50 | Max rows, capped at 500. |
offset | integer | 0 | Standard pagination offset. |
closed | boolean | false | Include events whose closes_at has passed. |
category | string | — | Exact match on normalized category. |
exchange | string | — | Filter to a single venue (polymarket, kalshi, …). |
Example
UnifiedEvent.
Latency
Typical p95 on a warm catalog: ~10 ms per request, regardless of venue. Cross-venue fan-out that would take 2–5 seconds live is served by a single indexed SQL query againstprediction_markets.events +
prediction_markets.markets + prediction_markets.outcomes.
See Catalog vs Live for the full rationale.
