Email Delivery (report)
/api/v1/reports/email-deliveryRequest
/api/v1/reports/email-deliverycurl -X GET 'https://app.mailyte.com/api/v1/reports/email-delivery' \
-H 'Authorization: Bearer mk_live_YOUR_API_KEY'const response = await fetch('https://app.mailyte.com/api/v1/reports/email-delivery', {
method: 'GET',
headers: {
Authorization: 'Bearer mk_live_YOUR_API_KEY',
},
});
const { data } = await response.json();import requests
response = requests.get(
"https://app.mailyte.com/api/v1/reports/email-delivery",
headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
)
data = response.json()["data"]<?php
$response = Http::withToken('mk_live_YOUR_API_KEY')
->get('https://app.mailyte.com/api/v1/reports/email-delivery');
$data = $response->json('data');require "net/http"
require "json"
uri = URI("https://app.mailyte.com/api/v1/reports/email-delivery")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer mk_live_YOUR_API_KEY"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }Response
Success.
dataobjectobjectstringemail_delivery_reportgenerated_atstringWhen this response was computed, ISO 8601 UTC. Every report answers it, so "is this figure stale?" never depends on which report you asked.
periodobjectThe period this report covers. A
date_rangeother thanday,week,monthorquarterfalls back tomonth, and this shows it. Null for a report read from/reports/history.start_atstringend_atstringgranularitystringdayThe width of one
seriesbucket. Alwaysday: thegranularityquery parameter is accepted and ignored.
totalsobjectCounts for the whole period. Divide them yourself for rates.
sentintegerEvery delivery event in the period: delivered, bounced, deferred, rejected and dropped. It includes deferrals, so it is usually more than the figures beside it added up. Null means unavailable, not 0.
deliveredintegerMessages a receiving server accepted. Divide engagement counts by this for rates. Null means unavailable, not 0.
bouncedintegerMessages a receiving server refused. Null means unavailable, not 0.
failedintegerMessages that will not be delivered: rejected plus dropped. Deferrals are retried and not counted here. Null means unavailable, not 0.
seriesarray<object>The same counts bucketed over the period, oldest first. Rows are SPARSE: a bucket in which nothing happened has no row at all, rather than a row of zeros, so do not index this array by day offset.
start_atstringWhen this time bucket starts: midnight UTC.
sentintegerEvery delivery event in the period: delivered, bounced, deferred, rejected and dropped. It includes deferrals, so it is usually more than the figures beside it added up. Null means unavailable, not 0.
deliveredintegerMessages a receiving server accepted. Divide engagement counts by this for rates. Null means unavailable, not 0.
bouncedintegerMessages a receiving server refused. Null means unavailable, not 0.
failedintegerMessages that will not be delivered: rejected plus dropped. Deferrals are retried and not counted here. Null means unavailable, not 0.
bounce_reasonsarray<object>The ten most common bounce reasons in the period, most common first.
reasonstringThe bounce reason as reported.
unknowngroups bounces with no reason, so the counts add up tototals.bounced.countintegerBounces in the period with this reason. Null means unavailable, not 0.
Returned inside the standard envelope.
Errors
| Status | When |
|---|---|
401 | The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist. |
403 | The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys. |
404 | No such resource in this organization. |
422 | The request was understood but the values were not acceptable. |
429 | Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait. |
Every status, with what causes it and what to do, is on the error reference.