Mailbox API · Beta
List mailbox events
const url = 'https://api.builders.ac/api/mailbox/v1beta1/events?type=message.received&classification=reply%2Cother_inbound&limit=20&order=created_at.desc';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.builders.ac/api/mailbox/v1beta1/events?type=message.received&classification=reply%2Cother_inbound&limit=20&order=created_at.desc' \ --header 'Authorization: Bearer <token>'The messages observed on your mailboxes over the last 7 days, newest first unless order=created_at.asc. Paged by cursor over (created_at, id): pass next_cursor as starting_after, with the same filters and order.
See Events in the introduction for coverage, latency and how to follow the feed without missing late-classified events.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Event types to include. One value, or several separated by commas. Omitted, it does not narrow.
Examples
message.receivedClassifications to include: outreach, warmup, reply, warmup_reply, autoresponder, other_inbound. One value, or several separated by commas. Omitted, it does not narrow.
Examples
reply,other_inbounddom_ ids of domains you own. One value, or several separated by commas. Omitted, it does not narrow. An id that is unknown or not yours answers 404.
Only events whose message was received at or after this time.
Only events whose message was received at or before this time.
The next_cursor of the previous page.
Responses
Section titled “Responses”A page of events.
object
One message observed on one of your mailboxes. Unknown values are null, never omitted.
object
message.sent when the message was sent from your mailbox, message.received when it arrived in it.
What the message was classified as, best-effort. A reply to your outreach is message.received + reply. other_inbound is inbound mail with no reply evidence — it can still be a prospect writing a fresh email or answering from another address.
Your mailbox, as its full address in lower case. Usable as {email} on /azure.
The recipient of a sent message (the first one with an address), the sender of a received one.
Microsoft Graph’s id for this event’s own copy of the message — the Sent Items and Inbox copies have different ids. Fetch it with GET /azure/v1.0/users/{mailbox}/messages/{message_id}. Graph ids change when a message moves folder; if it has, find the message with GET /azure/v1.0/users/{mailbox}/messages?$filter=internetMessageId eq '…'.
The RFC 5322 Message-ID header. Use it as In-Reply-To to answer in the same thread.
The mailbox’s domain, as the Provisioning API’s dom_ id.
When the mailbox received the message. Second precision.
false on the last page of the retained window.
Pass as starting_after, with the same filters and order, for the next page. null on the last page.
Example
{ "data": [ { "id": "evt_01k5bz9wqzf1tvbsm7j3a2e6hd", "object": "event", "type": "message.received", "classification": "reply", "mailbox": "sender@yourdomain.com", "counterparty": "lead@prospect.com", "subject": "Re: Quick question", "message_id": "AAMkAGI2TG93AAA=", "internet_message_id": "<CAF4x9Q@mail.prospect.com>", "domain_id": "dom_01k4q7m2c8e5r9t3v6w1y0z2ab", "created_at": "2026-09-15T08:24:57+00:00" } ], "has_more": true, "next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNSAwODoyNDo1Ny4wMDAwMDArMDA6MDAifQ.c2lnbmF0dXJl"}No API key (authentication_required), or one that is unknown or revoked (invalid_api_key). Carries WWW-Authenticate: Bearer.
An RFC 9457 problem. Branch on code.
object
The catalogue entry for code, under /problems.
Quote this in support requests. Also sent as x-correlation-id.
Present on 429: when to retry.
Per parameter, what is wrong with it.
object
Example
{ "type": "https://api.builders.ac/api/mailbox/v1beta1/problems/invalid_api_key", "title": "Invalid API key", "status": 401, "detail": "The supplied Mailbox API key is invalid or revoked.", "code": "invalid_api_key", "retryable": false, "correlation_id": "a26397a7-04e1-4c8f-9b1d-2f7e3c5a8d10"}Headers
Section titled “Headers”The credential is valid, but its Core customer account is inactive (account_inactive).
An RFC 9457 problem. Branch on code.
object
The catalogue entry for code, under /problems.
Quote this in support requests. Also sent as x-correlation-id.
Present on 429: when to retry.
Per parameter, what is wrong with it.
object
Example
{ "type": "https://api.builders.ac/api/mailbox/v1beta1/problems/account_inactive", "title": "Account inactive", "status": 403, "detail": "This account is inactive.", "code": "account_inactive", "retryable": false, "correlation_id": "a26397a7-04e1-4c8f-9b1d-2f7e3c5a8d10"}A domain_id that is unknown or not yours. errors.domain_id names it.
An RFC 9457 problem. Branch on code.
object
The catalogue entry for code, under /problems.
Quote this in support requests. Also sent as x-correlation-id.
Present on 429: when to retry.
Per parameter, what is wrong with it.
object
Example
{ "type": "https://api.builders.ac/api/mailbox/v1beta1/problems/not_found", "title": "Not found", "status": 404, "detail": "The requested resource was not found.", "code": "not_found", "retryable": false, "correlation_id": "a26397a7-04e1-4c8f-9b1d-2f7e3c5a8d10", "errors": { "domain_id": [ "The domain \"dom_01k4q7m2c8e5r9t3v6w1y0z2ab\" was not found or is not accessible." ] }}With order=created_at.asc, a starting_after older than the retention window. Restart with created[gte].
An RFC 9457 problem. Branch on code.
object
The catalogue entry for code, under /problems.
Quote this in support requests. Also sent as x-correlation-id.
Present on 429: when to retry.
Per parameter, what is wrong with it.
object
Example
{ "type": "https://api.builders.ac/api/mailbox/v1beta1/problems/cursor_expired", "title": "Cursor expired", "status": 410, "detail": "This cursor points before the retention window, so continuing would skip events that are no longer kept. Restart the listing with created[gte].", "code": "cursor_expired", "retryable": false, "correlation_id": "a26397a7-04e1-4c8f-9b1d-2f7e3c5a8d10"}An invalid parameter, or a cursor reused with different filters or order. errors names each offending parameter.
An RFC 9457 problem. Branch on code.
object
The catalogue entry for code, under /problems.
Quote this in support requests. Also sent as x-correlation-id.
Present on 429: when to retry.
Per parameter, what is wrong with it.
object
Example
{ "type": "https://api.builders.ac/api/mailbox/v1beta1/problems/validation_error", "title": "Validation failed", "status": 422, "detail": "One or more request fields are invalid.", "code": "validation_error", "retryable": false, "correlation_id": "a26397a7-04e1-4c8f-9b1d-2f7e3c5a8d10", "errors": { "type": [ "\"message.opened\" is not an event type. Use message.sent or message.received." ] }}Rate limit exceeded — 60 requests per minute per credential and per account, shared with the Graph surface.
An RFC 9457 problem. Branch on code.
object
The catalogue entry for code, under /problems.
Quote this in support requests. Also sent as x-correlation-id.
Present on 429: when to retry.
Per parameter, what is wrong with it.
object
Example
{ "type": "https://api.builders.ac/api/mailbox/v1beta1/problems/rate_limit_exceeded", "title": "Rate limit exceeded", "status": 429, "detail": "Too many requests were made for this policy.", "code": "rate_limit_exceeded", "retryable": true, "correlation_id": "a26397a7-04e1-4c8f-9b1d-2f7e3c5a8d10", "retry_after": "2026-09-15T08:25:31+00:00"}Headers
Section titled “Headers”Seconds to wait before retrying.
Unix timestamp at which the window resets.
Temporarily unavailable. Retry later.
An RFC 9457 problem. Branch on code.
object
The catalogue entry for code, under /problems.
Quote this in support requests. Also sent as x-correlation-id.
Present on 429: when to retry.
Per parameter, what is wrong with it.
object
Example
{ "type": "https://api.builders.ac/api/mailbox/v1beta1/problems/service_unavailable", "title": "Service unavailable", "status": 503, "detail": "Retry the request later; the service is temporarily unavailable.", "code": "service_unavailable", "retryable": true, "correlation_id": "a26397a7-04e1-4c8f-9b1d-2f7e3c5a8d10"}