Skip to content
New to this? Read the Track Email guide.

List emails

GET
/v2/email
curl --request GET \
--url https://api.connect.ms/v2/email \
--header 'Authorization: Bearer <token>'

Your emails, newest first, optionally filtered. Paginated with cursor.

status
string
Allowed values: queued sent delivered failed cancelled

Only emails with this status.

kind
string
Allowed values: transactional marketing authentication

Only emails of this kind.

recipient
string
nullable

Only emails to this address. Matches nothing when the caller may not see recipients.

clientReference
string
nullable

Only emails with this client reference.

clientTag
string
nullable

Only emails with this grouping tag.

since
string format: date-time
nullable

Only emails created at or after this time (UTC, ISO 8601).

until
string format: date-time
nullable

Only emails created at or before this time (UTC, ISO 8601).

limit
integer format: int32
nullable

Page size, between 1 and 200. Defaults to 50.

cursor
string
nullable

The nextCursor value from the previous page.

Connect-Version
string

The API version to use, for example 2026-10-01. Defaults to the version set on your API key.

A page of emails.

Media typeapplication/json

A page of results.

object
data
required

The items on this page.

Array<object>

An email. The same shape is returned by every email endpoint and carried by email.* events.

object
id
required

The unique id of the email.

string
kind
required
One of:

The kind of email: transactional (service messages, the default), marketing (promotional, subject to marketing opt-outs) or authentication (one-time codes).

string
Allowed values: transactional marketing authentication
sender
required

The address the email was sent from.

string
recipient

The address the email was sent to. Null when the caller may not see recipients.

string
nullable
subject

The subject line. Null when the caller may not see content.

string
nullable
content
One of:

What is kept of the body after sending.

object
html

The HTML body. Not kept after sending, so always null.

string
nullable
text

A plain-text excerpt of the body, up to 2000 characters, taken from the text body or extracted from the HTML.

string
nullable
status
required
One of:

The email status: queued (accepted or scheduled, not yet handed over for delivery), sent (handed over, awaiting the outcome), delivered (accepted by the recipient’s mail server), failed (see reason) or cancelled.

string
Allowed values: queued sent delivered failed cancelled
reason
One of:

Why an email failed or did not reach the inbox.

object
category
required
One of:

Why an email failed or did not reach the inbox: hard_bounce (the address does not exist or refuses mail), soft_bounce (a temporary problem at the recipient’s server; the email may still arrive), complaint (the recipient reported it as spam), suppressed (the address is on the suppression list), rejected (refused before sending) or failed (any other failure).

string
Allowed values: hard_bounce soft_bounce complaint suppressed rejected failed
code
required

The specific error code in snake_case, e.g. hard_bounce or spam_complaint.

string
description

Details of the problem, such as what the recipient’s mail server said, or null when nothing useful was recorded.

string
nullable
retryable
required

True when sending the email again later may succeed.

boolean
clientReference

Your own reference for this email, as supplied when it was sent.

string
nullable
clientTag

The grouping tag for usage reporting, as stored when the email was sent (lower case, letters, digits and hyphens).

string
nullable
openCount
required

How many times the email’s tracking image has been loaded. Stays 0 unless trackOpens was set.

integer format: int32
createdAt
required

When (UTC) the email was created.

string format: date-time
scheduledAt

When (UTC) the email was asked to send, or null when no send time was given. Sending limits can delay an email beyond this time.

string format: date-time
nullable
sentAt

When (UTC) the email was handed over for delivery, or null if not yet recorded. Can still be null in the send response moments after handover.

string format: date-time
nullable
deliveredAt

When (UTC) the recipient’s mail server accepted the email, or null if not delivered.

string format: date-time
nullable
openedAt

When (UTC) the email was first opened, or null if never.

string format: date-time
nullable
updatedAt
required

When (UTC) the email last changed.

string format: date-time
nextCursor

Pass as cursor to fetch the next page. Null when there are no more results, except on the events feed, which always returns one.

string
nullable

Example

{
"data": [
{
"kind": "transactional",
"status": "queued",
"reason": {
"category": "hard_bounce"
}
}
]
}

The request is not valid. The detail field says why, and errors lists any problems by field name.

Media typeapplication/problem+json

Why a request failed, in the RFC 9457 problem details format.

object
type
required

A URI identifying the kind of problem, ending in a code such as validation_failed, not_found, sending_blocked or rate_limited.

string
title
required

A short, fixed summary of the kind of problem.

string
status
required

The HTTP status code of the response.

integer format: int32
detail

What went wrong with this particular request, when there is more to say than the title.

string
nullable
errors

For validation failures, the problems found, keyed by field name (nested fields as template.name, list items as messages[3]).

object
key
additional properties
Array<string>
requestId
required

The id recorded for this error, matching the Request-Id header when one is sent. Quote it when contacting support.

string

Example generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"errors": {
"additionalProperty": [
"example"
]
},
"requestId": "example"
}

The API key or bearer token is missing or not valid, or the request signature could not be verified.

Media typeapplication/problem+json

Why a request failed, in the RFC 9457 problem details format.

object
type
required

A URI identifying the kind of problem, ending in a code such as validation_failed, not_found, sending_blocked or rate_limited.

string
title
required

A short, fixed summary of the kind of problem.

string
status
required

The HTTP status code of the response.

integer format: int32
detail

What went wrong with this particular request, when there is more to say than the title.

string
nullable
errors

For validation failures, the problems found, keyed by field name (nested fields as template.name, list items as messages[3]).

object
key
additional properties
Array<string>
requestId
required

The id recorded for this error, matching the Request-Id header when one is sent. Quote it when contacting support.

string

Example generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"errors": {
"additionalProperty": [
"example"
]
},
"requestId": "example"
}

The caller is not allowed to do this.

Media typeapplication/problem+json

Why a request failed, in the RFC 9457 problem details format.

object
type
required

A URI identifying the kind of problem, ending in a code such as validation_failed, not_found, sending_blocked or rate_limited.

string
title
required

A short, fixed summary of the kind of problem.

string
status
required

The HTTP status code of the response.

integer format: int32
detail

What went wrong with this particular request, when there is more to say than the title.

string
nullable
errors

For validation failures, the problems found, keyed by field name (nested fields as template.name, list items as messages[3]).

object
key
additional properties
Array<string>
requestId
required

The id recorded for this error, matching the Request-Id header when one is sent. Quote it when contacting support.

string

Example generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"errors": {
"additionalProperty": [
"example"
]
},
"requestId": "example"
}

The service is temporarily unavailable. Retry after the Retry-After header.

Media typeapplication/problem+json

Why a request failed, in the RFC 9457 problem details format.

object
type
required

A URI identifying the kind of problem, ending in a code such as validation_failed, not_found, sending_blocked or rate_limited.

string
title
required

A short, fixed summary of the kind of problem.

string
status
required

The HTTP status code of the response.

integer format: int32
detail

What went wrong with this particular request, when there is more to say than the title.

string
nullable
errors

For validation failures, the problems found, keyed by field name (nested fields as template.name, list items as messages[3]).

object
key
additional properties
Array<string>
requestId
required

The id recorded for this error, matching the Request-Id header when one is sent. Quote it when contacting support.

string

Example generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"errors": {
"additionalProperty": [
"example"
]
},
"requestId": "example"
}