Skip to content

messageTrace

Message Trace. Search recent message delivery events with per-message detail. The messageTrace entity set lives under /exchange/v1.0/messageTrace in the Reports & insights category.

Fact Value
Path /exchange/v1.0/messageTrace
Category Reports & insights
Tier Tier 8, Reports
Read role Reports.Read.All (Community)
Write role none (read-only)
Backing cmdlets Get-MessageTraceV2, Get-MessageTraceDetailV2, Get-MessageTrace, Get-MessageTraceDetail
Method Path Synopsis Role Plan
GET /exchange/v1.0/messageTrace List messageTrace entries. Reports.Read Community
GET /exchange/v1.0/messageTrace/{messageTraceId:guid}/detail Per-hop detail for a specific message trace. Requires both messageTraceId (path) and recipientAddress (query). Reports.Read Community

List messageTrace entries.

Backing cmdlet: Get-MessageTraceV2. Role: Reports.Read (Community).

Parameter In Type Required Description
startDate query datetime ISO 8601 datetime, e.g. 2026-05-12T00:00:00Z. If omitted, defaults to 10 days ago (the max single-call window for Get-MessageTraceV2).
endDate query datetime ISO 8601 datetime, e.g. 2026-05-21T23:59:59Z. If omitted, defaults to now (UTC).
senderAddress query string SMTP address of the sender, e.g. [email protected]
recipientAddress query string SMTP address of the recipient
messageId query string RFC 5322 Message-ID header (with or without angle brackets)
messageTraceId query guid EXO message-trace Guid; drill-down with /{messageTraceId}/detail
subject query string Free-text subject substring
subjectFilterType query string How the ‘subject’ value is matched. One of: Contains | StartsWith | EndsWith (default Contains). StartsWith/EndsWith are recommended over the default Contains.
status query string One of: Delivered | Failed | Pending | Quarantined | FilteredAsSpam | Expanded | GettingStatus
fromIP query string Sending IP address
toIP query string Receiving IP address
startingRecipientAddress query string Recipient address to start the next page from; used with endDate to fetch subsequent partial results without duplication. Maps -StartingRecipientAddress on Get-MessageTraceV2.
resultSize query int Cap on rows returned; default 1000, max 5000

Stub auto-generated example for the messageTrace collection. Backing cmdlet: Get-MessageTrace. Live-verify with ?$top=3&$select=Id,Name and replace the synthetic body before promoting to Tier 1.

GET /exchange/v1.0/messageTrace?$top=3 HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#messageTrace",
"value": []
}

Notes: Illustrative example derived from the cmdlet documentation, not a live capture: field names are real, values are placeholders.

Related: GET /exchange/v1.0/messageTrace/{key}

GET /exchange/v1.0/messageTrace/{messageTraceId:guid}/detail

Section titled “GET /exchange/v1.0/messageTrace/{messageTraceId:guid}/detail”

Per-hop detail for a specific message trace. Requires both messageTraceId (path) and recipientAddress (query).

Backing cmdlet: Get-MessageTraceDetailV2. Role: Reports.Read (Community).

Parameter In Type Required Description
recipientAddress query string SMTP address - REQUIRED by Get-MessageTraceDetailV2; the per-recipient slice you want
startDate query datetime ISO 8601 datetime; narrows the per-hop event window
endDate query datetime ISO 8601 datetime
messageId query string RFC 5322 Message-ID
senderAddress query string SMTP address of the sender
action query string Filter to a specific transport action
event query string Filter to a specific transport event