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

# Get campaign log

> Search and browse the campaign log — sends, opens, clicks, bounces, unsubscribes, complaints, and other events. Filter by subscriber email, event types, and date range.

<ParamField query="email" type="string">
  Filter by subscriber email address.
</ParamField>

<ParamField query="events[]" type="string">
  Filter by event types. Can be specified multiple times. Possible values: `send`, `open`, `click`, `bounce`, `hard_bounce`, `soft_bounce`, `out_of_band`, `unsub`, `spam`, `spam_complaint`, `not_opened`, `not_clicked`, `open_no_click`, `sms_sent`, `sms_inv_nr`, `sms_accepted`, `whatsapp_sent`, `whatsapp_failed`.
</ParamField>

<ParamField query="date_from" type="string">
  Filter events from this date (inclusive, ISO format e.g. `2025-01-01`).
</ParamField>

<ParamField query="date_to" type="string">
  Filter events up to this date (inclusive, ISO format e.g. `2025-12-31`). Must be after `date_from` if provided.
</ParamField>

<ParamField query="per_page" type="integer">
  Number of results per page. Default `20`, maximum `100`.
</ParamField>

<ParamField query="page" type="integer">
  Page number.
</ParamField>

<ParamField query="sort_by" type="string">
  Column to sort by. Possible values: `occured_at`, `id`, `event`. Default `occured_at`.
</ParamField>

<ParamField query="sort_dir" type="string">
  Sort direction. Possible values: `asc`, `desc`. Default `desc`.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api2.ecomailapp.cz/campaigns/1/log?email=foo@bar.cz&per_page=10&events[]=open&events[]=click" \
    -H "key: YOUR_API_KEY" \
    -H "Content-Type: application/json"
  ```

  ```php PHP theme={null}
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://api2.ecomailapp.cz/campaigns/1/log?email=foo@bar.cz&per_page=10&events[]=open&events[]=click");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
      'key: YOUR_API_KEY',
      'Content-Type: application/json',
  ]);
  $response = curl_exec($ch);
  curl_close($ch);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "campaign_log": [
      {
        "id": 5678,
        "campaign_id": 1,
        "autoresponder_id": null,
        "action_id": null,
        "event": "open",
        "msg": null,
        "url": null,
        "email": "foo@bar.cz",
        "occured_at": "2025-03-15T14:30:00.000000Z",
        "mail_name": null
      },
      {
        "id": 5677,
        "campaign_id": 1,
        "autoresponder_id": null,
        "action_id": null,
        "event": "click",
        "msg": null,
        "url": "https://example.com/offer",
        "email": "foo@bar.cz",
        "occured_at": "2025-03-15T14:25:00.000000Z",
        "mail_name": null
      }
    ],
    "current_page": 1,
    "per_page": 10,
    "total": 2,
    "last_page": 1
  }
  ```
</ResponseExample>
