# OutreachPilot - API

Autoryzacja nagłówkiem `Authorization: Bearer <token>`. Token utworzysz w Ustawienia → API.
Limit 60 żądań na minutę na token. Wszystkie odpowiedzi w JSON, znaczniki czasu w UTC.

## Leady

**GET `/api/v1/leads`** — parametry: `q`, `status`, `city`, `voivodeship`, `page`, `per_page` (max 200).

```json
{ "ok": true, "data": [ { "id": 12, "company_name": "FENIX", "email": "kontakt@fenix.pl", "status": "new" } ],
  "meta": { "total": 3420, "page": 1, "per_page": 50, "pages": 69 } }
```

**POST `/api/v1/leads`** — body: `company_name` (wymagane), `email` (wymagane), `first_name`, `last_name`, `phone`, `website`, `city`.
Kody: `201` utworzony, `409` duplikat lub adres na liście wykluczeń.

## Kampanie

**GET `/api/v1/campaigns`** — lista kampanii zespołu z licznikami.

**GET `/api/v1/campaigns/:id/stats`** — wskaźniki: `delivery_rate`, `open_rate`, `click_rate`, `reply_rate`, `bounce_rate`.

## Odpowiedzi

**GET `/api/v1/replies`** — parametr `classification`: `interested`, `question`, `objection`, `not_interested`,
`autoresponder`, `out_of_office`, `wrong_person`, `delete_data`, `unsubscribe`, `manual_review`.

## Wykluczenia

**POST `/api/v1/suppressions`** — body: `value` (adres, domena lub fragment). Typ rozpoznawany automatycznie.

## Wykorzystanie limitów

**GET `/api/v1/usage`** — `leads`, `emails_month`, `emails_today`, `email_accounts`, `campaigns`, każde z `used`, `quota`, `percent`.

## Webhook płatności

**POST `/api/webhooks/p24`** — wywoływane przez operatora. Weryfikacja podpisem SHA-384, bez sesji.

## Błędy

| Kod | Znaczenie |
|---|---|
| 401 | brak lub nieprawidłowy token |
| 403 | brak uprawnień do zasobu |
| 409 | konflikt (duplikat) |
| 422 | błąd walidacji, szczegóły w `errors` |
| 429 | przekroczony limit żądań |
