DebugBundle
API

API

RESTful API for event ingestion, incident retrieval, webhook management, token management, and more. Authenticated via project tokens, member tokens, or browser sessions.

Base URL

https://api.debugbundle.com

Self-hosted deployments use your custom domain.

Authentication

The API uses three authentication methods, each scoped differently:

MethodHeader / MechanismScopeUse Case
Project tokenAuthorization: Bearer dbundle_proj_*Write-only ingestionSDKs sending events via POST /v1/events
Member tokenAuthorization: Bearer dbundle_mem_*Full read/manageCLI, API clients, MCP — incidents, webhooks, tokens, billing
Browser sessionCookie: debugbundle_session=*Full read/manageWeb dashboard (same permissions as member token)

Project tokens can only ingest events. They cannot read incidents, manage webhooks, or perform any other operation.

See Authentication for details.

Request Format

  • Content-Type: application/json
  • Character encoding: UTF-8
  • All request bodies are JSON objects validated with Zod at the boundary
  • Unknown fields are rejected (strict schemas)

Response Format

Success

{
  "incidents": [...],
  "next_cursor": "2025-01-15T10:30:00.000Z|inc_abc123"
}

Error

{
  "error": "invalid_member_token"
}

Error codes are machine-readable string identifiers, not numeric codes.

Ingestion Response

POST /v1/events returns a different shape:

{
  "accepted": 8,
  "rejected": 2,
  "errors": [
    { "index": 3, "reason": "invalid_event" },
    { "index": 7, "reason": "rate_limited" }
  ]
}

Pagination

List endpoints use cursor-based pagination:

ParameterTypeDefaultDescription
limitinteger20Page size (1–100)
cursorstringOpaque cursor from next_cursor in previous response

When more results exist, the response includes next_cursor. When no more results exist, next_cursor is null.

# First page
curl -H "Authorization: Bearer dbundle_mem_xxx" \
  "https://api.debugbundle.com/v1/incidents?limit=10"

# Next page
curl -H "Authorization: Bearer dbundle_mem_xxx" \
  "https://api.debugbundle.com/v1/incidents?limit=10&cursor=2025-01-15T10:30:00.000Z|inc_abc123"

Rate Limiting

Event ingestion is rate-limited per project token. The limit depends on your plan tier:

TierRate Limit
Free60 events/min
Solo300 events/min
Team1,000 events/min

When rate-limited, events are rejected with reason "rate_limited" in the errors array. The SDK automatically handles backoff.

Management endpoints (incidents, webhooks, tokens) are not rate-limited in the current version.

HTTP Status Codes

CodeMeaning
200Success
201Resource created
204Success, no content
400Invalid request (malformed body, invalid query parameters)
401Authentication failed (missing, invalid, or wrong token type)
403Insufficient permissions (e.g., member trying owner-only operation)
404Resource not found
409Conflict (e.g., duplicate email at signup)
429Rate limited
500Internal server error

Endpoint Index

Ingestion

MethodPathAuthDescription
POST/v1/eventsProject tokenIngest event batch

Incidents

MethodPathAuthDescription
GET/v1/incidentsMember tokenList incidents
GET/v1/incidents/:idMember tokenGet incident detail
POST/v1/incidents/:id/resolveMember tokenResolve an incident
GET/v1/incidents/:id/bundleMember tokenRetrieve debug bundle
GET/v1/incidents/:id/reproductionMember tokenRetrieve reproduction artifacts
GET/v1/incidents/:id/logsMember tokenList event logs

Services

MethodPathAuthDescription
GET/v1/servicesMember tokenList services for a project

Webhooks

MethodPathAuthDescription
GET/v1/webhooksMember tokenList webhooks
POST/v1/webhooksMember tokenCreate webhook
GET/v1/webhooks/:idMember tokenGet webhook
PATCH/v1/webhooks/:idMember tokenUpdate webhook
DELETE/v1/webhooks/:idMember tokenDelete webhook
POST/v1/webhooks/:id/testMember tokenSend test delivery
GET/v1/webhooks/:id/deliveriesMember tokenList deliveries
POST/v1/webhooks/:id/deliveries/:did/retryMember tokenRetry delivery

Alerts

MethodPathAuthDescription
GET/v1/alertsMember tokenList alert rules
POST/v1/alertsMember tokenCreate alert rule
PATCH/v1/alerts/:idMember tokenUpdate alert rule
DELETE/v1/alerts/:idMember tokenDelete alert rule

Tokens

MethodPathAuthDescription
GET/v1/tokens/project/:idMember tokenList project tokens
POST/v1/tokens/project/:idMember tokenCreate project token
DELETE/v1/tokens/project/:id/:tokenIdMember tokenRevoke project token
GET/v1/tokens/memberMember tokenList member tokens
POST/v1/tokens/memberMember tokenCreate member token
DELETE/v1/tokens/member/:tokenIdMember tokenRevoke member token

Projects

MethodPathAuthDescription
GET/v1/projectsMember tokenList projects
POST/v1/projectsMember tokenCreate project
GET/v1/projects/:idMember tokenGet project
PATCH/v1/projects/:idMember tokenUpdate project
DELETE/v1/projects/:idMember tokenDelete project

Members

MethodPathAuthDescription
GET/v1/organization/membersMember tokenList members
GET/v1/organization/members/invitesMember tokenList pending invites
POST/v1/organization/members/inviteMember tokenInvite a member
DELETE/v1/organization/members/invites/:inviteIdMember tokenCancel an invite
PATCH/v1/organization/members/:userIdMember tokenUpdate member role
DELETE/v1/organization/members/:userIdMember tokenRemove a member

Billing

MethodPathAuthDescription
GET/v1/billingMember token (owner)Get billing summary
POST/v1/billing/capacity/increaseMember token (owner)Add capacity units
POST/v1/billing/capacity/scheduled-reductionMember token (owner)Schedule capacity reduction
DELETE/v1/billing/capacity/scheduled-reductionMember token (owner)Cancel pending reduction

Probes

MethodPathAuthDescription
GET/v1/probes/configProject tokenGet probe config (SDK polls this)
POST/v1/probes/activateMember tokenActivate a remote probe
POST/v1/probes/deactivateMember tokenDeactivate a remote probe

Capture Policy

MethodPathAuthDescription
GET/v1/capture-policyMember tokenGet current capture policy
PUT/v1/capture-policyMember tokenSet capture policy

Authentication

MethodPathAuthDescription
POST/v1/auth/request-codeNoneRequest a one-time email code
POST/v1/auth/verify-codeNoneVerify a one-time email code and create a browser session
GET/v1/auth/sessionSessionResolve current browser session
POST/v1/auth/logoutSessionEnd session
GET/v1/auth/github/startNoneStart GitHub OAuth
GET/v1/auth/github/callbackNoneComplete GitHub OAuth

Next Steps

On this page