---
title: "List leads"
method: GET
path: "/api/projects/{id}/leads"
tags: ["Leads"]
---

# List leads

`GET /api/projects/{id}/leads`

## Request

- Base URL: `https://dosai.pro`
- URL: `https://dosai.pro/api/projects/{id}/leads`
- Auth: HTTP bearer

Newest first. Pages 1-20 use offset pagination; beyond that pass the `before` cursor returned as `pagination.next_before` (keyset mode) to keep results stable.

## Query parameters

- `page` integer
- `limit` integer
- `before` string, date-time
- `status` 'none' | 'potential' | 'qualified' | 'hot' | 'converted' | 'reserve' | 'lost'

## Response `200`

Leads page.

- object
  - `data` Lead[], required
    - `id` string, uuid, required
    - `project_id` string, uuid, required
    - `conversation_id` string, uuid, nullable
    - `client_name` string, nullable
    - `phone` string, nullable
    - `email` string, nullable
    - `lead_status` string, required
    - `full_data` object, nullable
    - `summary` string, nullable
    - `operator_notes` string, nullable
    - `source` string, nullable
    - `source_detail` string, nullable
    - `tags` string[], nullable
    - `deal_value` number, nullable
    - `deal_currency` string, nullable
    - `created_at` string, date-time
    - `updated_at` string, date-time
  - `pagination` Pagination: Offset mode returns page/limit/total/pages; keyset mode (deep lead pages) returns mode/limit/has_more/next_before. The functions list uses offset/limit/total/has_more instead of page numbers.
    - `mode` 'offset' | 'keyset'
    - `page` integer
    - `limit` integer
    - `total` integer
    - `pages` integer: Total number of pages in offset mode.
    - `offset` integer
    - `has_more` boolean
    - `next_before` string, date-time, nullable

## Other responses

- `401`: Missing, invalid, expired or revoked key.
- `403`: Not allowed. Distinguish by `code`: `INSUFFICIENT_SCOPE` (read-only key attempted a mutation), `API_KEY_PROJECT_SCOPE` (project-scoped key reached outside its project), `FORBIDDEN` (the user's role on this project is too low), `ACCOUNT_BANNED`.
- `404`: No such resource, or it belongs to another account.
- `429`: Too many requests. 120/min per key overall, plus a stricter per-endpoint budget. Retry after the number of seconds in Retry-After.

---

[API](https://skmtc.dev/dosai/apis/dos-ai-public-api.md) · [All operations](https://skmtc.dev/dosai/apis/dos-ai-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dosai/apis/dos-ai-public-api/revisions/38ce5f4e8f50?raw)
