Skip to main content
GET
/
v1
/
analytics
/
sends
Get email sends
curl --request GET \
  --url https://brew.new/api/v1/analytics/sends \
  --header 'Authorization: Bearer <token>'
{
  "data": [
    {
      "sendId": "snd_8fK2mQ4p",
      "kind": "campaign",
      "emailId": "eml_welcome",
      "emailVersionId": "emv_welcome_v3",
      "status": "sent",
      "audienceId": "aud_subscribers",
      "audienceName": "Subscribers",
      "runId": "wrun_abc",
      "startedAt": "2026-04-08T12:00:05.000Z",
      "completedAt": "2026-04-08T12:34:56.000Z",
      "stats": {
        "sent": 1200,
        "delivered": 1180,
        "opened": 540,
        "clicked": 96,
        "bounced": 20,
        "complained": 1,
        "unsubscribed": 4
      },
      "createdAt": "2026-04-08T12:00:00.000Z",
      "updatedAt": "2026-04-08T12:34:56.000Z"
    }
  ],
  "pagination": {
    "limit": 100,
    "cursor": null,
    "hasMore": false
  }
}

Authorizations

Authorization
string
header
default:Bearer brew_your_api_key
required

Send your Brew API key as Authorization: Bearer brew_xxx.

Query Parameters

sendId
string

Fetch a single send by id (detail mode → { data: [row] }). Omit to list.

Required string length: 1 - 64
emailId
string

List mode — narrow to one design’s sends. Mutually exclusive with sendId.

Required string length: 1 - 64
include
enum<string>

Detail-only expansion: events inlines a bounded first page of the send’s analytics events. Rejected without sendId.

Available options:
events
status
enum<string>
Available options:
scheduled,
queued,
sending,
sent,
failed,
canceled
from
string<date-time>
to
string<date-time>
limit
integer

Page size (1–100). Defaults to 100.

Required range: 1 <= x <= 100
cursor
string

Opaque pagination cursor echoed from the previous page’s pagination.cursor. Omit for the first page.

Required string length: 1 - 512

Response

A page of sends (list mode), or { data: [row] } (detail mode; events[] present when ?include=events).

data
object[]
required
pagination
object