Skip to content
Letterhead Letterhead Letterhead Help Center
Admin Tools

Get metrics

POST
/api/v3/metrics
curl --request POST \
--url https://api.tryletterhead.com/api/v3/metrics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form api=true \
--form from=2026-02-26 \
--form to=2026-03-26 \
--form 'channels[]=an-example-channel' \
--form direction=desc \
--form groupBy=channel \
--form limit=5 \
--form page=1 \
--form sortBy=opens

Company-scoped send/engagement totals for a date range β€” accepted, bounced, clicks, unique opens (confirmed and unconfirmed) β€” plus a daily sparkline and the prior period’s totals for comparison. Pass groupBy=channel to also get a per-channel breakdown, sorted by sortBy.

v3 endpoints expect a company API key.

Media type multipart/form-data
object
api
required

When set to true, this endpoint will accept authorization with your API Key.

string
Example
true
from
required

Period start date (inclusive).

string
Example
2026-02-26
to
required

Period end date (inclusive), must be >= from, max 90 days.

string
Example
2026-03-26
channels[]

string[] | Optionally filter your metrics with a list of channels (by their identifiers).

string
Example
an-example-channel
direction

Change sort direction by optionally specifying β€œasc” or β€œdesc.” Descending is default.

string
Example
desc
groupBy

Pass channel to include per-channel breakdown

string
Example
channel
limit

Items per page for the channel breakdown. Max of 25.

string
Example
5
page

Page number for channel breakdown, as those will be paginated.

string
Example
1
sortBy

Sort by β€œopens” or β€œchannel” for a channel breakdown. Defaults to β€œopens.”

string
Example
opens

Get metrics

Media type application/json
object
items
object
currentPeriod
object
totals
object
accepted
integer
bounced
integer
clicks
integer
clicksUnique
integer
opensUnique
integer
opensUniqueConfirmed
integer
unsubscribes
integer
daily
Array<object>
object
date
string
accepted
integer
bounced
integer
clicks
integer
clicksUnique
integer
opensUnique
integer
opensUniqueConfirmed
integer
priorPeriod
object
totals
object
accepted
integer
bounced
integer
clicks
integer
clicksUnique
integer
opensUnique
integer
opensUniqueConfirmed
integer
unsubscribes
integer
message
string
total
integer
Example
{
"items": {
"currentPeriod": {
"totals": {
"accepted": 172,
"bounced": 0,
"clicks": 6,
"clicksUnique": 2,
"opensUnique": 139,
"opensUniqueConfirmed": 139,
"unsubscribes": 0
},
"daily": [
{
"date": "2026-02-27",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-02-28",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-01",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-02",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-05",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-06",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-07",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-08",
"accepted": 15,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 11,
"opensUniqueConfirmed": 11
},
{
"date": "2026-03-09",
"accepted": 13,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 9,
"opensUniqueConfirmed": 9
},
{
"date": "2026-03-10",
"accepted": 1,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 1,
"opensUniqueConfirmed": 1
},
{
"date": "2026-03-11",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-12",
"accepted": 13,
"bounced": 0,
"clicks": 6,
"clicksUnique": 2,
"opensUnique": 12,
"opensUniqueConfirmed": 12
},
{
"date": "2026-03-13",
"accepted": 13,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 12,
"opensUniqueConfirmed": 12
},
{
"date": "2026-03-14",
"accepted": 12,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 10,
"opensUniqueConfirmed": 10
},
{
"date": "2026-03-15",
"accepted": 14,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 11,
"opensUniqueConfirmed": 11
},
{
"date": "2026-03-16",
"accepted": 12,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 9,
"opensUniqueConfirmed": 9
},
{
"date": "2026-03-17",
"accepted": 5,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 4,
"opensUniqueConfirmed": 4
},
{
"date": "2026-03-18",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-19",
"accepted": 12,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 11,
"opensUniqueConfirmed": 11
},
{
"date": "2026-03-20",
"accepted": 12,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 11,
"opensUniqueConfirmed": 11
},
{
"date": "2026-03-21",
"accepted": 12,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 10,
"opensUniqueConfirmed": 10
},
{
"date": "2026-03-22",
"accepted": 14,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 8,
"opensUniqueConfirmed": 8
},
{
"date": "2026-03-23",
"accepted": 12,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 9,
"opensUniqueConfirmed": 9
},
{
"date": "2026-03-24",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-25",
"accepted": 0,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 0,
"opensUniqueConfirmed": 0
},
{
"date": "2026-03-26",
"accepted": 12,
"bounced": 0,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 11,
"opensUniqueConfirmed": 11
}
]
},
"priorPeriod": {
"totals": {
"accepted": 160,
"bounced": 1,
"clicks": 0,
"clicksUnique": 0,
"opensUnique": 119,
"opensUniqueConfirmed": 117,
"unsubscribes": 0
}
}
},
"message": "Do something kind today",
"total": 1
}

400 Validation Error β€” from/to missing or malformed.

Media type application/json
object
data
Array<string>
items
Array<object>
object
message
string
total
integer
Example
{
"data": [
"The from field is required."
],
"items": [],
"message": "Looks like the input data doesn't meet our requirements.",
"total": 0
}

422 Unprocessable Entity β€” from is after to, or the from/to range exceeds 90 days.

Media type application/json
object
data
Array<string>
items
Array<object>
object
message
string
total
integer
Example
{
"data": [
"Date range must not exceed 90 days."
],
"items": [],
"message": "Looks like the input data doesn't meet our requirements.",
"total": 0
}

Still can’t find what you need? Contact support.