Endpoint
mode=full with the cheap model. Authenticated calls (Authorization: Bearer sf_live_...) unlock the model parameter and raise the rate limit.
Rate limits:
- Anonymous: 10 requests / minute / IP
- Authenticated: 60 requests / minute / key
- Cached queries (recent identical
q+params) bypass the rate-limit counter and return immediately.
Query parameters
Required| Parameter | Type | Notes |
|---|---|---|
q | string | Natural-language event question or topic. Minimum 2 characters after trim. |
| Parameter | Type | Default | Values | Notes |
|---|---|---|---|---|
mode | string | full | full, raw | full uses LLM-expanded recall and adds an LLM-synthesised answer. raw uses deterministic retrieval and skips both query-understanding and synthesis LLM calls. |
sources | comma list | all | kalshi, polymarket, x, content, traditional | Restrict which source clusters appear in the response. |
limit | int | 10 | 1 – 20 | Max markets returned per venue. Values > 20 are clamped to 20. |
model | string | cheap | cheap, medium, heavy | Synthesis model tier. Requires auth for any value other than cheap. |
depth | boolean string | false | true | Enrich the top Kalshi markets with orderbook depth fields. Adds latency. |
nextActions | string | included | off | Omit the nextActions block (inspect / related URLs) when set to off. |
Examples
Full answer:Response
Errors
| Status | Body | Cause |
|---|---|---|
400 | { "error": "Query parameter \"q\" is required (min 2 chars)" } | Missing q or fewer than 2 chars. |
401 | { "error": "Custom model tier requires a valid API key. Add header: Authorization: Bearer sf_live_xxx" } | model=medium or model=heavy without auth. |
429 | { "error": "Rate limit exceeded. Try again in a minute." } | Hit per-minute limit (10 anon / 60 authed). |
500 | { "error": "..." } | Upstream model or DB failure. Retry with mode=raw to bypass query-understanding and synthesis LLM calls. |