> ## Documentation Index
> Fetch the complete documentation index at: https://docs.probsights.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Search events

> Find events by text query or series.

An event groups the outcome markets for one tradable window (e.g. one 15-minute
Bitcoin interval). Provide `q`, `series_id`, or both.

## Request

```
https://api.probsights.com/search/events
```

### Query parameters

<ParamField query="q" type="string">
  Substring match on title, subtitle, source event id, and market questions.
  **Required unless `series_id` is set.**
</ParamField>

<ParamField query="series_id" type="string">
  Filter to one series (e.g. `KXBTC15M`). **Required unless `q` is set.**
</ParamField>

<ParamField query="exchange" type="string">
  `kalshi` or `polymarket`.
</ParamField>

<ParamField query="category" type="string">
  Exact category match.
</ParamField>

<ParamField query="status" type="string" default="active">
  `active` or `closed`.
</ParamField>

<ParamField query="min_volume" type="number">
  Minimum aggregate volume across child markets.
</ParamField>

<ParamField query="discovered_after" type="string">
  ISO 8601 timestamp; `discovered_at >= discovered_after`.
</ParamField>

<ParamField query="sort_by" type="string">
  `relevance`, `newest`, `markets`, `volume`, or `liquidity`.
  Defaults to `relevance` when `q` is set, otherwise `newest`.
</ParamField>

<ParamField query="limit" type="integer" default="20">
  Number of results (1–100).
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Pagination offset.
</ParamField>

## Response

Returns a JSON **array** of event objects.

<ResponseField name="event_id" type="string">
  Source event ticker / ID.
</ResponseField>

<ResponseField name="exchange" type="string">
  `kalshi` or `polymarket`.
</ResponseField>

<ResponseField name="series_id" type="string">
  Parent series source ID.
</ResponseField>

<ResponseField name="title" type="string">
  Event title.
</ResponseField>

<ResponseField name="url" type="string">
  Exchange web page URL when available.
</ResponseField>

<ResponseField name="status" type="string">
  `active` or `closed`.
</ResponseField>

<ResponseField name="market_count" type="integer">
  Number of child markets.
</ResponseField>

<ResponseField name="total_volume" type="number">
  Sum of child market volume.
</ResponseField>

<ResponseField name="total_liquidity" type="number">
  Sum of child market liquidity.
</ResponseField>

<ResponseField name="market_questions" type="array">
  Questions from child markets.
</ResponseField>

## Examples

### Active events in a Kalshi BTC 15m series

<CodeGroup>
  ```bash cURL theme={null}
  curl -H "X-API-Key: YOUR_API_KEY" \
    "https://api.probsights.com/search/events?series_id=KXBTC15M&status=active&limit=10"
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      "https://api.probsights.com/search/events",
      headers={"X-API-Key": "YOUR_API_KEY"},
      params={"series_id": "KXBTC15M", "status": "active", "limit": 10},
  )
  events = response.json()
  ```
</CodeGroup>
