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

# Quickstart

> Find a pool, then pull the latest candle for it. Five minutes from API key to first chart-ready data.

You'll need an [API key](https://www.dexploit.dev/dashboard) before you start. Free tier is fine for this walkthrough.

## 1. Find pools for your token

Dexploit indexes swap data per **pool** (pair), not per **token**. A token like BONK has separate pools on Pump.fun, PumpSwap, Raydium, and Meteora — each with its own price and volume. Read [Pairs vs tokens](/concepts/pairs-vs-tokens) for the full picture.

Start by listing pools for your token:

<CodeGroup>
  ```bash curl theme={null}
  curl -H 'X-API-Key: ohlcv_live_sk_<your_key>' \
    'https://api.dexploit.dev/api/v1/pairs?token_address=DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263&limit=3'
  ```

  ```typescript TypeScript theme={null}
  const res = await fetch(
    'https://api.dexploit.dev/api/v1/pairs?token_address=DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263&limit=3',
    { headers: { 'X-API-Key': 'ohlcv_live_sk_<your_key>' } }
  );
  const { data } = await res.json();
  console.log(data);
  ```
</CodeGroup>

You'll get back something like:

```json theme={null}
{
  "success": true,
  "data": [
    {
      "pair_address": "<pool_address>",
      "protocol": "pumpswap",
      "recent_volume_sol": 1234.56
    }
  ]
}
```

Pick the `pair_address` of the pool you want — usually the one with the highest `recent_volume_sol`.

## 2. Pull the latest candles for that pool

<CodeGroup>
  ```bash curl theme={null}
  curl -H 'Authorization: Bearer ohlcv_live_sk_<your_key>' \
    'https://api.dexploit.dev/api/v1/candles/latest?pair_address=<from_step_1>&timeframe=1m&limit=10'
  ```

  ```typescript TypeScript theme={null}
  const res = await fetch(
    `https://api.dexploit.dev/api/v1/candles/latest?pair_address=${pair}&timeframe=1m&limit=10`,
    { headers: { 'Authorization': 'Bearer ohlcv_live_sk_<your_key>' } }
  );
  const { data: candles } = await res.json();
  // volume_sol is in **lamports** — divide by 1e9 to get SOL.
  candles.forEach(c =>
    console.log(c.timestamp, c.close, `vol ${(c.volume_sol / 1e9).toFixed(2)} SOL`)
  );
  ```
</CodeGroup>

Each candle is built from real trade events — `volume_sol`, `volume_token`, `trade_count`, `buy_count`, `sell_count`, and `unique_traders` are exact, not approximations. See [Swap-event OHLCV](/concepts/swap-event-ohlcv) for why this matters.

## What's next

<Columns cols={2}>
  <Card title="Pairs vs tokens" icon="map" href="/concepts/pairs-vs-tokens">
    Why every OHLCV endpoint takes `pair_address`, not the token mint.
  </Card>

  <Card title="Stream live swaps" icon="bolt" href="/streaming/websocket">
    Replace polling with a WebSocket subscription.
  </Card>

  <Card title="GitHub Examples" icon="github" href="https://github.com/DexploitV1/Dexploit-Examples">
    Working sample apps for chart, dashboard, and backfill workflows.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    API keys, headers, and tier limits.
  </Card>
</Columns>
