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

# Quickstart

> API key to working code in 30 seconds.

## 1. Get an API key

Go to [pmxt.dev/dashboard](https://pmxt.dev/dashboard) and create a key.
It starts with `pmxt_live_` and works immediately.

## 2. Query a venue

Pick a venue and start pulling data. The SDK gives you a unified
interface — same method names and response shapes where the venue
supports them.

<Tabs>
  <Tab title="Python">
    ```bash theme={null}
    pip install pmxt
    ```

    ```python theme={null}
    import pmxt

    poly = pmxt.Polymarket(pmxt_api_key="pmxt_live_...")
    markets = poly.fetch_markets(query="election", limit=3)

    for m in markets:
        print(m.title, m.outcomes[0].price)
    ```
  </Tab>

  <Tab title="TypeScript">
    ```bash theme={null}
    npm install pmxtjs
    ```

    ```typescript theme={null}
    import pmxt from "pmxtjs";

    const poly = new pmxt.Polymarket({ pmxtApiKey: "pmxt_live_..." });
    const markets = await poly.fetchMarkets({ query: "election", limit: 3 });

    markets.forEach((m) => console.log(m.title, m.outcomes[0].price));
    ```
  </Tab>
</Tabs>

Switch venues by swapping the class — `pmxt.Kalshi(...)`,
`pmxt.Limitless(...)`, etc. PMXT keeps the schema consistent, with
per-venue capabilities called out in [Supported venues](/concepts/venues).

## 3. Search the hosted catalog

The **Router** is PMXT's cross-venue search layer — and the foundation
for a full smart order router for prediction markets. One query searches
across the hosted catalog and returns ranked, unified results.

```bash theme={null}
curl "https://api.pmxt.dev/v0/markets?query=election&limit=3" \
  -H "Authorization: Bearer pmxt_live_..."
```

```json theme={null}
{
  "data": [
    {
      "marketId": "d35bc8c6-5602-477d-af21-e9513af9d696",
      "title": "US forces enter Iran by April 30?",
      "volume24h": 89757605.08,
      "outcomes": [
        { "outcomeId": "...", "label": "April 30",     "price": 0.9985 },
        { "outcomeId": "...", "label": "Not April 30", "price": 0.0015 }
      ]
    }
  ],
  "meta": { "count": 3, "limit": 3, "offset": 0 }
}
```

The same `marketId`, `title`, and `outcomes` shape applies whether the row
came from Polymarket, Kalshi, Limitless, or another hosted catalog venue.
Filter by venue with `&exchange=kalshi`, by category with
`&category=Politics`, or omit the venue filter to search the hosted catalog.

<Info>
  The Router is also available as an SDK class — `pmxt.Router(...)` in
  Python and `new pmxt.Router(...)` in TypeScript. Beyond search, it
  supports [cross-venue matching](/router/matching) and
  [price comparison](/router/prices).
</Info>

## 4. Go further

<CardGroup cols={2}>
  <Card title="Router" icon="magnifying-glass" href="/router/search">
    `/v0/events` and `/v0/markets` — cross-venue search and the
    beginning of a smart order router for prediction markets.
  </Card>

  <Card title="Full venue API" icon="arrows-left-right-to-line" href="/api-reference/overview">
    Order books, trades, OHLCV, positions, balances, and trading,
    supported where each venue implements them via `POST /api/:exchange/:method`.
  </Card>

  <Card title="Unified schema" icon="layer-group" href="/concepts/unified-schema">
    `Event` / `Market` / `Outcome` — the shape that works everywhere.
  </Card>

  <Card title="Supported venues" icon="list" href="/concepts/venues">
    Every venue PMXT speaks, and what each supports.
  </Card>
</CardGroup>
