Webhook payload
Envelope delivered to webhook endpoints for Sazabi notification events.
Sazabi sends one JSON envelope for every webhook delivery. The type value is the notification type that matched the endpoint subscription. Issue lifecycle events include the public issue resource, its component and event, linked artifacts, and the selected issue-event report.
Issue delivery
issue_triggered, issue_resolved, issue_ignored, issue_updated, and issue_ongoing deliveries use this shape:
{
"id": "0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b0",
"type": "issue_triggered",
"apiVersion": "2026-09-01",
"createdAt": "2026-09-11T03:09:07.000Z",
"test": false,
"organization": { "id": "org_123" },
"project": {
"id": "0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b1",
"name": "Checkout"
},
"notification": {
"title": "Issue: Checkout latency",
"message": "Checkout latency increased in us-west-2."
},
"issue": {
"id": "0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b2",
"projectId": "0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b1",
"name": "Checkout latency",
"description": "Latency increased after the latest deployment.",
"status": "open",
"severity": "high",
"componentId": "0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b3",
"createdAt": "2026-09-11T03:08:00.000Z",
"resolvedAt": null,
"mutedAt": null,
"muteHitCount": 0,
"lastActivityAt": "2026-09-11T03:08:00.000Z",
"lastDeliveredAt": null,
"locked": false,
"redacted": false,
"url": "https://app.sazabi.com/projects/0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b1/issues/0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b2",
"component": {
"id": "0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b3",
"name": "Checkout API"
},
"event": {
"id": "0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b4",
"type": "created",
"actor": { "type": "agent", "id": null },
"note": null,
"createdAt": "2026-09-11T03:08:00.000Z"
},
"artifacts": [
{
"id": "0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b5",
"type": "image/png",
"title": "latency.png",
"url": "https://app.sazabi.com/projects/0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b1/artifacts/0192f2e8-7d2b-7b4d-a3f1-3c14a8c8f8b5",
"contentType": "image/png",
"sizeBytes": 48213,
"createdAt": "2026-09-11T03:08:01.000Z"
}
],
"report": {
"format": "sazabi-mdx",
"mdx": "## Summary\nCheckout latency increased after the deployment.",
"text": "Summary Checkout latency increased after the deployment."
},
"rootCause": "The checkout query lost its index.",
"summary": "Latency increased after the latest deployment.",
"agentPrompt": "You are continuing an investigation that Sazabi (https://sazabi.com) already started.\n..."
}
}On issue_triggered, issue.agentPrompt carries the issue's agent prompt (the GET /v1/issues/{issueId}/agent-prompt text) for your own coding agent; it is null on other events.
On issue_updated, issue.event is the change itself (type updated) and notification.message says what changed: the severity went up, the issue came back after it was resolved, or it now affects another component.
On issue_ongoing, a reminder that the issue is still open, the envelope adds ongoing: the reminder's step (0 to 6 are 1, 2, 3, 7, 14, 21 and 28 days after the issue opened, 7 and later are 2, 3, 4… months after), openedAt (when the issue was created or last reopened), and openFor (how long it has been open, such as "3 days"). issue.event is the issue's newest event, since a reminder records none.
The report is the issue event's MDX document. It is redacted for common credential assignments and bounded to 80,000 UTF-8 bytes. If the report is truncated, report.reportTruncated is true. Artifact metadata is inline; use the artifact URL or GET /v1/artifacts/{artifactId}/download for content.
Signatures
Each request includes X-Sazabi-Webhook-Id, X-Sazabi-Delivery-Id, X-Sazabi-Event, and X-Sazabi-Signature. The signature value is t=<timestamp>,v1=<hex digest>; verify the HMAC-SHA256 digest over <timestamp>.<raw request body> with the endpoint signing secret before parsing JSON.