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.
/ api/ v1/ reports/ receivedMessageDetail- Auth
- Bearer API key — requires both
reportingandmessages:readscopes - 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 basicComma-separated list of field groups to include. See Field groups.
includeDetails?booleandefault falseWhen true, includes user display name and email alongside user IDs in the response.
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 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:00ZReturn 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:00ZReturn 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?stringRestrict 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.
idstringCursor used by pagination.
messageIdstringInternal message identifier. Use this with List attachments.
receivedTimestampstring (ISO 8601 datetime)When the message was received. Primary sort field when activityType is received.
fromNamestringDisplay name of the sender.
fromEmailstringEmail address of the sender.
fromDomainstringSender domain.
subjectstringMessage subject line.
conversationIdstringConversation the message belongs to.
ownerUserIdstringCurrent owner of the message, if assigned.
assignedTimestampstring (ISO 8601 datetime)When the message was last assigned.
status"open" | "snoozed" | "closed"Current message status.
owaUrlstringLink to open the message in Outlook Web Access (the browser-based Outlook client at outlook.office.com).
replyData
Reply-related fields.
replyUserIdstringUser who sent the initial reply.
replyTimestampstring (ISO 8601 datetime)When the initial reply was sent. Primary sort field when activityType is replied.
replyTimeUsernumberUser reply time, in minutes.
replyTimeMailboxnumberMailbox reply time, in minutes.
replyTimeElapsednumberElapsed reply time, in minutes.
hasReplySlabooleanWhether the message had a reply SLA.
replySlaMetbooleanWhether the reply SLA was met.
closeData
Close-related fields.
closedUserIdstringUser who closed the message.
closedTimestampstring (ISO 8601 datetime)When the message was closed. Primary sort field when activityType is closed.
closedTimeUsernumberUser close time, in minutes.
closedTimeMailboxnumberMailbox close time, in minutes.
closedTimeElapsednumberElapsed close time, in minutes.
hasClosedSlabooleanWhether the message had a close SLA.
closedSlaMetbooleanWhether 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?stringDisplay name of the current owner.
ownerUserEmail?stringEmail of the current owner.
replyUserName?stringDisplay name of the user who replied.
replyUserEmail?stringEmail of the user who replied.
closedUserName?stringDisplay name of the user who closed.
closedUserEmail?stringEmail of the user who closed.
Tag object
Returned in the tags field group.
tagIdstringTag identifier.
tagName?stringTag name. Only present when includeDetails=true.
tagColor?stringInternal color identifier (e.g. Preset10). Only present when includeDetails=true.
active?booleanWhether the tag is currently active. Only present when includeDetails=true.
Note object
Returned in the notes field group. Fields are omitted when empty.
noteIdstringNote identifier.
createdTimestampstring (ISO 8601 datetime)When the note was created.
creatorUserIdstringUser who created the note.
creatorUserName?stringDisplay name. Only present when includeDetails=true.
creatorUserEmail?stringEmail. Only present when includeDetails=true.
contentstringThe 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
| Status | When |
|---|---|
400 | Body fails validation — missing mailboxId or activityType, invalid date range, unknown enum value. |
401 | API key missing, malformed, or expired. |
403 | Key is missing the reporting or messages:read 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 Domain Performance — aggregate counts grouped by sender domain.
- List attachments — fetch attachments for a
messageIdfrom this response. - Result envelope and async polling
- Field groups and includeDetails