Skip to content

Usage

EndpointWhat it does
GET /usageWhat the account has used, against its plan’s allowances.
GET /activityThe account’s recent events. See Accounts.

Calling GET /usage spends none of the allowances it reports. Nothing about a message is in it. The same numbers are on the API screen in the app, on the Usage tab, with the event log under them.

{
"plan": { "id": "plan_scale", "name": "Scale" },
"addresses": { "used": 12, "limit": 1000, "remaining": 988, "assigned": 4 },
"messagesReceived": { "used": 3140, "limit": 750000, "windowEndsAt": "2026-10-03T00:00:00.000Z" },
"messagesSent": {
"hour": { "used": 2, "limit": 60, "windowEndsAt": "2026-09-19T11:00:00.000Z" },
"day": { "used": 9, "limit": 250, "windowEndsAt": "2026-09-20T00:00:00.000Z" }
},
"objectReads": { "used": 220, "limit": 4167, "windowEndsAt": "2026-09-19T11:00:00.000Z" },
"devices": { "used": 3, "limit": null },
"paired": { "used": 4, "limit": null },
"agents": { "used": 1, "allowed": true },
"apiKeys": { "used": 2, "limit": 20, "allowed": true },
"webhooks": { "used": 1, "limit": 10, "allowed": true },
"domains": { "used": 1, "limit": 10 },
"messagesStored": 418
}
FieldWhat it counts
addressesAddresses held, against the account’s address allowance. Every address counts, assigned or not.
messagesReceivedMail taken in during the current 30-day window, by SMTP and through POST /messages. The window is fixed, not rolling, and starts again at windowEndsAt. While the account is paused after a missed payment, the limit shown is the lapsed plan’s, which is what held mail counts against.
messagesSent.hourMail sent this clock hour, against the account’s hourly limit: 60, or more on Fleet and Enterprise (see Rate limits).
messagesSent.dayMail sent today, against the plan’s daily limit. It starts again at 00:00 UTC.
objectReadsMessage bodies and attachments fetched this hour, charged per object rather than per request.
devicesPaired devices, not counting agents, against the plan’s limit. null means unlimited.
pairedDevices and agents together, which is what the device limit counts when pairing.
agents, apiKeys, webhooksHow many are held, and in allowed whether the plan includes them at all. apiKeys and webhooks also give the account’s limit.
domainsYour own domains held, against the plan’s limit, which is 0 below Scale.
messagesStoredMessages the account is holding now, across every address and folder.

windowEndsAt is when that counter starts again.

A limit reached returns 429 with Retry-After, or 402 allocation_exhausted for addresses. See Rate limits.

GET /activity returns the account’s events, newest first, with limit (default 20, at most 200). The response has activity and nextCursor; pass nextCursor back as cursor to read the page before it. It is null on the last page. Events are kept for 90 days. Each carries an id (act_…), an operatorId, a kind, a createdAt and, where they apply, an inboxId and a workerId. The kinds are worker.paired, worker.removed, inbox.created, inbox.deleted, inbox.assigned, inbox.removed and subscription.updated, as webhooks name them, plus message.received (delivered through POST /messages), mail.received (arrived by SMTP) and mail.sent.

Events are a record of what happened, not of what was in it: there is nothing in them about senders, subjects or bodies, because the server never had them.

© Northlab Studios Ltd, trading as Mailcycle. Registered in England and Wales, company no. 17462734. Registered office: 167-169 Great Portland Street, London W1W 5PF.