Mailbox Domain Performance
Per-sender-domain performance for a mailbox and date range. Async, paginated, supports field groups.
Returns reply and close performance broken out by sender domain for a mailbox and date range. Useful for understanding how response time and close behavior vary across the customer base — for example, whether one domain consistently takes longer to reply to than others.
/ api/ v1/ reports/ mailboxDomainPerformance- Auth
- Bearer API key — requires
reportingscope - Async
- Yes — see Result envelope and async polling
- Pagination
- Yes — see Pagination
Authorization
The API key must include the reporting scope and have the requested mailboxId in its mailbox allowlist. A missing scope returns 403; a mailboxId outside the allowlist returns 404.
Query parameters
fieldGroup?stringdefault replyDataComma-separated list of field groups to include. See Field groups.
max?integerdefault 50Maximum result rows per page. Capped at 500.
starting_after?stringCursor — return rows whose id is greater than this. Mutually exclusive with ending_before.
ending_before?stringCursor — return rows whose id is less than this. Mutually exclusive with starting_after.
Body parameters
mailboxIdstringThe mailbox to report on. Must be in the API key’s mailbox allowlist.
startstring (ISO 8601 datetime)Start of the report range, in the mailbox’s time zone. Any time-zone specifier is ignored.
endstring (ISO 8601 datetime)End of the report range, in the mailbox’s time zone.
period"hour" | "day" | "week" | "month"Time period to group results by.
domains?string[]Restrict the results to these sender domains. Each entry is matched exactly against the sender’s domain string as Emailgistics records it (case-insensitive); subdomains are not expanded. Omit (or pass an empty array) to include every domain that has activity in the range.
Field groups
replyData (default)
Per-domain reply performance.
idstringCursor used by pagination.
startDateTimestring (ISO 8601 datetime)Start of the period this row covers.
domainstringThe sender domain this row aggregates.
receivedintegerIncoming messages from this domain in this period.
newConversationsintegerNew conversations started by messages from this domain.
reassignedintegerTimes a message from this domain was reassigned between users.
initialRepliesintegerInitial replies sent in response to messages from this domain.
averageUserInitialReplyTimenumberAverage user reply time, in minutes.
averageMailboxInitialReplyTimenumberAverage mailbox reply time, in minutes.
averageElapsedInitialReplyTimenumberAverage elapsed reply time, in minutes.
insideReplySlaintegerReplies that met their SLA.
outsideReplySlaintegerReplies that missed their SLA.
closeData
Per-domain close performance.
idstringCursor used by pagination.
startDateTimestring (ISO 8601 datetime)Start of the period this row covers.
domainstringThe sender domain this row aggregates.
initialClosedintegerMessages from this domain that were closed in this period.
averageUserCloseTimenumberAverage user close time, in minutes.
averageMailboxCloseTimenumberAverage mailbox close time, in minutes.
averageElapsedCloseTimenumberAverage elapsed close time, in minutes.
insideClosedSlaintegerCloses that met their SLA.
outsideClosedSlaintegerCloses that missed their SLA.
Request
curl -X POST 'https://c1.emailgistics.com/api/v1/reports/mailboxDomainPerformance?fieldGroup=replyData' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"mailboxId": "af412a6c-657f-445b-892c-b6b1fa41ad1b",
"start": "2026-04-01T00:00:00",
"end": "2026-05-01T00:00:00",
"period": "month"
}'{
"mailboxId": "af412a6c-657f-445b-892c-b6b1fa41ad1b",
"start": "2026-04-01T00:00:00",
"end": "2026-05-01T00:00:00",
"period": "month"
}Response
This endpoint is asynchronous — see Result envelope and async polling for the full lifecycle.
{
"_links": {
"self": { "href": "https://c1.emailgistics.com/api/v1/reports/results/d4e5f6a7-...?max=50", "method": "GET" },
"origin": { "href": "https://c1.emailgistics.com/api/v1/reports/mailboxDomainPerformance", "method": "POST", "body": { "parameters": { "mailboxId": "af412a6c-...", "start": "2026-04-01T00:00:00", "end": "2026-05-01T00:00:00", "period": "month" } } }
},
"status": "done",
"progress": 100,
"result": {
"total": 47,
"dataCutoffTimestamp": "2026-05-01T08:14:00.0",
"timeZone": "America/New_York",
"data": [
{
"id": "10001",
"startDateTime": "2026-04-01T00:00:00",
"domain": "acme.com",
"received": 312,
"newConversations": 204,
"reassigned": 17,
"initialReplies": 188,
"averageUserInitialReplyTime": 38.4,
"averageMailboxInitialReplyTime": 64.2,
"averageElapsedInitialReplyTime": 121.7,
"insideReplySla": 171,
"outsideReplySla": 17
}
]
}
}More examples
Filter to specific domains
Pass a domains array to restrict the report to a known set. Useful for tracking specific customer or partner accounts.
curl -X POST 'https://c1.emailgistics.com/api/v1/reports/mailboxDomainPerformance?fieldGroup=replyData,closeData' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"mailboxId": "af412a6c-657f-445b-892c-b6b1fa41ad1b",
"start": "2026-04-01T00:00:00",
"end": "2026-05-01T00:00:00",
"period": "week",
"domains": ["acme.com", "globex.com"]
}'{
"_links": {
"self": { "href": "https://c1.emailgistics.com/api/v1/reports/results/e7f8a9b0-...?max=50", "method": "GET" },
"origin": { "href": "https://c1.emailgistics.com/api/v1/reports/mailboxDomainPerformance", "method": "POST", "body": { "parameters": { "mailboxId": "af412a6c-...", "start": "2026-04-01T00:00:00", "end": "2026-05-01T00:00:00", "period": "week", "domains": ["acme.com", "globex.com"] } } }
},
"status": "done",
"progress": 100,
"result": {
"total": 8,
"dataCutoffTimestamp": "2026-05-01T08:14:00.0",
"timeZone": "America/New_York",
"data": [
{
"id": "10001",
"startDateTime": "2026-04-01T00:00:00",
"domain": "acme.com",
"received": 72,
"initialReplies": 51,
"averageMailboxInitialReplyTime": 41.2,
"initialClosed": 62,
"averageMailboxCloseTime": 158.4,
"insideClosedSla": 58,
"outsideClosedSla": 4
}
]
}
}Pagination
If the result set spans multiple pages, the response includes _links.next and/or _links.prev. Follow them to retrieve adjacent pages — see Pagination.
Errors
| Status | When |
|---|---|
400 | Body fails validation — missing required field, invalid period, or start after end. |
401 | API key missing, malformed, or expired. |
403 | Key is missing the reporting scope. |
404 | mailboxId is not in the key’s mailbox allowlist (or doesn’t exist — the two cases are indistinguishable). |
429 | Rate limit exceeded — see Rate limits. |
5xx | Transient server error. |
Error bodies follow the standard shape — see Errors.
Related
- Mailbox Performance — the same data, aggregated at the mailbox level.
- Received Message Detail — drill into individual messages from a domain.
- Result envelope and async polling
- Field groups and includeDetails