BlameTrail
IntegrationsWebhooks

Event Types

Complete reference for all BlameTrail webhook event types, envelope format, and payload schemas.

All BlameTrail webhook deliveries follow a standard envelope format. Each event type includes specific data relevant to the event.

Envelope format

Every webhook delivery uses this top-level structure:

{
  "id": "evt_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "incident.opened",
  "version": "1",
  "created_at": "2026-03-21T14:30:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": { }
}
FieldTypeDescription
idstringUnique event ID (format: evt_uuid)
typestringThe event type (see table below)
versionstringEnvelope schema version (currently "1")
created_atstringISO 8601 timestamp of when the event was created
tenant_idstringThe tenant (organization) that owns the resource
dataobjectEvent-specific payload (varies by type)

Event types reference

TypeDescription
incident.openedA new incident has been created
incident.acknowledgedAn incident has been acknowledged
incident.resolvedAn incident has been resolved
deploy.ingestedA new deploy has been recorded
fix_proposal.generatedA fix proposal has been generated and is ready for review
fix_proposal.appliedA fix proposal has been approved and a PR is being created
fix_proposal.rejectedA fix proposal has been rejected
test.pingTest event for endpoint verification

incident.opened

Fired when a new incident is created, either automatically from monitor failures or manually.

{
  "id": "evt_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "incident.opened",
  "version": "1",
  "created_at": "2026-03-21T14:30:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": {
    "incident_id": "inc_1234567890",
    "title": "payments-api health check failing",
    "severity": "critical",
    "type": "availability",
    "status": "open",
    "started_at": "2026-03-21T14:28:00.000Z",
    "service": {
      "id": "svc_abcdef",
      "name": "Payments API"
    },
    "monitor": {
      "id": "mon_123456",
      "name": "Health Check",
      "url": "https://api.example.com/health"
    }
  }
}

Data fields

FieldTypeDescription
incident_idstringUnique incident identifier
titlestringIncident title
severitystringcritical, error, warning, or info
typestringavailability or latency
statusstringopen
started_atstringISO 8601 timestamp of the first failure
serviceobject{ id, name } of the affected service
monitorobject or null{ id, name, url } of the triggering monitor, or null for manually created incidents

incident.acknowledged

Fired when a team member acknowledges an incident.

{
  "id": "evt_b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "type": "incident.acknowledged",
  "version": "1",
  "created_at": "2026-03-21T14:35:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": {
    "incident_id": "inc_1234567890",
    "title": "payments-api health check failing",
    "severity": "critical",
    "type": "availability",
    "status": "acknowledged",
    "started_at": "2026-03-21T14:28:00.000Z",
    "service": {
      "id": "svc_abcdef",
      "name": "Payments API"
    },
    "monitor": {
      "id": "mon_123456",
      "name": "Health Check",
      "url": "https://api.example.com/health"
    }
  }
}

Data fields

Same as incident.opened, with status set to "acknowledged".


incident.resolved

Fired when an incident is resolved, either automatically (3 consecutive passing checks) or manually.

{
  "id": "evt_c3d4e5f6-a7b8-9012-cdef-123456789012",
  "type": "incident.resolved",
  "version": "1",
  "created_at": "2026-03-21T15:00:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": {
    "incident_id": "inc_1234567890",
    "title": "payments-api health check failing",
    "severity": "critical",
    "type": "availability",
    "status": "resolved",
    "started_at": "2026-03-21T14:28:00.000Z",
    "resolved_at": "2026-03-21T14:58:00.000Z",
    "duration_seconds": 1800,
    "service": {
      "id": "svc_abcdef",
      "name": "Payments API"
    },
    "monitor": {
      "id": "mon_123456",
      "name": "Health Check",
      "url": "https://api.example.com/health"
    }
  }
}

Data fields

All fields from incident.opened, plus:

FieldTypeDescription
resolved_atstringISO 8601 timestamp of resolution
duration_secondsnumberTotal incident duration in seconds

deploy.ingested

Fired when a new deploy is recorded via the deploy ingest endpoint.

{
  "id": "evt_d4e5f6a7-b8c9-0123-defa-234567890123",
  "type": "deploy.ingested",
  "version": "1",
  "created_at": "2026-03-21T16:00:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": {
    "deploy_id": "dep_abcdef123456",
    "commit_sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
    "branch": "main",
    "environment": "production",
    "deployed_by": "jane"
  }
}

Data fields

FieldTypeDescription
deploy_idstringUnique deploy identifier
commit_shastringThe Git commit SHA
branchstring or nullThe deployed branch
environmentstring or nullTarget environment
deployed_bystring or nullWho triggered the deploy

fix_proposal.generated

Fired when a fix proposal (revert or AI fix) has been generated and is ready for review.

{
  "id": "evt_f6a7b8c9-d0e1-2345-abcd-456789012345",
  "type": "fix_proposal.generated",
  "version": "1",
  "created_at": "2026-04-05T10:00:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": {
    "proposal_id": "fp_abcdef123456",
    "incident_id": "inc_1234567890",
    "fix_type": "ai_fix",
    "status": "ready",
    "confidence_score": 78,
    "risk_assessment": "medium",
    "summary": "Fix null pointer in payment handler by adding null check"
  }
}

Data fields

FieldTypeDescription
proposal_idstringUnique fix proposal identifier
incident_idstringThe incident this fix targets
fix_typestringrevert or ai_fix
statusstringready for AI fixes, pr_created for reverts (which skip approval)
confidence_scorenumber or nullAI confidence percentage (null for reverts)
risk_assessmentstring or nulllow, medium, or high
summarystringBrief description of the proposed fix

fix_proposal.applied

Fired when a fix proposal is approved and a PR creation job is enqueued.

{
  "id": "evt_a7b8c9d0-e1f2-3456-bcde-567890123456",
  "type": "fix_proposal.applied",
  "version": "1",
  "created_at": "2026-04-05T10:05:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": {
    "proposal_id": "fp_abcdef123456",
    "incident_id": "inc_1234567890",
    "fix_type": "ai_fix"
  }
}

fix_proposal.rejected

Fired when a fix proposal is rejected by a team member.

{
  "id": "evt_b8c9d0e1-f2a3-4567-cdef-678901234567",
  "type": "fix_proposal.rejected",
  "version": "1",
  "created_at": "2026-04-05T10:05:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": {
    "proposal_id": "fp_abcdef123456",
    "incident_id": "inc_1234567890",
    "fix_type": "ai_fix",
    "reason": "Fix does not address the root cause"
  }
}

Data fields

FieldTypeDescription
proposal_idstringUnique fix proposal identifier
incident_idstringThe incident this fix targeted
fix_typestringrevert or ai_fix
reasonstring or nullOptional rejection reason provided by the reviewer

test.ping

Sent when you click Send Test on a webhook endpoint. Use this to verify your endpoint is reachable and processing signatures correctly.

{
  "id": "evt_e5f6a7b8-c9d0-1234-efab-345678901234",
  "type": "test.ping",
  "version": "1",
  "created_at": "2026-03-21T16:30:00.000Z",
  "tenant_id": "tn_abcdef1234567890",
  "data": {
    "message": "Webhook endpoint test",
    "endpoint_id": "wh_abcdef123456"
  }
}

Data fields

FieldTypeDescription
messagestringA human-readable test message
endpoint_idstringThe webhook endpoint ID being tested

On this page