---
title: "Status of a send"
method: GET
path: "/emails/{id}"
tags: ["Emails"]
---

# Status of a send

`GET /emails/{id}`

## Request

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

Metadata, engagement summary, clicked links (by canonical URL, with role: logo, button, text...) and event timeline of a message. On clicks every event carries `linkUrl`, `linkId` and `linkRole`: three clicks on the logo are not interest in the content. Required scope: `emails:read` or `email:send`.

## Path parameters

- `id` string, required: Message ID (the `id` field of the send response).

## Response `200`

Message status.

- MessageStatus
  - `id` string, uuid, required
  - `status` string, required
  - `channel` string
  - `to` string, nullable
  - `toAddresses` string[]
  - `from` string, nullable
  - `subject` string, nullable
  - `provider` string, nullable
  - `providerMessageId` string, nullable
  - `idempotencyKey` string
  - `kind` 'transactional' | 'campaign' | 'automation': Origin of the send.
  - `campaignId` string, uuid, nullable
  - `enrollmentId` string, uuid, nullable
  - `contactId` string, uuid, nullable
  - `attachments` object[]
    - `id` string, uuid, required
    - `filename` string, required
    - `contentType` string, required
    - `size` integer, required
  - `createdAt` string, date-time
  - `engagement` MessageEngagement
    - `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
  - `links` EmailClickedLink[]: Clicked links (human clicks), grouped by canonical URL.
    - `url` string, required
    - `canonicalUrl` string, required: Without utm_* and trailing slash: the grouping key.
    - `role` string, nullable, required
    - `isContent` boolean, required: `false` for logo, images, header/footer and social links: not interest in the text.
    - `count` integer, required
    - `lastAt` string, date-time, required
  - `events` MessageEvent[]
    - `type` string, required
    - `classification` string, nullable: human | machine | prefetch | bot: only `human` counts as engagement.
    - `createdAt` string, date-time
    - `linkUrl` string, nullable: Clicks only: the original destination.
    - `linkId` string, nullable: Link id inside the email (block id, or positional `l0`, `l1`...).
    - `linkRole` string, nullable: Role of the clicked link: logo | image | cta | text | social | video | chrome. `null` if not classified.

## Other responses

- `401`: Missing or invalid token.
- `403`: Insufficient scope.
- `404`: Resource not found.

---

[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)
