---
title: "Lista leadów"
method: GET
path: "/leads"
tags: ["Leady"]
---

# Lista leadów

`GET /leads`

## Request

- Base URL: `https://outreachpilot.pl/api/v1`
- URL: `https://outreachpilot.pl/api/v1/leads`
- Auth: HTTP bearer

Leady z Twojej bazy, od najnowszych, stronicowane kursorem. Filtry łączą się logicznym AND. `workspace_id` zawęża do klienta agencji (albo `default` = „Moja firma”). Kontakt w liście jest dostępny w planie płatnym albo po podłączeniu skrzynki; bez nich pola `email`, `phone`, `linkedin_url`, `email_status` i `email_verified_at` są puste, a odpowiedź ma `contact_withheld: true`, `notice` i `links` (ID, nazwy, statusy i tagi działają bez zmian). Pojedynczy lead (`GET /leads/{id}`) zawsze ma pełne dane.

**Wymagany zakres klucza:** `leads:read`.

## Query parameters

- `limit` integer
- `cursor` string
- `status` 'nowy' | 'w_kampanii' | 'odpowiedzial' | 'zainteresowany' | 'brak_zainteresowania' | 'odrzucony'
- `source` 'ceidg' | 'krs' | 'google_maps' | 'pkt' | 'firmy_net' | 'panorama' | 'osm' | 'linkedin' | 'import_csv' | 'manual'
- `tag` string
- `email` string
- `q` string
- `has_email` 'true' | 'false'
- `created_after` string, date-time
- `created_before` string, date-time
- `workspace_id` string

## Response `200`

Sukces.

- object
  - `data` Lead[], required
    - `id` string, required
    - `email` string, nullable, required
    - `first_name` string, nullable, required
    - `last_name` string, nullable, required
    - `job_title` string, nullable, required
    - `phone` string, nullable, required
    - `linkedin_url` string, nullable, required
    - `company_name` string, nullable, required
    - `company_nip` string, nullable, required
    - `company_regon` string, nullable, required
    - `company_website` string, nullable, required
    - `company_city` string, nullable, required
    - `company_voivodeship` string, nullable, required
    - `company_address` string, nullable, required
    - `company_industry` string, nullable, required
    - `company_pkd` string, nullable, required
    - `company_country` string, nullable, required: ISO 3166-1 alpha-2; `null` = Polska.
    - `status` 'nowy' | 'w_kampanii' | 'odpowiedzial' | 'zainteresowany' | 'brak_zainteresowania' | 'odrzucony', required
    - `source` 'ceidg' | 'krs' | 'google_maps' | 'pkt' | 'firmy_net' | 'panorama' | 'osm' | 'linkedin' | 'import_csv' | 'manual', required
    - `tags` string[], required
    - `notes` string, nullable, required
    - `ai_score` integer, nullable, required: Ocena AI 1-10 albo `null`.
    - `email_status` 'valid' | 'risky' | 'invalid' | 'unknown', nullable, required: Wynik weryfikacji adresu (sonda SMTP): `valid` zweryfikowany, `risky` ryzykowny (catch-all), `invalid` nieprawidłowy, `unknown` nie udało się sprawdzić, `null` nie sprawdzono.
    - `email_verified_at` string, nullable, required: Data i czas ISO 8601 (UTC).
    - `website_status` 'has' | 'none_confirmed' | 'unknown', nullable, required
    - `registry_status` 'active' | 'suspended' | 'deleted' | 'liquidation' | 'bankrupt' | 'unknown', nullable, required: Status firmy w CEIDG/KRS.
    - `origin` object, nullable, required: Skąd i kiedy pozyskaliśmy dane (art. 14 RODO).
      - `source` string, required
      - `source_detail` string
      - `acquired_at` string, required: Data i czas ISO 8601 (UTC).
      - `source_url` string
    - `times_contacted` integer, required
    - `times_opened` integer, required
    - `times_clicked` integer, required
    - `times_replied` integer, required
    - `last_contacted_at` string, nullable, required: Data i czas ISO 8601 (UTC).
    - `created_at` string, required: Data i czas ISO 8601 (UTC).
    - `updated_at` string, required: Data i czas ISO 8601 (UTC).
  - `pagination` Pagination, required
    - `limit` integer, required: Rozmiar strony użyty w zapytaniu.
    - `has_more` boolean, required: Czy są kolejne strony.
    - `next_cursor` string, nullable, required: Przekaż jako `cursor`, żeby pobrać następną stronę. `null` na ostatniej stronie.

## Other responses

- `401`: Brak, zły, odwołany lub wygasły klucz (`missing_api_key`, `invalid_api_key`, `api_key_revoked`, `api_key_expired`, `account_inactive`).
- `403`: Plan nie obejmuje API (`plan_upgrade_required`, odpowiedź zawiera informacje o planie; nie dotyczy tras wtyczki z kluczem `extension:*`) albo klucz nie ma wymaganego zakresu (`insufficient_scope`).
- `422`: Błąd walidacji. Kody: `validation_error`.
- `429`: Przekroczono limit żądań (`rate_limit_exceeded`). Zobacz nagłówek `Retry-After`.

---

[API](https://skmtc.dev/outreachpilot/apis/outreachpilot-api.md) · [All operations](https://skmtc.dev/outreachpilot/apis/outreachpilot-api/llms.txt) · [OpenAPI document](https://skmtc.dev/outreachpilot/apis/outreachpilot-api/revisions/2262dabfb07c?raw)
