EmailgisticsAPI
API referenceReports

Received Message Detail

Per-message detail for received, replied, or closed activity. Async, paginated, supports five field groups.

Returns a row per message, suitable for drilling into individual conversations. Filter by activity type (received, replied, closed), status (open, snoozed, closed), assigned owners, tags, sender domain, or a specific conversation.

POST/api/v1/reports/receivedMessageDetail
Auth
Bearer API key — requires both reporting and messages:read scopes
Async
Yes — see Result envelope and async polling
Pagination
Yes — see Pagination

Authorization

The API key must include both the reporting and messages:read scopes, 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 basic

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

includeDetails?booleandefault false

When true, includes user display name and email alongside user IDs in the response.

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

activityType"received" | "replied" | "closed"

Which activity timestamp to filter by. Determines the meaning of activityStart and activityEnd, and the primary sort field of the response.

activityStart?string (ISO 8601 datetime)default 2000-01-01T00:00:00Z

Return messages whose activityType event occurred at or after this time. Format: YYYY-MM-DDTHH:MM:SS[Z]. A bare date (e.g. 2026-01-01) is rejected with 400.

activityEnd?string (ISO 8601 datetime)default 2100-12-31T00:00:00Z

Return messages whose activityType event occurred at or before this time. Same format requirement as activityStart.

statuses?("open" | "snoozed" | "closed")[]

Restrict to messages in these statuses. Omit (or pass an empty array) to return every status.

owners?string[]

Restrict to messages assigned to these users. The reserved value "unassigned" includes messages with no current owner.

tags?string[]

Restrict to messages that carry at least one of these tag IDs.

domains?string[]

Restrict to messages from these sender domains.

conversationId?string

Restrict to messages in a single conversation. Useful for fetching the full message-level history of a conversation you already know about.

Field groups

Five groups are supported. Request multiple by comma-separating: ?fieldGroup=basic,replyData,tags.

basic (default)

The core message identity and assignment fields.

idstring

Cursor used by pagination.

messageIdstring

Internal message identifier. Use this with List attachments.

receivedTimestampstring (ISO 8601 datetime)

When the message was received. Primary sort field when activityType is received.

fromNamestring

Display name of the sender.

fromEmailstring

Email address of the sender.

fromDomainstring

Sender domain.

subjectstring

Message subject line.

conversationIdstring

Conversation the message belongs to.

ownerUserIdstring

Current owner of the message, if assigned.

assignedTimestampstring (ISO 8601 datetime)

When the message was last assigned.

status"open" | "snoozed" | "closed"

Current message status.

owaUrlstring

Link to open the message in Outlook Web Access (the browser-based Outlook client at outlook.office.com).

replyData

Reply-related fields.

replyUserIdstring

User who sent the initial reply.

replyTimestampstring (ISO 8601 datetime)

When the initial reply was sent. Primary sort field when activityType is replied.

replyTimeUsernumber

User reply time, in minutes.

replyTimeMailboxnumber

Mailbox reply time, in minutes.

replyTimeElapsednumber

Elapsed reply time, in minutes.

hasReplySlaboolean

Whether the message had a reply SLA.

replySlaMetboolean

Whether the reply SLA was met.

closeData

Close-related fields.

closedUserIdstring

User who closed the message.

closedTimestampstring (ISO 8601 datetime)

When the message was closed. Primary sort field when activityType is closed.

closedTimeUsernumber

User close time, in minutes.

closedTimeMailboxnumber

Mailbox close time, in minutes.

closedTimeElapsednumber

Elapsed close time, in minutes.

hasClosedSlaboolean

Whether the message had a close SLA.

closedSlaMetboolean

Whether the close SLA was met.

tags

tagsTag[]

Tags applied to the message — array of Tag objects.

notes

notesNote[]

Notes recorded on the message — array of Note objects.

Detail fields (with includeDetails=true)

Each user-ID field gets a corresponding …UserName and …UserEmail field:

ownerUserName?string

Display name of the current owner.

ownerUserEmail?string

Email of the current owner.

replyUserName?string

Display name of the user who replied.

replyUserEmail?string

Email of the user who replied.

closedUserName?string

Display name of the user who closed.

closedUserEmail?string

Email of the user who closed.

Tag object

Returned in the tags field group.

tagIdstring

Tag identifier.

tagName?string

Tag name. Only present when includeDetails=true.

tagColor?string

Internal color identifier (e.g. Preset10). Only present when includeDetails=true.

active?boolean

Whether the tag is currently active. Only present when includeDetails=true.

Note object

Returned in the notes field group. Fields are omitted when empty.

noteIdstring

Note identifier.

createdTimestampstring (ISO 8601 datetime)

When the note was created.

creatorUserIdstring

User who created the note.

creatorUserName?string

Display name. Only present when includeDetails=true.

creatorUserEmail?string

Email. Only present when includeDetails=true.

contentstring

The note text.

Request

