Communications

List sent emails

GET/communications/emails

Lists the token organisation's emails, newest first by default. sent_at is when an email first went to a recipient, and it is null until then. Sorting by sent_at places emails with no sent_at after every sent email in ascending order and before them in descending order. A list item leaves out the body; send include=body to add body_html and body_text. Use GET /communications/overview/stats for totals across the filtered set instead of paging through it.

Query parameters

  • limitinteger#

    Page size (1–100). Defaults to 25; values are clamped to the range.

    Default: 25
  • cursorstring#

    Opaque pagination cursor taken from a prior response's meta.next_cursor.

  • fieldsstring#

    Comma-separated top-level fields to return. id is always returned.

  • sortstring#

    Comma-separated fields to sort by, from the operation's allowed list. Prefix a field with - for descending. The record id is always the final tiebreak.

  • includestring#

    Comma-separated related records to embed, from the operation's allowed list.

  • filter[q]string#

    Emails whose subject contains this text, ignoring case.

  • filter[sent_at]string (date-time)#

    Only emails first sent in a range, written filter[sent_at][gte]=2026-10-01. Takes gt, gte, lt and lte. Emails not yet sent to anyone have no sent_at and never match.

  • filter[deal_id]string (uuid)#

    Emails about this deal. Takes [in] and [not_in] with a comma-separated list.

  • filter[status]string#

    Only emails in this sending status: queued, sending, sent, failed, suppressed or retry_scheduled. Takes [in] and [not_in] with a comma-separated list.

    One of: queued, sending, sent, failed, suppressed, retry_scheduled
  • filter[source_type]string#

    Only emails produced by this source: distribution, invite, notification, deal_promotion, workflow, account or custom. Takes [in] and [not_in] with a comma-separated list. Any other value returns 422.

    One of: distribution, invite, notification, deal_promotion, workflow, account, custom
  • filter[recipient_email]string#

    Emails with a main recipient at this address, ignoring case. Copied recipients do not match. Takes [in] and [not_in] with a comma-separated list. Takes [contains] for a partial match.

  • filter[recipient_name]string#

    Emails with a main recipient of this name, ignoring case. Copied recipients do not match. Takes [in] and [not_in] with a comma-separated list. Takes [contains] for a partial match.

Responses

200

The sent emails.

SentEmail[]
{
  "data": [
    {
      "id": "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a",
      "subject": "string",
      "status": "queued",
      "template": "string",
      "sender_email": "string",
      "sender_name": "string",
      "source_type": "distribution",
      "source_label": "string",
      "deal_ids": [
        "9a9d1c5e-4f2b-4c8e-9a7d-2f1e6b3c4d5a"
      ],
      "recipient_count": 1,
      "opens": 1,
      "clicks": 1,
      "sent_at": "2026-06-12T10:00:00+00:00",
      "body_html": "string",
      "body_text": "string",
      "created_at": "2026-06-12T10:00:00+00:00",
      "updated_at": "2026-06-12T10:00:00+00:00"
    }
  ],
  "meta": {
    "limit": 1,
    "next_cursor": "string",
    "prev_cursor": "string"
  }
}
401

Authentication failed. error.code is one of invalid_token, expired, revoked.

Error
403

Authorization failed. error.code is one of org_disabled, ip_blocked, missing_scope, scope_disabled, user_disabled.

Error
422

The request can't be processed (HTTP 422): validation_failed with one ErrorDetail per problem, or a code documented on the operation.

Error
429

Rate limit exceeded (error.code = rate_limited).

Error

Examples

curl https://your-org-domain/kong/core/api/v2/communications/emails\
  -H "Authorization: Bearer $HELM_API_KEY"\
  -H "Content-Type: application/json"