EmailgisticsAPI
API referenceReports

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.

POST/api/v1/reports/mailboxDomainPerformance
Auth
Bearer API key — requires reporting scope
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 replyData

Comma-separated list of field groups to include. See Field groups.

max?integerdefault 50

Maximum result rows per page. Capped at 500.

starting_after?string

Cursor — return rows whose id is greater than this. Mutually exclusive with ending_before.

ending_before?string

Cursor — return rows whose id is less than this. Mutually exclusive with starting_after.

Body parameters

mailboxIdstring

The 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.

idstring

Cursor used by pagination.

startDateTimestring (ISO 8601 datetime)

Start of the period this row covers.

domainstring

The sender domain this row aggregates.

receivedinteger

Incoming messages from this domain in this period.

newConversationsinteger

New conversations started by messages from this domain.

reassignedinteger

Times a message from this domain was reassigned between users.

initialRepliesinteger

Initial replies sent in response to messages from this domain.

averageUserInitialReplyTimenumber

Average user reply time, in minutes.

averageMailboxInitialReplyTimenumber

Average mailbox reply time, in minutes.

averageElapsedInitialReplyTimenumber

Average elapsed reply time, in minutes.

insideReplySlainteger

Replies that met their SLA.

outsideReplySlainteger

Replies that missed their SLA.

closeData

Per-domain close performance.

idstring

Cursor used by pagination.

startDateTimestring (ISO 8601 datetime)

Start of the period this row covers.

domainstring

The sender domain this row aggregates.

initialClosedinteger

Messages from this domain that were closed in this period.

averageUserCloseTimenumber

Average user close time, in minutes.

averageMailboxCloseTimenumber

Average mailbox close time, in minutes.

averageElapsedCloseTimenumber

Average elapsed close time, in minutes.

insideClosedSlainteger

Closes that met their SLA.

outsideClosedSlainteger

Closes 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

StatusWhen
400Body fails validation — missing required field, invalid period, or start after end.
401API key missing, malformed, or expired.
403Key is missing the reporting scope.
404mailboxId is not in the key’s mailbox allowlist (or doesn’t exist — the two cases are indistinguishable).
429Rate limit exceeded — see Rate limits.
5xxTransient server error.

Error bodies follow the standard shape — see Errors.

On this page