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

# Quickstart

> From an API key to a CSV of new leads in five calls.

This walks through the API end to end: see what's available, get a free quote, export, and download. The same flow works from the [CLI](/cli) in one command, and from an [AI agent](/mcp-setup).

<Note>
  You need an Intent Leads account with a plan and at least one lane. Sign up at [intentleads.si](https://intentleads.si), pick a plan on **Usage and plan**, and set up a lane (or ask us to set them up for you).
</Note>

<Steps>
  <Step title="Create an API key">
    In the dashboard, open **API and CLI** and create a key. Copy it straight away: it's shown once. Keys start with `il_live_`.

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    export INTENT_LEADS_KEY="il_live_..."
    ```

    Every request sends it as a bearer token. See [Authentication](/authentication).
  </Step>

  <Step title="See how many new people each lane has">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl -s https://intentleads.si/api/v1/lanes \
      -H "Authorization: Bearer $INTENT_LEADS_KEY"
    ```

    Each lane shows its keywords and how many people you could export **now**, after every filter and less anyone you've already exported this billing period. This is free.
  </Step>

  <Step title="Get a free quote">
    Ask how many people an export would get. `dry_run: true` never buys anything.

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl -s -X POST https://intentleads.si/api/v1/exports \
      -H "Authorization: Bearer $INTENT_LEADS_KEY" \
      -H "Content-Type: application/json" \
      -d '{"lanes": ["L1"], "max": 100, "dry_run": true}'
    ```

    ```json Response theme={"theme":{"light":"github-light","dark":"github-dark"}}
    {
      "dry_run": true,
      "lanes": [
        {
          "lane": "L1",
          "name": "Sales development, build or buy",
          "strength": "medium",
          "available": { "high": 12, "medium_plus": 143, "all": 673, "at_lane_strength": 143 },
          "data_window": { "start": "2026-09-30", "end": "2026-10-13" },
          "checked_at": "2026-10-14T06:02:11.000Z",
          "approximate": false
        }
      ],
      "requested": 100,
      "available": 143,
      "will_export": 100,
      "capped_by": "max",
      "allowance": { "plan": "starter", "before": 2490, "after": 2390, "period_end": "2026-11-09" },
      "exports_enabled": true,
      "notes": ["…"]
    }
    ```

    `will_export` is the smallest of what you asked for, what's available, and the contacts left on your plan.
  </Step>

  <Step title="Confirm the export">
    Send the same request with `dry_run: false` and an `idempotency_key`. The key makes retries safe: sending it again returns the same export and never buys twice.

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl -s -X POST https://intentleads.si/api/v1/exports \
      -H "Authorization: Bearer $INTENT_LEADS_KEY" \
      -H "Content-Type: application/json" \
      -d '{"lanes": ["L1"], "max": 100, "dry_run": false, "idempotency_key": "2026-10-14-l1"}'
    ```

    ```json Response (202) theme={"theme":{"light":"github-light","dark":"github-dark"}}
    {
      "export": {
        "id": "01a13b70-5f2e-7c1a-9d3e-2b8f6a4c1e90",
        "status": "queued",
        "lanes": ["L1"],
        "requested": 100,
        "will_export": 100,
        "exported": 0,
        "min_strength": null,
        "billing_period": "2026-10-09",
        "via": "api",
        "created_at": "2026-10-14T09:15:02.000Z",
        "finished_at": null,
        "error": null
      },
      "reused": false,
      "poll": "/api/v1/exports/01a13b70-5f2e-7c1a-9d3e-2b8f6a4c1e90"
    }
    ```
  </Step>

  <Step title="Wait for it, then download">
    Exports usually finish within a few minutes. Poll until `status` is `completed` (or `partial`, if fewer people were really there than estimated):

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl -s https://intentleads.si/api/v1/exports/01a13b70-5f2e-7c1a-9d3e-2b8f6a4c1e90 \
      -H "Authorization: Bearer $INTENT_LEADS_KEY"
    ```

    Then get the CSV. Downloading again is always free.

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl -s "https://intentleads.si/api/v1/exports/01a13b70-5f2e-7c1a-9d3e-2b8f6a4c1e90?format=csv" \
      -H "Authorization: Bearer $INTENT_LEADS_KEY" -o leads.csv
    ```

    See [Lead fields](/lead-fields) for every column.
  </Step>
</Steps>

## Next steps

<CardGroup cols={2}>
  <Card title="Pull new leads on a schedule" icon="refresh-cw" href="/guides/leads#pull-only-whats-new">
    `GET /api/v1/leads?since=last` returns only people you haven't pulled yet.
  </Card>

  <Card title="Handle removal requests" icon="shield-check" href="/guides/suppressions">
    Check `GET /api/v1/suppressions` and delete those people within 10 business days.
  </Card>

  <Card title="Do it from the terminal" icon="terminal" href="/cli">
    `intentleads export --lane L1 --max 100 --format csv --out leads.csv`
  </Card>

  <Card title="All endpoints" icon="square-terminal" href="/api-reference/introduction">
    Lanes, keywords, checks, usage, team and keys.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.