---
title: "List sends with engagement"
method: GET
path: "/emails"
tags: ["Emails"]
---

# List sends with engagement

`GET /emails`

## Request

- Base URL: `https://sending.dev/api/v1`
- URL: `https://sending.dev/api/v1/emails`
- Auth: HTTP bearer

Emails sent by the workspace (service emails excluded), newest first, with the per-row engagement summary: human and proxy opens, clicks, content clicks, last link. Same filters as the dashboard list: `campaignId`, `contactId`, `status`, `engagement` (clicked, opened without clicking, not opened among delivered, bounced, unsubscribed), `q` on recipient and subject, `since`. Required scope: `emails:read` or `email:send`.

## Query parameters

- `campaignId` string, uuid
- `contactId` string, uuid
- `status` 'queued' | 'sent' | 'delivered' | 'failed' | 'bounced'
- `engagement` 'clicked' | 'opened_not_clicked' | 'not_opened' | 'bounced' | 'unsubscribed'
- `q` string: Search recipient and subject.
- `since` string: ISO 8601: only sends from this date.
- `limit` integer: Default 25.
- `offset` integer, nullable

## Response `200`

Send list.

- EmailList
  - `data` EmailListRow[], required
    - `id` string, uuid, required
    - `status` string, required
    - `to` string, nullable, required
    - `from` string, nullable, required
    - `subject` string, nullable, required
    - `kind` 'transactional' | 'campaign' | 'automation': Origin of the send.
    - `campaignId` string, uuid, nullable
    - `enrollmentId` string, uuid, nullable
    - `contactId` string, uuid, nullable
    - `createdAt` string, date-time, required
    - `engagement` MessageEngagement, required
      - `opensHuman` integer, required
      - `opensMachine` integer, required: Non-human opens (Apple MPP, Gmail proxy, scanners): never a KPI.
      - `clicks` integer, required: Human clicks, on any link.
      - `contentClicks` integer, required: Human clicks on content: excludes logo, images, domain chrome and social links.
      - `lastLinkUrl` string, nullable, required
      - `lastLinkRole` string, nullable, required
      - `links` string[], required: Distinct clicked URLs (raw).
      - `unsubscribed` boolean, required
      - `bounced` boolean, required
      - `lastEventAt` string, date-time, nullable, required
  - `total` integer, required
  - `limit` integer, required
  - `offset` integer, required

## Other responses

- `401`: Missing or invalid token.
- `403`: Insufficient scope.
- `422`: Invalid input.

---

[API](https://skmtc.dev/sending/apis/sending-dev-api.md) · [All operations](https://skmtc.dev/sending/apis/sending-dev-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sending/apis/sending-dev-api/revisions/9fe78d2918a1?raw)
