Incidents
Receive Grafana alerting webhooks
POST/v1/integrations/grafana/{configurationId}/{escalationPolicyId}/{sourceId}requires incidents:ingest
Accepts Grafana's webhook contact point payload with at most 20 alerts and no truncation, and applies the same per-fingerprint episode ordering as the Alertmanager integration. Requires both incidents:ingest and incidents:write. Keep sourceId stable for each Grafana instance. Body limit 256 KiB. See /docs/incident-grafana.
Requestcurl -X POST https://api.transmit.dev/v1/integrations/grafana/{configurationId}/{escalationPolicyId}/{sourceId} \
-H "Authorization: Bearer tr_v2_…" \
-H "Content-Type: application/json" \
-d '{
"version": "1",
"truncatedAlerts": 0,
"alerts": [
{
"status": "firing",
"fingerprint": "0011223344556677",
"startsAt": "2026-10-21T00:00:00Z",
"endsAt": "0001-01-01T00:00:00Z",
"labels": {
"alertname": "DatabaseDown",
"severity": "critical"
},
"annotations": {
"summary": "Database unavailable"
}
}
]
}'Parameters
| Name | In | Notes |
|---|---|---|
configurationId required | path | Routing resource UUID in the API key's workspace. |
escalationPolicyId required | path | Routing resource UUID in the API key's workspace. |
sourceId required | path | Stable UUID identifying one Grafana instance. |
Body
| Field | Type | Notes |
|---|---|---|
version | string | at most 16 characters |
truncatedAlerts | integer | 0–9007199254740991. defaults to 0 |
alerts required | object[] | at most 20 |
Responses
| Status | Meaning |
|---|---|
200 | Committed batch with source-ordering results |
401 | The API key is missing, malformed, expired or revoked |
403 | The API key lacks the incidents:ingest scope |
404 | Routing resources are outside this workspace |
413 | Body exceeds 256 KiB |
415 | Use application/json |
422 | Invalid, truncated or excessive batch, or invalid episode times |
Every response body is described in the OpenAPI spec, which this page is generated from.