Skip to content
Letterhead Letterhead Letterhead Help Center
Admin Tools

Get audience metrics overview

POST
/api/v3/metrics/audience
curl --request POST \
--url https://api.tryletterhead.com/api/v3/metrics/audience \
--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 groupBy=channel \
--form page=1 \
--form limit=5 \
--form sortBy=subscribers \
--form direction=desc \
--form includeCleaned=true

Company-scoped audience growth totals for a date range: new subscribers, total audience members, and unsubscribes, plus a dense daily sparkline and the prior period’s totals for comparison. Pass groupBy=channel to also get a per-channel breakdown.

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). The range between from and to cannot exceed 370 days.

string
Example
2026-02-26
to
required

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

string
Example
2026-03-26
channels[]

string[] | Optionally filter to a list of channels (by their slugs).

string
Example
an-example-channel
groupBy

Pass channel to include a per-channel breakdown.

string
Example
channel
page

Page number for the channel breakdown. Defaults to 1.

string
Example
1
limit

Items per page for the channel breakdown. Max of 50. Defaults to 5.

string
Example
5
sortBy

Sort the channel breakdown by β€œsubscribers” or β€œchannel.” Defaults to β€œsubscribers.”

string
Example
subscribers
direction

Sort direction for the channel breakdown, β€œasc” or β€œdesc.” Defaults to β€œdesc.”

string
Example
desc
includeCleaned

Whether cleaned (previously unengaged, then removed) contacts count toward totalAudienceMembers. Defaults to true.

string
Example
true

Get audience metrics overview

Media type application/json
object
items
object
newSubscribers
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
totalAudienceMembers
integer
totalSubscribers
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
unsubscribes
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
totalCleaned
integer
totalPending
integer
totalUnsubscribes
integer
totalNotSubscribed
integer
lastUpdated
string
totalPendingReengagement
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
totalDisengaged
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
activeReaders
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
activeClickers
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
activeSubscribers
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
firstTimeOpeners
object
currentValue
number
previousValue
number
changePercentage
number
growthRate
number
referenceDate
string
channelId

Internal numeric channel id β€” 0 when the metric is company-wide rather than channel-specific.

integer
daily

One row per day between from and to, inclusive β€” dense, so days with no activity still appear with zero values.

Array<object>
object
date
string
totalSubscribers
integer
newSubscribers
integer
unsubscribes
integer
activeReaders
integer
activeClickers
integer
channels

Present only when groupBy=channel was passed.

object
items
Array<object>
object
channel
string
channelName
string
currentSubscribers
integer
priorSubscribers
integer
changePercentage
number
growthRate
number
daily
Array<object>
object
date
string
subscribers
integer
total
integer
message
string
total
integer
Example
{
"items": {
"newSubscribers": {
"currentValue": 42,
"previousValue": 35,
"changePercentage": 20,
"growthRate": 0.02,
"referenceDate": "2026-03-26",
"channelId": 0
},
"totalAudienceMembers": 5000,
"totalSubscribers": {
"currentValue": 4800,
"previousValue": 4750,
"changePercentage": 1.05,
"growthRate": 0.01,
"referenceDate": "2026-03-26",
"channelId": 0
},
"unsubscribes": {
"currentValue": 8,
"previousValue": 6,
"changePercentage": 33.3,
"growthRate": 0.33,
"referenceDate": "2026-03-26",
"channelId": 0
},
"totalCleaned": 120,
"totalPending": 15,
"totalUnsubscribes": 200,
"totalNotSubscribed": 30,
"lastUpdated": "2026-03-26T00:00:00Z",
"daily": [
{
"date": "2026-02-26",
"totalSubscribers": 4750,
"newSubscribers": 1,
"unsubscribes": 0,
"activeReaders": 300,
"activeClickers": 40
},
{
"date": "2026-02-27",
"totalSubscribers": 4751,
"newSubscribers": 1,
"unsubscribes": 0,
"activeReaders": 295,
"activeClickers": 38
}
]
},
"message": "Audience metrics overview retrieved successfully.",
"total": 1
}

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

Media type application/json
object
data
Array<string>
items
Array<object>
object
message
string
total
integer
Example
{
"data": [
"The from date must be on or before the to date."
],
"items": [],
"message": "Looks like the input data doesn't meet our requirements.",
"total": 0
}

422 Unprocessable Entity β€” the from/to range exceeds 370 days.

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

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