Get the email deliverability report
const url = 'https://api.connect.ms/v2/reports/email-deliverability';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.connect.ms/v2/reports/email-deliverability \ --header 'Authorization: Bearer <token>'Delivery, bounce, complaint and open counts for your email, by the date each event happened: in total, per kind and per day. Defaults to the last 7 days; the range can be at most 30 days.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”The first day to include (ISO 8601 date, UTC). Defaults to six days before until, so the last 7 days.
The last day to include (ISO 8601 date, UTC). Defaults to today.
Header Parameters
Section titled “Header Parameters”The API version to use, for example 2026-10-01. Defaults to the version set on your API key.
Responses
Section titled “Responses”The report.
Email deliverability over a range of dates.
object
An inclusive range of dates.
object
The first day of the range (ISO 8601 date).
The last day of the range (ISO 8601 date).
Deliverability counts and rates. A rate is null when there is nothing to divide by.
object
Emails handed over for delivery.
Emails accepted by the recipient’s mail server.
Emails permanently rejected: the address does not exist or refuses mail.
Temporary rejections by the recipient’s mail server.
Emails the recipient reported as spam.
Emails not sent because the address is on the suppression list.
Unsubscribes recorded.
Emails opened at least once.
Delivered divided by delivered plus hard bounced, between 0 and 1. Null when neither occurred.
Hard bounces divided by emails sent in the period. Null when nothing was sent.
Complaints divided by emails delivered in the period. Null when nothing was delivered.
Totals per kind of email. Every kind is listed, even with no activity.
Deliverability for one kind of email.
object
The kind of email: transactional (service messages, the default), marketing (promotional, subject to marketing opt-outs) or authentication (one-time codes).
Deliverability counts and rates. A rate is null when there is nothing to divide by.
object
Emails handed over for delivery.
Emails accepted by the recipient’s mail server.
Emails permanently rejected: the address does not exist or refuses mail.
Temporary rejections by the recipient’s mail server.
Emails the recipient reported as spam.
Emails not sent because the address is on the suppression list.
Unsubscribes recorded.
Emails opened at least once.
Delivered divided by delivered plus hard bounced, between 0 and 1. Null when neither occurred.
Hard bounces divided by emails sent in the period. Null when nothing was sent.
Complaints divided by emails delivered in the period. Null when nothing was delivered.
Totals per day and kind, oldest first. Only days and kinds with activity are listed.
Deliverability for one kind of email on one day.
object
The day (ISO 8601 date).
The kind of email: transactional (service messages, the default), marketing (promotional, subject to marketing opt-outs) or authentication (one-time codes).
Deliverability counts and rates. A rate is null when there is nothing to divide by.
object
Emails handed over for delivery.
Emails accepted by the recipient’s mail server.
Emails permanently rejected: the address does not exist or refuses mail.
Temporary rejections by the recipient’s mail server.
Emails the recipient reported as spam.
Emails not sent because the address is on the suppression list.
Unsubscribes recorded.
Emails opened at least once.
Delivered divided by delivered plus hard bounced, between 0 and 1. Null when neither occurred.
Hard bounces divided by emails sent in the period. Null when nothing was sent.
Complaints divided by emails delivered in the period. Null when nothing was delivered.
Example
{ "byKind": [ { "kind": "transactional" } ], "daily": [ { "kind": "transactional" } ]}The request is not valid. The detail field says why, and errors lists any problems by field name.
Why a request failed, in the RFC 9457 problem details format.
object
A URI identifying the kind of problem, ending in a code such as validation_failed, not_found, sending_blocked or rate_limited.
A short, fixed summary of the kind of problem.
The HTTP status code of the response.
What went wrong with this particular request, when there is more to say than the title.
For validation failures, the problems found, keyed by field name (nested fields as template.name, list items as messages[3]).
object
The id recorded for this error, matching the Request-Id header when one is sent. Quote it when contacting support.
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.
Why a request failed, in the RFC 9457 problem details format.
object
A URI identifying the kind of problem, ending in a code such as validation_failed, not_found, sending_blocked or rate_limited.
A short, fixed summary of the kind of problem.
The HTTP status code of the response.
What went wrong with this particular request, when there is more to say than the title.
For validation failures, the problems found, keyed by field name (nested fields as template.name, list items as messages[3]).
object
The id recorded for this error, matching the Request-Id header when one is sent. Quote it when contacting support.
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "errors": { "additionalProperty": [ "example" ] }, "requestId": "example"}The caller is not allowed to do this.
Why a request failed, in the RFC 9457 problem details format.
object
A URI identifying the kind of problem, ending in a code such as validation_failed, not_found, sending_blocked or rate_limited.
A short, fixed summary of the kind of problem.
The HTTP status code of the response.
What went wrong with this particular request, when there is more to say than the title.
For validation failures, the problems found, keyed by field name (nested fields as template.name, list items as messages[3]).
object
The id recorded for this error, matching the Request-Id header when one is sent. Quote it when contacting support.
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.
Why a request failed, in the RFC 9457 problem details format.
object
A URI identifying the kind of problem, ending in a code such as validation_failed, not_found, sending_blocked or rate_limited.
A short, fixed summary of the kind of problem.
The HTTP status code of the response.
What went wrong with this particular request, when there is more to say than the title.
For validation failures, the problems found, keyed by field name (nested fields as template.name, list items as messages[3]).
object
The id recorded for this error, matching the Request-Id header when one is sent. Quote it when contacting support.
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "errors": { "additionalProperty": [ "example" ] }, "requestId": "example"}