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

# Statystyki kampanii

> Pobierz szczegółowe metryki wydajności i analizy kampanii

## Parametry ścieżki

<ParamField path="id" type="integer" required>
  ID kampanii
</ParamField>

## Odpowiedź

<ResponseField name="success" type="boolean">
  Wskazuje czy żądanie zakończyło się sukcesem
</ResponseField>

<ResponseField name="data" type="object">
  Obiekt statystyk kampanii

  <Expandable title="Pola statystyk">
    <ResponseField name="sent" type="integer">
      Całkowita liczba wysłanych wiadomości
    </ResponseField>

    <ResponseField name="delivered" type="integer">
      Pomyślnie dostarczone wiadomości (sent - bounced)
    </ResponseField>

    <ResponseField name="opened" type="integer">
      Otwarte wiadomości (unikalne otwarcia)
    </ResponseField>

    <ResponseField name="clicked" type="integer">
      Kliknięte linki (unikalne kliknięcia)
    </ResponseField>

    <ResponseField name="bounced" type="integer">
      Odrzucone wiadomości
    </ResponseField>

    <ResponseField name="complained" type="integer">
      Zgłoszenia spam
    </ResponseField>

    <ResponseField name="unsubscribed" type="integer">
      Wypisania wywołane przez tę kampanię
    </ResponseField>

    <ResponseField name="open_rate" type="number">
      Współczynnik otwarć w procentach (opened / delivered \* 100)
    </ResponseField>

    <ResponseField name="click_rate" type="number">
      Współczynnik kliknięć w procentach (clicked / delivered \* 100)
    </ResponseField>

    <ResponseField name="bounce_rate" type="number">
      Współczynnik odrzuceń w procentach (bounced / sent \* 100)
    </ResponseField>

    <ResponseField name="click_to_open_rate" type="number">
      Współczynnik kliknięć do otwarć w procentach (clicked / opened \* 100)
    </ResponseField>

    <ResponseField name="unsubscribe_rate" type="number">
      Współczynnik wypisań w procentach (unsubscribed / delivered \* 100)
    </ResponseField>
  </Expandable>
</ResponseField>

## Przykład

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.mailist.com/api/v1/campaigns/456/statistics \
    -H "X-API-Key: YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.mailist.com/api/v1/campaigns/456/statistics', {
    headers: {
      'X-API-Key': 'YOUR_API_KEY'
    }
  });

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://api.mailist.com/api/v1/campaigns/456/statistics',
      headers={'X-API-Key': 'YOUR_API_KEY'}
  )

  data = response.json()
  ```
</CodeGroup>

## Odpowiedź

<ResponseExample>
  ```json 200 Sukces theme={null}
  {
    "success": true,
    "data": {
      "sent": 10000,
      "delivered": 9800,
      "opened": 4500,
      "clicked": 1200,
      "bounced": 200,
      "complained": 5,
      "unsubscribed": 15,
      "open_rate": 45.92,
      "click_rate": 12.24,
      "bounce_rate": 2.04,
      "click_to_open_rate": 26.67,
      "unsubscribe_rate": 0.15
    }
  }
  ```

  ```json 404 Nie znaleziono theme={null}
  {
    "success": false,
    "error": {
      "code": "CAMPAIGN_NOT_FOUND",
      "message": "Nie znaleziono kampanii o ID: 456"
    }
  }
  ```

  ```json 403 Brak uprawnień theme={null}
  {
    "success": false,
    "error": {
      "code": "PERMISSION_DENIED",
      "message": "Klucz API nie posiada uprawnienia 'campaigns.read'"
    }
  }
  ```
</ResponseExample>

## Uwagi

* Statystyki są obliczane w czasie rzeczywistym na podstawie odbiorców kampanii
* Współczynniki są zaokrąglane do 2 miejsc po przecinku
* Ten endpoint wymaga uprawnienia `campaigns.read` dla klucza API
* Statystyki są dostępne tylko dla kampanii ze statusem `SENT`
