Skip to main content
POST
/
api
/
webhook
/
email
/
outlook
Handle Outlook (Microsoft Graph) change notification
curl --request POST \
  --url https://your-instance.example.com/api/webhook/email/outlook \
  --header 'Content-Type: application/json' \
  --data '
{
  "value": [
    {
      "subscriptionId": "7f4b2c1d-9e0a-4b3c-8d5e-6f7a8b9c0d1e",
      "subscriptionExpirationDateTime": "2026-05-20T15:04:01.135Z",
      "changeType": "created",
      "resource": "Users/ops@acme.example/Messages/AAMkAGI2T..==",
      "resourceData": {
        "@odata.type": "#Microsoft.Graph.Message",
        "@odata.id": "Users/ops@acme.example/Messages/AAMkAGI2T..==",
        "id": "AAMkAGI2T..=="
      },
      "clientState": "tether-outlook-secret",
      "tenantId": "5f7b1c2e-8a1d-4e00-12c3-b4a55f7b1c2e"
    }
  ]
}
'
"A1B2C3D4-E5F6-7890-ABCD-EF1234567890"

Query Parameters

validationToken
string

Sent by Microsoft Graph during subscription validation. When present the endpoint echoes it back as text/plain and skips notification processing.

Body

application/json

Microsoft Graph change notification batch.

value
object[]

Array of change notifications Microsoft Graph batches into one request.

Response

Validation handshake — the supplied validationToken is echoed back as plain text.

The response is of type string.