ErrorDX

Key endpoints

Ingestion and API routes.

Event ingestion

Sentry-compatible ingestion endpoints:

  • POST /api/:projectId/store/
  • POST /api/:projectId/envelope/

The envelope endpoint takes every item type the SDKs send: event, transaction (and the span items that arrive with it), session, sessions (aggregates) and log. Each request must include a valid project key, supplied through the x-sentry-auth header, the sentry_key query parameter, or HTTP Basic auth.

Traces can also arrive over OTLP: POST /v1/traces (see the OpenTelemetry pages).

Rate limits

Ingestion is rate limited per project, counted in the database so every instance and restart shares one window:

VariableDefaultWindow
RATE_LIMIT_EVENTS_PER_MINUTE1000one minute
RATE_LIMIT_EVENTS_PER_HOUR50000one hour

Over the limit, ingestion answers 429 with { "code": "RATE_LIMITED" }. Point a separate DSN at a separate project when one client needs its own budget.

REST API

Everything lives under /api/v1:

  • GET/POST /organizations, GET/PATCH/DELETE /organizations/{slug}
  • members, invitations, teams, API tokens, audit, agent keys + agent audit
  • projects, DSN keys (create/rotate/revoke/activate), project team grants, debug files, session stats, project stats
  • project groups — projects that ship together, for cross-project views
  • issues (org feed + counts, filters), triage (status/assign/comment/mute), activity, events per issue
  • events per project, single-event lookup
  • alert rules, notification channels, alert history, channel test sends
  • dashboards (create, generate from a prompt, star, view) and monitors
  • billing view (plan, usage, quotas)
  • onboarding

Pagination

Most lists take limit and offset. The issue feed is keyset-paginated instead, because grouping means rows move while you read them: request cursor= from a previous response's nextCursor, and the page continues from where it left off without repeating or skipping an issue that changed in between.

Traces, logs and AI

Traces are stored as spans, so a trace is read as a tree rather than as an event:

  • GET /organizations/{slug}/traces — recent traces, one row per transaction (newest first), each with its span and error counts. op= narrows to traces containing a span with that op.
  • GET /organizations/{slug}/traces/{traceId} — one trace with every span, oldest first: the waterfall's order, with each span's own attributes.
  • GET /organizations/{slug}/transactions — p50/p95/avg latency and an error rate per transaction, slowest by p95 first. Percentiles are computed per transaction, so a transaction with four runs and one with four million both get a p95 that means the same thing.
  • GET /organizations/{slug}/logs — the structured log feed, filterable by project, level, body substring and time. traceId= returns just one trace's lines, which is how the waterfall links back to them. Attributes arrive as JSON and are returned as serialized JSON.
  • GET /organizations/{slug}/gen-ai — AI usage rolled up from gen_ai.* span attributes: calls and tokens per model, plus the tools and agents used.
  • GET /organizations/{slug}/storage — rows and bytes held per project. Payload bytes are summed exactly up to the sampling threshold and estimated above it; estimated and anyEstimated say which figures are estimates.

The full schema — parameters, request bodies and response shapes — is the OpenAPI document at /openapi.json, which also lists the MCP surface.

MCP

POST /mcp speaks streamable HTTP MCP with 21 tools. Authenticate with an ak_… agent key; every call is recorded in the agent audit trail.

FamilyTools
Workspacelist_organizations, list_projects, create_project, get_project_dsn
Issueslist_issues, get_issue, update_issue_status, assign_issue, add_issue_comment, list_issue_events, related_issues
Eventsget_event, ingest_test_event
Alertslist_alert_rules, create_alert_rule, list_notification_channels
Releaseslist_release_files
Project groupslist_project_groups, create_project_group
Dashboardslist_dashboards, create_dashboard

Releases and artifacts

sentry-cli-compatible routes under /api/0/:

  • GET /api/0/organizations/{slug}/chunk-upload/ — chunk-upload capabilities
  • POST /api/0/organizations/{slug}/chunk-upload/ — gzip chunk upload
  • POST /api/0/organizations/{slug}/artifactbundle/assemble — artifact bundles
  • release files: create/get/list/upload/update/delete

On this page