Skip to the documentation
API

Analytics

Every operation in this group: what it accepts, what it returns and the errors it can answer with.

Operations

The numbers behind the Analytics page of the app: how mail arrives in the mailbox, and what became of the mail the workspace sent.

GET/analytics/mailbox

Read how mail arrives

Scopesthreads:readReads

How mail arrives, as the Analytics page of the app shows it, for a window of 30 days up to now unless from and to say otherwise: conversations per day or per grain bucket and per hour of the day, the addresses they arrived at, the senders who wrote most, how many wait on a reply for 1, 3, 7 days or more, and the folders. A key or an app limited to particular addresses counts only the mail that arrived at them, and address narrows everything to one address.

Requires the threads:read scope.

Query parameters

fromstring

The start of the window, ISO 8601 with a zone. Defaults to 30 days before to.

Formatdate-time
tostring

The end of the window. Defaults to now.

Formatdate-time
offsetMinutesinteger

Minutes east of UTC to cut days and hours in, from -840 to 840. Pass the reader’s offset so a day breaks where theirs does.

At least -840At most 840Default0
grainstring

How wide one bucket of days and series is.

One of"minute""hour""day"Default"day"
addressstring

Count only the mail delivered to this address. One the key does not reach counts nothing.

3 to 320 characters

Returns

The numbers for the window.

Errors

The errors every operation can return400401403404422500Error catalog

Also available in

SDK
analytics.mailbox()
CLI
openemail analytics mailbox
MCP
getMailboxInsights

GET/analytics/sending

Read what became of sent mail

Scopesemails:readReads

What the workspace sent inside a window and what became of it, as the Analytics page of the app shows it: delivered, failed, bounced and complained, per day or per grain bucket, with the statuses, the sources, the senders and the addresses suppressed. The window is days, 30 by default and at most 365, or minutes, which wins, and it starts at the beginning of its oldest bucket. A key or an app limited to particular addresses counts only the mail sent from them.

Requires the emails:read scope.

Query parameters

daysinteger

Window length in days.

At least 1At most 365Default30
minutesinteger

Window length in minutes, which wins over days.

At least 1At most 525600
grainstring

How wide one bucket of days is.

One of"minute""hour""day"Default"day"
offsetMinutesinteger

Minutes east of UTC to cut the buckets in, from -840 to 840.

At least -840At most 840Default0
addressstring

Count only the mail sent from this address. One the key does not reach counts nothing.

3 to 320 characters

Returns

The numbers for the window.

Errors

The errors every operation can return400401403404422500Error catalog

Also available in

SDK
analytics.sending()
CLI
openemail analytics sending
MCP
getSendingAnalytics

Objects

MailboxInsightsobject

objectstringRequired
One of"mailbox_insights"
fromstringRequired
Formatdate-time
tostringRequired
Formatdate-time
grainstringRequired
One of"minute""hour""day"Default"day"
offsetMinutesintegerRequired
scannedintegerRequired

Conversations that arrived inside the window.

daysobject[]Required
daystringRequired

The bucket: YYYY-MM-DD, YYYY-MM-DDTHH or YYYY-MM-DDTHH:MM by grain.

countintegerRequired
hoursobject[]Required
hourintegerRequired

The hour of the day, 0 to 23, in offsetMinutes.

countintegerRequired
addressesobject[]Required
addressstringRequired

The address the mail arrived at.

countintegerRequired
sendersobject[]Required

The senders who wrote most, most first.

emailstring
namestring
Can be null
countinteger
lastAtstring
Formatdate-time
senderCountintegerRequired

Everyone who wrote inside the window.

waitingobject[]Required

Conversations whose last message came from somebody else, by how many days it has waited.

bandintegerRequired

At least this many days.

countintegerRequired
unattributedintegerRequired

Mail that recorded no address it arrived at.

foldersobject[]Required
labelstring
countinteger
unreadinteger
seriesobject[]Required

Per bucket counts for the top addresses and senders, so each can be charted.

kindstring
keystring
daystring
countinteger

SendingAnalyticsobject

objectstringRequired
One of"sending_analytics"
sincestringRequired
Formatdate-time
untilstringRequired
Formatdate-time
grainstringRequired
One of"minute""hour""day"Default"day"
offsetMinutesintegerRequired
totalsobjectRequired
sendsinteger
testSendsinteger
recipientsinteger
deliveredinteger
failedinteger
bouncedinteger
complainedinteger
uncertaininteger
pendinginteger
daysobject[]Required
daystring
sentinteger
deliveredinteger
failedinteger
bouncedinteger
complainedinteger
statusesobject[]Required

Sends by status.

labelstringRequired

What is counted.

countintegerRequired
sourcesobject[]Required

Sends by where they came from: the app, the API, a broadcast and the rest.

labelstringRequired

What is counted.

countintegerRequired
sendersobject[]Required

Sends by the address they went out as.

labelstringRequired

What is counted.

countintegerRequired
suppressedobject[]Required

Addresses that were suppressed, by reason.

labelstringRequired

What is counted.

countintegerRequired