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

# Comms Notification Sends

> Return notification send counts grouped by channel and delivery status.

## Method

`GET` `/v1/analytics/comms/notification-sends`

## Query Parameters

<ParamField query="from" type="string" required>Start date (YYYY-MM-DD, inclusive).</ParamField>
<ParamField query="to" type="string" required>End date (YYYY-MM-DD, inclusive).</ParamField>
<ParamField query="workspaceId" type="uuid" required>Workspace identifier.</ParamField>

## Headers

<ParamField header="Authorization" type="string">Bearer token with `analytics:read` scope.</ParamField>

## Request Example

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.voyantcloud.com/v1/analytics/comms/notification-sends?from=2025-02-01&to=2025-02-07&workspaceId=ws_abc" \
    -H "Authorization: Bearer $VOYANT_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(
    "https://api.voyantcloud.com/v1/analytics/comms/notification-sends?from=2025-02-01&to=2025-02-07&workspaceId=ws_abc",
    { headers: { Authorization: `Bearer ${process.env.VOYANT_API_KEY}` } },
  )
  const stats = await res.json()
  ```

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

  resp = requests.get(
    "https://api.voyantcloud.com/v1/analytics/comms/notification-sends",
    params={"from": "2025-02-01", "to": "2025-02-07", "workspaceId": "ws_abc"},
    headers={"Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}"},
  )
  rows = resp.json()
  ```
</RequestExample>

## Response

<ResponseExample>
  ```json 200 OK theme={null}
  [
    { "day": "2025-02-01", "channel": "email", "status": "sent", "cnt": 1420 },
    { "day": "2025-02-01", "channel": "email", "status": "failed", "cnt": 18 },
    { "day": "2025-02-02", "channel": "push", "status": "sent", "cnt": 510 }
  ]
  ```

  ```json 400 Bad Request theme={null}
  { "error": "from, to, workspaceId required" }
  ```
</ResponseExample>

<Tip>Combine with delivery events to compute open/delivery rates per channel and surface anomalies.</Tip>
