Case.dev exposes the following customer-facing events through webhook endpoints. This page is generated from the router event catalog and typed payload contracts so it stays aligned with the API.
Stable events keep their event name and payload shape frozen except for additive fields. Beta
events may change during their early access window.
Generated from apps/router/server/utils/webhooks/catalog.ts.
| Event | Stability | Scope | Resource | Description |
|---|
vault.upload.initiated | stable | vault | vault | A vault object upload was initiated. |
vault.upload.completed | stable | vault | vault | A vault object upload finished successfully. |
vault.upload.failed | stable | vault | vault | A vault object upload failed. |
vault.ingest.started | stable | vault | vault | Vault object ingest started. |
vault.ingest.completed | stable | vault | vault | Vault object ingest finished successfully. |
vault.ingest.failed | stable | vault | vault | Vault object ingest failed. |
ocr.job.created | stable | vision_ocr | - | An OCR job was enqueued. |
ocr.job.completed | stable | vision_ocr | - | An OCR job finished successfully. |
ocr.job.failed | stable | vision_ocr | - | An OCR job failed. |
voice.transcription.created | stable | transcription | - | A transcription job was created. |
voice.transcription.reused | stable | transcription | - | A completed transcription job was reused from cache. |
voice.transcription.completed | stable | transcription | - | A transcription job finished successfully. |
voice.transcription.failed | stable | transcription | - | A transcription job failed. |
voice.transcription.deleted | stable | transcription | - | A transcription job was deleted. |
agent.run.created | beta | agent | - | An agent run was created. |
agent.run.started | beta | agent | - | An agent run began executing. |
agent.run.completed | beta | agent | - | An agent run finished successfully. |
agent.run.failed | beta | agent | - | An agent run failed. |
agent.run.cancelled | beta | agent | - | An agent run was cancelled. |
matter.created | beta | legal | matter | A matter was created. |
matter.updated | beta | legal | matter | A matter was updated. |
work_item.execution.completed | beta | legal | matter | A matter work item finished execution. |
work_item.execution.failed | beta | legal | matter | A matter work item execution failed. |
billing.charge.succeeded | stable | webhooks | - | A billing charge succeeded. |
billing.charge.failed | stable | webhooks | - | A billing charge failed. |
balance.changed | stable | webhooks | - | The organization credit balance changed. |
compute.run.completed | stable | compute | - | A compute function run completed successfully. |
compute.run.failed | stable | compute | - | A compute function run failed. |
deployment.succeeded | stable | webhooks | - | A deployment succeeded. |
deployment.failed | stable | webhooks | - | A deployment failed. |
webhook.endpoint.auto_disabled | stable | webhooks | - | A webhook endpoint was automatically disabled after too many consecutive delivery failures. Subscribe to this to be notified when a downstream customer endpoint starts failing. |
vault.upload.initiated
A vault object upload was initiated.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vault |
| Resource scope | vault |
Payload
| Field | Type | Required | Description |
|---|
vaultId | string | Yes | The vault this event pertains to. |
objectId | string | Yes | The object within the vault. |
filename | string | Yes | Original filename provided by the uploader. |
mimeType | string | No | MIME type of the uploaded file, if detected. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "vault.upload.initiated",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"vaultId": "vault_123",
"objectId": "object_123",
"filename": "filename_value",
"mimeType": "mimeType_value"
}
}
vault.upload.completed
A vault object upload finished successfully.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vault |
| Resource scope | vault |
Payload
| Field | Type | Required | Description |
|---|
vaultId | string | Yes | The vault this event pertains to. |
objectId | string | Yes | The object within the vault. |
filename | string | Yes | - |
mimeType | string | Yes | - |
sizeBytes | number | Yes | Size of the uploaded file in bytes. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "vault.upload.completed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"vaultId": "vault_123",
"objectId": "object_123",
"filename": "filename_value",
"mimeType": "mimeType_value",
"sizeBytes": 42
}
}
vault.upload.failed
A vault object upload failed.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vault |
| Resource scope | vault |
Payload
| Field | Type | Required | Description |
|---|
vaultId | string | Yes | The vault this event pertains to. |
objectId | string | Yes | The object within the vault. |
error | string | Yes | Human-readable error description. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "vault.upload.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"vaultId": "vault_123",
"objectId": "object_123",
"error": "Processing failed"
}
}
vault.ingest.started
Vault object ingest started.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vault |
| Resource scope | vault |
Payload
| Field | Type | Required | Description |
|---|
vaultId | string | Yes | The vault this event pertains to. |
objectId | string | Yes | The object within the vault. |
stage | string | No | Pipeline stage that began (e.g. ‘extraction’, ‘chunking’). |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "vault.ingest.started",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"vaultId": "vault_123",
"objectId": "object_123",
"stage": "stage_value"
}
}
vault.ingest.completed
Vault object ingest finished successfully.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vault |
| Resource scope | vault |
Payload
| Field | Type | Required | Description |
|---|
vaultId | string | Yes | The vault this event pertains to. |
objectId | string | Yes | The object within the vault. |
durationMs | number | Yes | Total ingest duration in milliseconds. |
chunkCount | number | No | Number of chunks produced. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "vault.ingest.completed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"vaultId": "vault_123",
"objectId": "object_123",
"durationMs": 1284,
"chunkCount": 42
}
}
vault.ingest.failed
Vault object ingest failed.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vault |
| Resource scope | vault |
Payload
| Field | Type | Required | Description |
|---|
vaultId | string | Yes | The vault this event pertains to. |
objectId | string | Yes | The object within the vault. |
error | string | Yes | Human-readable error description. |
stage | string | No | Pipeline stage that failed, if applicable. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "vault.ingest.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"vaultId": "vault_123",
"objectId": "object_123",
"error": "Processing failed",
"stage": "stage_value"
}
}
ocr.job.created
An OCR job was enqueued.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vision_ocr |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
jobId | string | Yes | OCR job identifier. |
objectId | string | Yes | The vault object being processed. |
vaultId | string | Yes | - |
pageCount | number | No | Number of pages queued for OCR. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "ocr.job.created",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"jobId": "job_123",
"objectId": "object_123",
"vaultId": "vault_123",
"pageCount": 42
}
}
ocr.job.completed
An OCR job finished successfully.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vision_ocr |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
jobId | string | Yes | OCR job identifier. |
objectId | string | Yes | The vault object being processed. |
vaultId | string | Yes | - |
durationMs | number | Yes | Processing duration in milliseconds. |
pageCount | number | Yes | Number of pages processed. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "ocr.job.completed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"jobId": "job_123",
"objectId": "object_123",
"vaultId": "vault_123",
"durationMs": 1284,
"pageCount": 42
}
}
ocr.job.failed
An OCR job failed.
| Property | Value |
|---|
| Stability | stable |
| Required scope | vision_ocr |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
jobId | string | Yes | OCR job identifier. |
objectId | string | Yes | The vault object being processed. |
vaultId | string | Yes | - |
error | string | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "ocr.job.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"jobId": "job_123",
"objectId": "object_123",
"vaultId": "vault_123",
"error": "Processing failed"
}
}
voice.transcription.created
A transcription job was created.
| Property | Value |
|---|
| Stability | stable |
| Required scope | transcription |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
jobId | string | Yes | - |
vaultId | string | No | Vault that owns the source object, when the transcription came from a vault workflow. |
assemblyaiId | string | No | AssemblyAI transcript identifier. |
objectId | string | No | Source vault object for vault-backed jobs. |
format | string | No | Requested transcript output format. |
mode | 'vault' | 'direct' | Yes | Transcription mode used by the request. |
status | string | No | Provider status returned at job creation time. |
speakerLabels | boolean | No | - |
autoHighlights | boolean | No | - |
contentSafety | boolean | No | - |
languageDetection | boolean | No | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "voice.transcription.created",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"jobId": "job_123",
"vaultId": "vault_123",
"assemblyaiId": "assemblyai_123",
"objectId": "object_123",
"format": "format_value",
"mode": "vault",
"status": "active",
"speakerLabels": true,
"autoHighlights": true,
"contentSafety": true,
"languageDetection": true
}
}
voice.transcription.reused
A completed transcription job was reused from cache.
| Property | Value |
|---|
| Stability | stable |
| Required scope | transcription |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
jobId | string | Yes | - |
vaultId | string | No | Vault that owns the source object, when the transcription came from a vault workflow. |
assemblyaiId | string | No | AssemblyAI transcript identifier. |
objectId | string | Yes | - |
format | string | No | - |
mode | 'vault' | Yes | - |
from_cache | true | Yes | - |
options_hash | string | No | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "voice.transcription.reused",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"jobId": "job_123",
"vaultId": "vault_123",
"assemblyaiId": "assemblyai_123",
"objectId": "object_123",
"format": "format_value",
"mode": "vault",
"from_cache": true,
"options_hash": "options_hash_value"
}
}
voice.transcription.completed
A transcription job finished successfully.
| Property | Value |
|---|
| Stability | stable |
| Required scope | transcription |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
jobId | string | Yes | - |
vaultId | string | No | Vault that owns the source object, when the transcription came from a vault workflow. |
assemblyaiId | string | No | AssemblyAI transcript identifier. |
sourceObjectId | string | Yes | - |
resultObjectId | string | Yes | - |
audioDurationSeconds | number | No | - |
wordCount | number | Yes | - |
confidence | number | No | - |
textLength | number | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "voice.transcription.completed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"jobId": "job_123",
"vaultId": "vault_123",
"assemblyaiId": "assemblyai_123",
"sourceObjectId": "sourceObject_123",
"resultObjectId": "resultObject_123",
"audioDurationSeconds": 42,
"wordCount": 42,
"confidence": 42,
"textLength": 42
}
}
voice.transcription.failed
A transcription job failed.
| Property | Value |
|---|
| Stability | stable |
| Required scope | transcription |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
jobId | string | Yes | - |
vaultId | string | No | Vault that owns the source object, when the transcription came from a vault workflow. |
assemblyaiId | string | No | AssemblyAI transcript identifier. |
sourceObjectId | string | No | - |
error | string | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "voice.transcription.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"jobId": "job_123",
"vaultId": "vault_123",
"assemblyaiId": "assemblyai_123",
"sourceObjectId": "sourceObject_123",
"error": "Processing failed"
}
}
voice.transcription.deleted
A transcription job was deleted.
| Property | Value |
|---|
| Stability | stable |
| Required scope | transcription |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
jobId | string | Yes | - |
vaultId | string | No | Vault that owns the source object, when the transcription came from a vault workflow. |
assemblyaiId | string | No | AssemblyAI transcript identifier. |
transcriptId | string | Yes | - |
mode | 'vault' | 'direct' | Yes | - |
providerDeleted | boolean | Yes | - |
providerAlreadyDeleted | boolean | Yes | - |
providerDeleteFailed | boolean | Yes | - |
providerErrorStatusCode | number | No | - |
resultObjectDeleted | boolean | Yes | - |
localRecordDeleted | boolean | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "voice.transcription.deleted",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"jobId": "job_123",
"vaultId": "vault_123",
"assemblyaiId": "assemblyai_123",
"transcriptId": "transcript_123",
"mode": "vault",
"providerDeleted": true,
"providerAlreadyDeleted": true,
"providerDeleteFailed": true,
"providerErrorStatusCode": 42,
"resultObjectDeleted": true,
"localRecordDeleted": true
}
}
agent.run.created
An agent run was created.
| Property | Value |
|---|
| Stability | beta |
| Required scope | agent |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
runId | string | Yes | - |
agentId | string | No | The skill or agent definition that was invoked. |
source | string | No | API surface or workflow source that emitted the event. |
version | string | No | - |
input | object | No | Input prompt or parameters, if safe to expose. |
promptLength | number | No | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "agent.run.created",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"runId": "run_123",
"agentId": "agent_123",
"source": "source_value",
"version": "version_value",
"input": {},
"promptLength": 42
}
}
agent.run.started
An agent run began executing.
| Property | Value |
|---|
| Stability | beta |
| Required scope | agent |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
runId | string | Yes | - |
agentId | string | No | The skill or agent definition that was invoked. |
source | string | No | API surface or workflow source that emitted the event. |
version | string | No | - |
workflowId | string | No | - |
adhoc | boolean | No | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "agent.run.started",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"runId": "run_123",
"agentId": "agent_123",
"source": "source_value",
"version": "version_value",
"workflowId": "workflow_123",
"adhoc": true
}
}
agent.run.completed
An agent run finished successfully.
| Property | Value |
|---|
| Stability | beta |
| Required scope | agent |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
runId | string | Yes | - |
agentId | string | No | The skill or agent definition that was invoked. |
source | string | No | API surface or workflow source that emitted the event. |
version | string | No | - |
durationMs | number | Yes | - |
usage | {inputTokens: number; outputTokens: number} | No | Token usage summary. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "agent.run.completed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"runId": "run_123",
"agentId": "agent_123",
"source": "source_value",
"version": "version_value",
"durationMs": 1284,
"usage": { "inputTokens": 123, "outputTokens": 456 }
}
}
agent.run.failed
An agent run failed.
| Property | Value |
|---|
| Stability | beta |
| Required scope | agent |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
runId | string | Yes | - |
agentId | string | No | The skill or agent definition that was invoked. |
source | string | No | API surface or workflow source that emitted the event. |
version | string | No | - |
adhoc | boolean | No | - |
runtime | string | No | - |
error | string | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "agent.run.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"runId": "run_123",
"agentId": "agent_123",
"source": "source_value",
"version": "version_value",
"adhoc": true,
"runtime": "runtime_value",
"error": "Processing failed"
}
}
agent.run.cancelled
An agent run was cancelled.
| Property | Value |
|---|
| Stability | beta |
| Required scope | agent |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
runId | string | Yes | - |
agentId | string | No | The skill or agent definition that was invoked. |
source | string | No | API surface or workflow source that emitted the event. |
version | string | No | - |
reason | string | No | Cancellation reason, if one was provided. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "agent.run.cancelled",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"runId": "run_123",
"agentId": "agent_123",
"source": "source_value",
"version": "version_value",
"reason": "reason_value"
}
}
matter.created
A matter was created.
| Property | Value |
|---|
| Stability | beta |
| Required scope | legal |
| Resource scope | matter |
Payload
| Field | Type | Required | Description |
|---|
matterId | string | Yes | - |
title | string | No | Human-readable matter title. |
status | string | Yes | Matter status at creation time. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "matter.created",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"matterId": "matter_123",
"title": "title_value",
"status": "active"
}
}
matter.updated
A matter was updated.
| Property | Value |
|---|
| Stability | beta |
| Required scope | legal |
| Resource scope | matter |
Payload
| Field | Type | Required | Description |
|---|
matterId | string | Yes | - |
object | object | Yes | Current state of the matter. |
previous_attributes | object | No | Only-changed fields with their previous values. Present when the emitter supports change tracking. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "matter.updated",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"matterId": "matter_123",
"object": {},
"previous_attributes": {}
}
}
work_item.execution.completed
A matter work item finished execution.
| Property | Value |
|---|
| Stability | beta |
| Required scope | legal |
| Resource scope | matter |
Payload
| Field | Type | Required | Description |
|---|
matterId | string | Yes | - |
workItemId | string | Yes | - |
durationMs | number | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "work_item.execution.completed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"matterId": "matter_123",
"workItemId": "workItem_123",
"durationMs": 1284
}
}
work_item.execution.failed
A matter work item execution failed.
| Property | Value |
|---|
| Stability | beta |
| Required scope | legal |
| Resource scope | matter |
Payload
| Field | Type | Required | Description |
|---|
matterId | string | Yes | - |
workItemId | string | Yes | - |
error | string | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "work_item.execution.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"matterId": "matter_123",
"workItemId": "workItem_123",
"error": "Processing failed"
}
}
billing.charge.succeeded
A billing charge succeeded.
| Property | Value |
|---|
| Stability | stable |
| Required scope | webhooks |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
chargeId | string | Yes | Stripe charge or invoice ID. |
amountCents | number | Yes | Amount in cents. |
currency | string | Yes | ISO 4217 currency code. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "billing.charge.succeeded",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"chargeId": "charge_123",
"amountCents": 2500,
"currency": "usd"
}
}
billing.charge.failed
A billing charge failed.
| Property | Value |
|---|
| Stability | stable |
| Required scope | webhooks |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
chargeId | string | Yes | - |
amountCents | number | Yes | - |
currency | string | Yes | - |
error | string | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "billing.charge.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"chargeId": "charge_123",
"amountCents": 2500,
"currency": "usd",
"error": "Processing failed"
}
}
balance.changed
The organization credit balance changed.
| Property | Value |
|---|
| Stability | stable |
| Required scope | webhooks |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
balanceCents | number | Yes | New credit balance in cents. |
deltaCents | number | Yes | Change amount (positive = credit added, negative = deducted). |
reason | string | No | Reason for the change (e.g. ‘charge’, ‘top_up’, ‘promo’). |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "balance.changed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"balanceCents": 2500,
"deltaCents": 2500,
"reason": "reason_value"
}
}
compute.run.completed
A compute function run completed successfully.
| Property | Value |
|---|
| Stability | stable |
| Required scope | compute |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
runId | string | Yes | - |
functionId | string | Yes | - |
durationMs | number | Yes | - |
exitCode | number | No | Exit code of the compute function. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "compute.run.completed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"runId": "run_123",
"functionId": "function_123",
"durationMs": 1284,
"exitCode": 42
}
}
compute.run.failed
A compute function run failed.
| Property | Value |
|---|
| Stability | stable |
| Required scope | compute |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
runId | string | Yes | - |
functionId | string | Yes | - |
error | string | Yes | - |
exitCode | number | No | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "compute.run.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"runId": "run_123",
"functionId": "function_123",
"error": "Processing failed",
"exitCode": 42
}
}
deployment.succeeded
A deployment succeeded.
| Property | Value |
|---|
| Stability | stable |
| Required scope | webhooks |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
deploymentId | string | Yes | - |
appName | string | No | Application or project name. |
url | string | No | URL of the deployed application. |
durationMs | number | No | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "deployment.succeeded",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"deploymentId": "deployment_123",
"appName": "appName_value",
"url": "url_value",
"durationMs": 1284
}
}
deployment.failed
A deployment failed.
| Property | Value |
|---|
| Stability | stable |
| Required scope | webhooks |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
deploymentId | string | Yes | - |
appName | string | No | Application or project name. |
error | string | Yes | - |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "deployment.failed",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"deploymentId": "deployment_123",
"appName": "appName_value",
"error": "Processing failed"
}
}
webhook.endpoint.auto_disabled
A webhook endpoint was automatically disabled after too many consecutive delivery failures. Subscribe to this to be notified when a downstream customer endpoint starts failing.
| Property | Value |
|---|
| Stability | stable |
| Required scope | webhooks |
| Resource scope | None |
Payload
| Field | Type | Required | Description |
|---|
endpointId | string | Yes | The endpoint that was disabled. |
url | string | Yes | URL of the disabled endpoint. |
consecutiveFailures | number | Yes | Number of consecutive failures that triggered the disable. |
lastFailureAt | string | Yes | Timestamp of the last failed delivery attempt. |
Example
{
"id": "evt_01HV8ZK8M7Q9YJ6P5E3P2R1A0B",
"type": "webhook.endpoint.auto_disabled",
"occurred_at": "2026-04-24T15:12:09.481Z",
"data": {
"endpointId": "endpoint_123",
"url": "url_value",
"consecutiveFailures": 42,
"lastFailureAt": "lastFailureAt_value"
}
}