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

# Get Campaign Email Client Breakdown

> See which mail clients and devices opened a campaign.

Returns the mail clients and device types that opened one email campaign, as shares of its unique opens. The breakdown covers the whole campaign.

Each email send counts once, attributed to the client of its first open. Test sends are excluded, and detected email-security scanners are excluded unless you set `includeMachineEngagement=true`. For every email in a time window, use [Get Email Client Breakdown](/api-reference/analytics/email-clients).

## Path Parameters

<ParamField path="campaignId" type="string" required>
  The ID of an email campaign. SMS campaigns return `400`.
</ParamField>

## Query Parameters

<ParamField query="mailboxProvider" type="string">
  Optional recipient mailbox provider filter, for example `gmail`, `microsoft`,
  `yahoo`, or `icloud`.
</ParamField>

<ParamField query="includeMachineEngagement" type="boolean" default="false">
  Set to `true` to include detected scanner, preview, and tracked asset opens.
</ParamField>

## Response Fields

<ResponseField name="campaignId" type="string">
  The campaign the breakdown covers.
</ResponseField>

<ResponseField name="totalOpens" type="number">
  Unique opens of the campaign. `0` when nothing was opened, in which case
  `clients` and `devices` are empty arrays.
</ResponseField>

<ResponseField name="privacyProxyOpens" type="number">
  Opens that came through the Gmail or Yahoo image proxies or Apple Mail Privacy
  Protection, which hide the reader's device.
</ResponseField>

<ResponseField name="clients" type="array">
  Mail clients, most opens first. Each item has `key`, `label`, `opens`, and
  `share` (percentage of `totalOpens`, not rounded). `key` is one of
  `apple_mail`, `gmail`, `outlook`, `yahoo_mail`, `thunderbird`,
  `android_mail_app`, `web_browser`, or `other`.
</ResponseField>

<ResponseField name="devices" type="array">
  Device types, most opens first. `key` is one of `desktop`, `mobile`, `tablet`,
  or `unknown`.
</ResponseField>

`mailboxProvider` is echoed back when you provide it.

```bash theme={null}
curl "https://api.sequenzy.com/api/v1/metrics/campaigns/camp_abc123/clients" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "campaignId": "camp_abc123",
    "totalOpens": 420,
    "privacyProxyOpens": 310,
    "clients": [
      { "key": "apple_mail", "label": "Apple Mail", "opens": 210, "share": 50 },
      { "key": "gmail", "label": "Gmail", "opens": 168, "share": 40 },
      { "key": "outlook", "label": "Outlook", "opens": 42, "share": 10 }
    ],
    "devices": [
      { "key": "unknown", "label": "Unknown", "opens": 310, "share": 73.80952380952381 },
      { "key": "mobile", "label": "Mobile", "opens": 70, "share": 16.666666666666668 },
      { "key": "desktop", "label": "Desktop", "opens": 40, "share": 9.523809523809524 }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": "This is an SMS campaign. SMS campaigns are managed from the dashboard; this endpoint only supports email campaigns."
  }
  ```

  ```json 401 theme={null}
  {
    "success": false,
    "error": "Unauthorized"
  }
  ```

  ```json 404 theme={null}
  {
    "success": false,
    "error": "Campaign not found"
  }
  ```
</ResponseExample>
