API
RESTful API for event ingestion, incident retrieval, hosted health checks, webhook management, token management, and more. Authenticated via project tokens, member tokens, or browser sessions.
Base URL
https://api.debugbundle.comSelf-hosted deployments use your custom domain.
Authentication
The API uses three authentication methods, each scoped differently:
| Method | Header / Mechanism | Scope | Use Case |
|---|---|---|---|
| Project token | Authorization: Bearer dbundle_proj_* | Write-only ingestion | SDKs sending events via POST /v1/events |
| Member token | Authorization: Bearer dbundle_mem_* | Full read/manage | CLI, API clients, MCP — incidents, webhooks, tokens, billing |
| Browser session | Cookie: dbundle_session=* | Full read/manage | Web dashboard (same permissions as member token) |
Project tokens can only ingest events. They cannot read incidents, manage webhooks, or perform any other operation.
AnalyticsBundle metrics and management use member tokens or browser sessions. See the AnalyticsBundle API for aggregate metrics, saved funnels, opportunities, journey samples, and generated artifacts.
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:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Page size (1–100) |
cursor | string | — | Opaque 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:
| Tier | Rate Limit |
|---|---|
| Free | 60 events/min |
| Solo | 300 events/min |
| Team | 1,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
| Code | Meaning |
|---|---|
200 | Success |
201 | Resource created |
204 | Success, no content |
400 | Invalid request (malformed body, invalid query parameters) |
401 | Authentication failed (missing, invalid, or wrong token type) |
403 | Insufficient permissions (e.g., member trying owner-only operation) |
404 | Resource not found |
409 | Conflict (e.g., duplicate email at signup) |
429 | Rate limited |
500 | Internal server error |
Endpoint Index
Ingestion
| Method | Path | Auth | Description |
|---|---|---|---|
POST | /v1/events | Project token | Ingest event batch |
Incidents
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/incidents | Member token | List incidents |
GET | /v1/incidents/:id | Member token | Get incident detail |
POST | /v1/incidents/:id/resolve | Member token | Resolve an incident |
POST | /v1/incidents/resolve | Member token | Resolve incidents in bulk |
POST | /v1/incidents/:id/reopen | Member token | Reopen an incident |
POST | /v1/incidents/reopen | Member token | Reopen incidents in bulk |
GET | /v1/incidents/:id/bundle | Member token | Retrieve debug bundle |
GET | /v1/incidents/:id/reproduction | Member token | Retrieve reproduction artifacts |
GET | /v1/incidents/:id/logs | Member token | List event logs |
Services
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/services | Member token | List services for a project |
Webhooks
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/webhooks | Member token | List webhooks |
POST | /v1/webhooks | Member token | Create webhook |
GET | /v1/webhooks/:id | Member token | Get webhook |
PATCH | /v1/webhooks/:id | Member token | Update webhook |
DELETE | /v1/webhooks/:id | Member token | Delete webhook |
POST | /v1/webhooks/:id/test | Member token | Send test delivery |
GET | /v1/webhooks/:id/deliveries | Member token | List deliveries |
POST | /v1/webhooks/:id/deliveries/:did/retry | Member token | Retry delivery |
Alerts
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/alerts | Member token | List alert rules |
POST | /v1/alerts | Member token | Create alert rule |
PATCH | /v1/alerts/:id | Member token | Update alert rule |
DELETE | /v1/alerts/:id | Member token | Delete alert rule |
Availability Checks
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/projects/:id/availability-checks | Browser session or member token | List hosted health checks and plan limits |
POST | /v1/projects/:id/availability-checks | Browser session or member token (owner/admin) | Create a hosted health check |
GET | /v1/projects/:id/availability-checks/:checkId | Browser session or member token | Get one hosted health check |
PATCH | /v1/projects/:id/availability-checks/:checkId | Browser session or member token (owner/admin) | Update a hosted health check |
DELETE | /v1/projects/:id/availability-checks/:checkId | Browser session or member token (owner/admin) | Delete a hosted health check |
POST | /v1/projects/:id/availability-checks/test | Browser session or member token (owner/admin) | Run a side-effect-free target test |
GET | /v1/projects/:id/availability-checks/:checkId/results | Browser session or member token | List recent raw execution results |
GET | /v1/projects/:id/availability-checks/:checkId/daily-rollups | Browser session or member token | List retained per-day status history |
See Availability Checks for behavior, tier limits, SSRF guardrails, and CLI/MCP parity.
Tokens
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/projects/:id/tokens | Member token | List project tokens |
POST | /v1/projects/:id/tokens | Member token | Create project token |
POST | /v1/projects/:id/tokens/:tokenId/revoke | Member token | Revoke project token |
GET | /v1/member/tokens | Member token | List member tokens |
POST | /v1/member/tokens | Member token | Create member token |
POST | /v1/member/tokens/:tokenId/revoke | Member token | Revoke member token |
Projects
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/projects | Member token | List projects |
POST | /v1/projects | Member token | Create project |
GET | /v1/projects/:id | Member token | Get project |
PATCH | /v1/projects/:id | Member token | Update project |
DELETE | /v1/projects/:id | Member token | Delete project |
Members
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/projects/:id/members | Member token (owner/admin) | List project members |
GET | /v1/projects/:id/invites | Member token (owner/admin) | List pending project invites |
POST | /v1/projects/:id/invite | Member token (owner/admin) | Invite a collaborator |
DELETE | /v1/projects/:id/invites/:inviteId | Member token (owner/admin) | Cancel a project invite |
PATCH | /v1/projects/:id/members/:userId | Member token (owner/admin) | Update project member role |
DELETE | /v1/projects/:id/members/:userId | Member token (owner/admin) | Remove a project member |
Billing
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/billing | Browser session or member token (owner) | Get billing summary |
POST | /v1/billing/trial/start | Browser session or member token (owner) | Start an eligible no-card trial |
POST | /v1/billing/capacity/increase | Browser session or member token (owner) | Add capacity units |
POST | /v1/billing/capacity/scheduled-reduction | Browser session or member token (owner) | Schedule capacity reduction |
DELETE | /v1/billing/capacity/scheduled-reduction | Browser session or member token (owner) | Cancel pending reduction |
Probes
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/sdk/config | Project token | Get SDK config, including capture policy, active capture rules, and active probe directives |
GET | /v1/projects/:id/probes | Member token | List active probes for a project |
POST | /v1/projects/:id/probes/activate | Member token | Activate a remote probe |
POST | /v1/projects/:id/probes/deactivate | Member token | Deactivate a remote probe |
Capture Policy
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/projects/:id/capture-policy | Member token | Get current capture policy for a project; plain members receive preview-only output |
PATCH | /v1/projects/:id/capture-policy | Member token (owner/admin) | Set capture policy for a project |
Capture Rules
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /v1/projects/:id/capture-rules | Member token | List project capture rules; plain members receive preview-only output |
POST | /v1/projects/:id/capture-rules | Member token (owner/admin) | Create a capture rule |
PATCH | /v1/projects/:id/capture-rules/:ruleId | Member token (owner/admin) | Update a capture rule |
DELETE | /v1/projects/:id/capture-rules/:ruleId | Member token (owner/admin) | Delete a capture rule |
POST | /v1/incidents/:id/capture-rule-suggestion | Member token | Suggest capture rules from an incident bundle |
POST | /v1/incidents/:id/capture-rules | Member token (owner/admin) | Create a capture rule from an incident suggestion |
Authentication
| Method | Path | Auth | Description |
|---|---|---|---|
POST | /v1/auth/request-code | None | Request a one-time email code |
POST | /v1/auth/verify-code | None | Verify a one-time email code and create a browser session |
GET | /v1/auth/session | Session | Resolve current browser session |
POST | /v1/auth/logout | Session | End session |
GET | /v1/auth/github/start | None | Start GitHub OAuth |
GET | /v1/auth/github/callback | None | Complete GitHub OAuth |
POST | /v1/auth/github/device/start | None | Start GitHub device flow for CLI bootstrap |
POST | /v1/auth/github/device/poll | None | Poll GitHub device-flow status |
POST | /v1/auth/github/device/claim | None | Claim the issued member token after approval |
POST | /v1/auth/github/token/exchange | None | Exchange an existing GitHub access token for a member token |
Next Steps
- Authentication — Token types, creation, and usage in detail
- Incidents API — List, inspect, resolve, and retrieve bundles
AnalyticsBundle CLI
Query aggregate product analytics, inspect journeys and opportunities, generate AnalyticsBundles, and manage project analytics settings.
Authentication
Authenticate with the DebugBundle API using project tokens, member tokens, or browser sessions. Learn when to use each and how to create them.