> ## 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.

# Leads

> Get the people you've exported into your CRM, sequencer or dialler.

Every person you export becomes a lead with a stable `lead_id`. Leads stay available: you can download them again, filter them and pull them into other tools at no cost.

## Three ways to get leads

<CardGroup cols={3}>
  <Card title="One export" icon="file-down">
    `GET /api/v1/exports/{id}?format=csv`: exactly the people one export added.
  </Card>

  <Card title="Only what's new" icon="refresh-cw">
    `GET /api/v1/leads?since=last`: everyone you haven't pulled yet.
  </Card>

  <Card title="Since a date" icon="calendar">
    `GET /api/v1/leads?since=2026-10-01`: everyone exported since then.
  </Card>
</CardGroup>

## Pull only what's new

`since=last` (the default) returns leads you haven't pulled yet and moves a cursor past them, so a daily job never sees the same person twice:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -s "https://intentleads.si/api/v1/leads?since=last&format=csv" \
  -H "Authorization: Bearer $INTENT_LEADS_KEY" -o new-leads.csv
```

* Each **consumer** has its own cursor. Pass `consumer=hubspot` and `consumer=dialler` and both get every lead once. The default consumer is `default`.
* A **lane** filter keeps its own cursor too: `?since=last&lane=L1`.
* Up to `limit` leads per call (1 to 5,000, default 1,000). If you get exactly `limit`, call again for the rest.

<Warning>
  The cursor moves when the response is sent. If your job fails before it saves the leads, re-download with `since=<date>` rather than `since=last`.
</Warning>

## Re-download by date

`since=YYYY-MM-DD` returns everyone exported on or after that date, oldest first, without touching any cursor. Narrow it with:

| Parameter | Example | Meaning |
| - | - | - |
| `to` | `2026-10-31` | Exported on or before this date. |
| `lane` | `L1` | One lane. |
| `strength` | `high` | `high` only, or `medium` for medium and high. |
| `keyword` | `outsourced SDR team` | Matched this keyword. |
| `limit` | `1000` | Page size, 1 to 5,000. |
| `page` | from `X-Next-Page` | The next page, when there are more. |

When there are more leads, JSON responses include `next_page`, and CSV responses an `X-Next-Page` header; pass it back as `page`.

## JSON or CSV

JSON is the default. Add `format=csv` for a CSV with a header row. CSV responses also carry `X-Lead-Count` and `X-Has-More` headers. See [Lead fields](/lead-fields) for every field and column.

## Seen before

`seen_before: true` means you exported this person in an **earlier** billing period too. They're billed again in the new period because their intent is new; use the flag to update the record in your CRM rather than create a duplicate.

## Suppressed leads

If someone asks to be removed after you've exported them, their lead shows `suppressed: true` and every contact field is empty, including in re-downloads. Delete them from your own systems within 10 business days. See [Suppressions](/guides/suppressions).


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