curl -X POST 'https://c1.emailgistics.com/api/v1/reports/receivedMessageDetail?fieldGroup=basic,replyData&max=100' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "mailboxId":     "af412a6c-657f-445b-892c-b6b1fa41ad1b",
    "activityType":  "received",
    "activityStart": "2026-04-15T00:00:00",
    "activityEnd":   "2026-04-22T00:00:00"
  }'
{
  "mailboxId":     "af412a6c-657f-445b-892c-b6b1fa41ad1b",
  "activityType":  "received",
  "activityStart": "2026-04-15T00:00:00",
  "activityEnd":   "2026-04-22T00:00:00"
}

Response

This endpoint is asynchronous — see Result envelope and async polling.

{
  "_links": {
    "self":   { "href": "https://c1.emailgistics.com/api/v1/reports/results/9a8b7c6d-...?max=100", "method": "GET" },
    "origin": { "href": "https://c1.emailgistics.com/api/v1/reports/receivedMessageDetail", "method": "POST", "body": { "parameters": { "mailboxId": "af412a6c-...", "activityType": "received", "activityStart": "2026-04-15T00:00:00", "activityEnd": "2026-04-22T00:00:00" } } },
    "next":   { "href": "https://c1.emailgistics.com/api/v1/reports/results/9a8b7c6d-...?max=100&starting_after=20100", "method": "GET" }
  },
  "status":   "done",
  "progress": 100,
  "result": {
    "total": 1247,
    "dataCutoffTimestamp": "2026-04-22T08:14:00.0",
    "timeZone": "America/New_York",
    "data": [
      {
        "id":                "20001",
        "messageId":         "AAMkAGI2NjY1ZTM3LTQ4OTktNDdkMi1iMjBjLWQ4NWY...",
        "receivedTimestamp": "2026-04-15T09:14:32",
        "fromName":          "Ren Storrie",
        "fromEmail":         "rstorrie@pinnilly.com",
        "fromDomain":        "pinnilly.com",
        "subject":           "Coverage question",
        "conversationId":    "2L8WYB89Z",
        "ownerUserId":       "3f4a5b60-774a-43f5-afb9-dfe54eaf6c3f",
        "assignedTimestamp": "2026-04-15T09:15:08",
        "status":            "open",
        "owaUrl":            "https://outlook.office.com/...",
        "replyTimestamp":    "2026-04-15T09:42:11",
        "replyUserId":       "3f4a5b60-774a-43f5-afb9-dfe54eaf6c3f",
        "replyTimeMailbox":  27.6,
        "hasReplySla":       true,
        "replySlaMet":       true
      }
    ]
  }
}

More examples

Drill into a specific conversation, with tags and notes

Useful when a customer support escalation lands and you need the full message-level history of one conversation.

curl -X POST 'https://c1.emailgistics.com/api/v1/reports/receivedMessageDetail?fieldGroup=basic,tags,notes&includeDetails=true' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "mailboxId":      "af412a6c-657f-445b-892c-b6b1fa41ad1b",
    "activityType":   "received",
    "conversationId": "2L8WYB89Z"
  }'
{
  "_links": {
    "self":   { "href": "https://c1.emailgistics.com/api/v1/reports/results/aabb1122-...?max=50", "method": "GET" },
    "origin": { "href": "https://c1.emailgistics.com/api/v1/reports/receivedMessageDetail", "method": "POST", "body": { "parameters": { "mailboxId": "af412a6c-...", "activityType": "received", "conversationId": "2L8WYB89Z" } } }
  },
  "status":   "done",
  "progress": 100,
  "result": {
    "total": 4,
    "timeZone": "America/New_York",
    "data": [
      {
        "id":                "20007",
        "messageId":         "AAMkAGI...",
        "receivedTimestamp": "2026-04-15T09:14:32",
        "fromName":          "Ren Storrie",
        "fromEmail":         "rstorrie@pinnilly.com",
        "fromDomain":        "pinnilly.com",
        "subject":           "Coverage question",
        "conversationId":    "2L8WYB89Z",
        "ownerUserId":       "3f4a5b60-774a-43f5-afb9-dfe54eaf6c3f",
        "ownerUserName":     "Emily Johnson",
        "ownerUserEmail":    "emilyjohnson@company.com",
        "status":            "closed",
        "tags": [
          { "tagId": "71c99741-...", "tagName": "Priority",   "tagColor": "Preset10", "active": true },
          { "tagId": "bdcdbc3a-...", "tagName": "New Client", "tagColor": "Preset11", "active": true }
        ],
        "notes": [
          {
            "noteId":           "55aa7711-...",
            "createdTimestamp": "2026-04-15T09:18:42",
            "creatorUserId":    "3f4a5b60-774a-43f5-afb9-dfe54eaf6c3f",
            "creatorUserName":  "Emily Johnson",
            "creatorUserEmail": "emilyjohnson@company.com",
            "content":          "Confirmed coverage with underwriter; will follow up by EOD."
          }
        ]
      }
    ]
  }
}

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 mailboxId or activityType, invalid date range, unknown enum value.
401API key missing, malformed, or expired.
403Key is missing the reporting or messages:read 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