Skip to main content

Overview

CauseFlow’s internal EventBus publishes 20 event types across seven domains. Real-time delivery to your application uses Server-Sent Events (SSE) via GET /v1/notifications/stream. Programmatic webhook subscription (registering an HTTPS endpoint to receive these events) is on the roadmap — not yet shipped.
Real-time delivery today: connect to GET /v1/notifications/stream for live event delivery. No HMAC signature is applied to SSE frames — authentication uses your JWT on the stream endpoint.

Request headers

Authorization
string
required
JWT Bearer token. Format: Bearer <your-jwt>.

Event catalog

Event nameDomainWhen emitted
tenant.createdTenantA new tenant is provisioned
tenant.updatedTenantTenant settings or plan are changed
user.createdUserA new user joins a tenant
user.updatedUserA user’s role or profile is updated
user.deletedUserA user is removed from a tenant
incident.createdIngestionA new incident is opened (automated or manual)
incident.status_changedIngestionAn incident moves to a new lifecycle status
investigation.progressInvestigationAn AI agent reports a finding
investigation.completedInvestigationThe full investigation pipeline finishes
investigation.known_solution_foundInvestigationA matching runbook or prior incident is found
remediation.proposedRemediationAI proposes an automated remediation plan
remediation.approvedRemediationA team member approves a remediation
remediation.rejectedRemediationA team member rejects a remediation
remediation.executedRemediationA remediation action completes execution
integration.connectedIntegrationA new integration is activated
integration.disconnectedIntegrationAn existing integration is deactivated
trigger.createdIntegrationA new automation trigger is configured
trigger.deletedIntegrationAn automation trigger is removed
trigger.event_receivedIntegrationA registered trigger fires on an incoming event
knowledge.pattern_extractedCode intelligenceA new failure pattern is extracted from a resolved incident
Total: 20 events.

Payload samples

tenant.created

{
  "event": "tenant.created",
  "timestamp": "2024-04-01T10:00:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "tenantId": "ten_EXAMPLE_ABC123",
    "name": "Acme Corp",
    "plan": "pro",
    "createdAt": "2024-04-01T10:00:00Z"
  }
}

incident.created

{
  "event": "incident.created",
  "timestamp": "2024-04-01T14:30:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "incidentId": "inc_EXAMPLE_01JX",
    "title": "Checkout service returning 503 for EU customers",
    "severity": "critical",
    "status": "open",
    "source": "automated"
  }
}

incident.status_changed

{
  "event": "incident.status_changed",
  "timestamp": "2024-04-01T14:35:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "incidentId": "inc_EXAMPLE_01JX",
    "previousStatus": "investigating",
    "newStatus": "awaiting_approval"
  }
}

investigation.progress

{
  "event": "investigation.progress",
  "timestamp": "2024-04-01T14:32:10Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "incidentId": "inc_EXAMPLE_01JX",
    "message": "Found 10,000 errors in the last 30 minutes across 3 services",
    "agentName": "log analysis",
    "stepIndex": 2,
    "totalSteps": 6
  }
}

investigation.completed

{
  "event": "investigation.completed",
  "timestamp": "2024-04-01T14:40:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "incidentId": "inc_EXAMPLE_01JX",
    "rootCause": "Unindexed query introduced in deploy d9f3a21 causing full table scans",
    "confidence": 0.94,
    "recommendedActions": [
      "Add composite index on (tenant_id, created_at)",
      "Roll back deploy d9f3a21 if index migration cannot complete within SLA"
    ]
  }
}

investigation.known_solution_found

{
  "event": "investigation.known_solution_found",
  "timestamp": "2024-04-01T14:31:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "incidentId": "inc_EXAMPLE_01JX",
    "matchedPatternId": "ptn_01HX9VTPQR3KF8MZWBYD5N6JCE",
    "matchedTitle": "Payment processor pool exhaustion",
    "confidence": 0.87,
    "runbookUrl": "https://wiki.example.com/runbooks/payment-pool"
  }
}

remediation.proposed

{
  "event": "remediation.proposed",
  "timestamp": "2024-04-01T14:35:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "incidentId": "inc_EXAMPLE_01JX",
    "remediationId": "rem_01HX9VTPQR3KF8MZWBYD5N6JCE",
    "title": "Scale payment processor connection pool from 50 to 150",
    "requiresApproval": true,
    "steps": ["Update ECS task definition", "Trigger rolling deploy"]
  }
}

remediation.approved

{
  "event": "remediation.approved",
  "timestamp": "2024-04-01T14:36:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "remediationId": "rem_01HX9VTPQR3KF8MZWBYD5N6JCE",
    "approvedBy": "user_01HX9VTPQR3KF8MZWBYD5N6JCE",
    "incidentId": "inc_EXAMPLE_01JX"
  }
}

remediation.executed

{
  "event": "remediation.executed",
  "timestamp": "2024-04-01T14:37:30Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "remediationId": "rem_01HX9VTPQR3KF8MZWBYD5N6JCE",
    "incidentId": "inc_EXAMPLE_01JX",
    "outcome": "success",
    "durationMs": 12400
  }
}

integration.connected

{
  "event": "integration.connected",
  "timestamp": "2024-04-01T09:00:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "integrationId": "int_01HX9VTPQR3KF8MZWBYD5N6JCE",
    "provider": "github",
    "connectedBy": "user_01HX9VTPQR3KF8MZWBYD5N6JCE"
  }
}

knowledge.pattern_extracted

{
  "event": "knowledge.pattern_extracted",
  "timestamp": "2024-04-01T15:00:00Z",
  "tenantId": "ten_EXAMPLE_ABC123",
  "data": {
    "patternId": "ptn_01HX9VTPQR3KF8MZWBYD5N6JCF",
    "incidentId": "inc_EXAMPLE_01JX",
    "summary": "Connection pool exhaustion under high throughput — scaling factor 3x resolves within 90s"
  }
}

Delivery contract

PropertyDetail
OrderingBest-effort. Events within the same incident are ordered by timestamp, but interleaving across incidents is not guaranteed
RetriesSSE reconnects are automatic (browser EventSource retries with backoff). Lost events since last id: are not replayed
HeartbeatA ping event is sent every 30 seconds to keep the connection alive through proxies and load balancers
AuthenticationJWT Bearer token on the GET /v1/notifications/stream connection — no per-event signing today

Consuming events via SSE

Connect to the stream endpoint and filter by event: name:
curl -N https://api.causeflow.ai/v1/notifications/stream \
  -H "Authorization: Bearer eyJhbGc..."

Programmatic webhook subscriptions (roadmap)

The ability to register an HTTPS endpoint to receive these events as HTTP POST payloads is planned but not yet shipped. When available, it will include HMAC-SHA256 request signing. For now, use the SSE stream.

SSE stream

Connect to real-time event delivery today

Webhook subscriptions (roadmap)

Planned programmatic subscription — current status