DebugBundle
API

Webhooks API

Create, update, delete, and test webhooks via the DebugBundle REST API.

All webhook endpoints require member token authentication via the Authorization header.

List Webhooks

GET /v1/webhooks?project_id={projectId}
curl https://api.debugbundle.com/v1/webhooks?project_id=proj_01HXYZ... \
  -H "Authorization: Bearer dbundle_member_a1b2c3d4..."

Query Parameters:

ParameterTypeDefaultDescription
project_idstringRequired. Project UUID.
limitnumber50Max results (1–100).

Response (200):

{
  "webhooks": [
    {
      "webhook_id": "wh_01HABC...",
      "project_id": "proj_01HXYZ...",
      "url": "https://myapp.com/webhooks/debugbundle",
      "events": ["bundle.created", "bundle.resolved"],
      "filters": {
        "environment": ["production"],
        "service": [],
        "severity_min": null,
        "bundle_type": []
      },
      "is_enabled": true,
      "created_at": "2026-03-20T10:00:00Z",
      "updated_at": "2026-03-20T10:00:00Z"
    }
  ]
}

Create Webhook

POST /v1/webhooks
curl -X POST https://api.debugbundle.com/v1/webhooks \
  -H "Authorization: Bearer dbundle_member_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "proj_01HXYZ...",
    "url": "https://myapp.com/webhooks/debugbundle",
    "events": ["bundle.created", "bundle.resolved", "incident.spike_detected"],
    "filters": {
      "environment": ["production"],
      "severity_min": "high"
    },
    "is_enabled": true
  }'

Request Body:

FieldTypeRequiredDescription
project_idstringYesProject UUID.
urlstringYesHTTPS endpoint URL.
eventsstring[]YesEvent types to subscribe to.
filtersobjectNoDelivery filters (see below).
is_enabledbooleanNoDefault: true.

Response (201):

{
  "webhook": {
    "webhook_id": "wh_01HDEF...",
    "project_id": "proj_01HXYZ...",
    "url": "https://myapp.com/webhooks/debugbundle",
    "signing_secret": "whsec_a1b2c3d4e5f6...",
    "events": ["bundle.created", "bundle.resolved", "incident.spike_detected"],
    "filters": {
      "environment": ["production"],
      "severity_min": "high"
    },
    "is_enabled": true
  }
}

The signing_secret is returned only once at creation. Copy it immediately for HMAC-SHA256 signature verification. See Webhooks for verification code examples.

Get Webhook

GET /v1/webhooks/{id}
curl https://api.debugbundle.com/v1/webhooks/wh_01HDEF... \
  -H "Authorization: Bearer dbundle_member_a1b2c3d4..."

Response (200): Single webhook object (same structure as list items).

Update Webhook

PATCH /v1/webhooks/{id}
curl -X PATCH https://api.debugbundle.com/v1/webhooks/wh_01HDEF... \
  -H "Authorization: Bearer dbundle_member_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{
    "events": ["bundle.created", "bundle.resolved", "bundle.reopened"],
    "filters": {
      "severity_min": "medium"
    }
  }'

Partial update — only the specified fields are changed. Omitted fields remain unchanged.

Response (200): Updated webhook object.

Delete Webhook

DELETE /v1/webhooks/{id}
curl -X DELETE https://api.debugbundle.com/v1/webhooks/wh_01HDEF... \
  -H "Authorization: Bearer dbundle_member_a1b2c3d4..."

Response (204): No content.

Test Webhook

Send a synthetic signed delivery to verify your endpoint:

POST /v1/webhooks/{id}/test
curl -X POST https://api.debugbundle.com/v1/webhooks/wh_01HDEF.../test \
  -H "Authorization: Bearer dbundle_member_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{ "event_type": "verification.passed" }'

Request Body:

FieldTypeDefaultDescription
event_typestringverification.passedverification.passed or verification.failed.

Response (202): Delivery queued.

List Deliveries

GET /v1/webhooks/{id}/deliveries
curl https://api.debugbundle.com/v1/webhooks/wh_01HDEF.../deliveries?limit=10 \
  -H "Authorization: Bearer dbundle_member_a1b2c3d4..."

Query Parameters:

ParameterTypeDefaultDescription
limitnumber20Max results (1–100).

Response (200):

{
  "deliveries": [
    {
      "delivery_id": "del_01HGHI...",
      "webhook_id": "wh_01HDEF...",
      "event_type": "bundle.created",
      "status": "delivered",
      "attempt_count": 1,
      "created_at": "2026-03-24T10:30:00Z",
      "delivered_at": "2026-03-24T10:30:01Z"
    }
  ]
}

Retry Delivery

POST /v1/webhooks/{id}/deliveries/{deliveryId}/retry
curl -X POST https://api.debugbundle.com/v1/webhooks/wh_01HDEF.../deliveries/del_01HJKL.../retry \
  -H "Authorization: Bearer dbundle_member_a1b2c3d4..."

Resets a failed or disabled delivery to retrying status.

Response (200): Updated delivery object.

Webhook Filters

Filters narrow which events trigger deliveries:

FilterTypeDescription
environmentstring[]Only deliver for these environments.
servicestring[]Only deliver for these services.
severity_minstringMinimum severity: low, medium, high, critical.
bundle_typestring[]Only deliver for these bundle types: failure, improvement.
verificationbooleanWhether signature verification is required.

Event Types

EventTrigger
bundle.createdNew debug bundle generated.
bundle.updatedExisting bundle updated with new data.
bundle.resolvedIncident marked as resolved.
bundle.reopenedPreviously resolved incident regressed.
improvement_bundle.createdImprovement bundle generated.
incident.spike_detectedUnusual spike in incident occurrences.
verification.passedWebhook verification test succeeded.
verification.failedWebhook verification test failed.

Next Steps

On this page