Epure
Guide

202 Accepted, and Issues is still empty

Wait for the queue, match the environment chip, and open the project that owns the DSN. Spike valve stays 202. The hourly cap returns 403.

On this pageShow
  1. Prerequisites
  2. What each symptom means
  3. Copyable checks
  4. Verification
  5. Troubleshooting
  6. Questions

HTTP 202 with an empty Issues list means ingest accepted the envelope and the Tokio queue has not persisted it yet. Wait about 1 second. Match the environment chip to the SDK environment tag. Open the project that owns the DSN. Then run docker compose logs epure. The spike valve allows 100 raw events per minute per fingerprint, returns 202, leaves excess bodies unstored, and increments the issue counter. Clients see no error. The hourly cap defaults to 5000 events per hour per project and returns 403 ingest_cap_exceeded before enqueue.

Use this if

  • Ingest returned 202 with { "id": "…" } and Issues shows 0 unresolved
  • A crash loop returns 202 while stored event rows lag the issue counter
  • Ingest returned 403 ingest_cap_exceeded

Do not use this if

  • The status is 401 invalid_dsn or 403 dsn_revoked / project_mismatch. Use Invalid DSN
  • You are still choosing the numeric project id. Use Point the DSN
  • @sentry/node logs Invalid projectId. The DSN path is a dashboard UUID
  • You need session replay, distributed tracing, profiling, or a logs product. Those are out of scope

Scope on Epure is exception events. Session replay, distributed tracing, profiling, and a logs product are out of scope. Dropped item types: Envelope.

Prerequisites

  • GET /health returns {"status":"ok"}.
  • Epure v0.1.5+ and a DSN copied from Settings → SDK connection (numeric project id).
  • SDK environment is a value you can select in the Issues filter. Doc examples use local.
  • You can read docker compose logs epure on the host that runs the two containers (Rust binary and PostgreSQL 16).

What each symptom means

Accepted, sampled, or capped

202, empty Issues

What you see
Body has an id. Issues says 0 unresolved
What happened
Non-blocking accept. Queue, environment chip, or wrong project

Spike valve

What you see
202 during a flood. Counter rises. Fewer stored bodies
What happened
100 raw events/minute/fingerprint. Clients see no error

403 ingest_cap_exceeded

What you see
403 before the row exists
What happened
Hourly project cap, default 5000. Checked before enqueue
DimensionWhat you seeWhat happened
202, empty IssuesBody has an id. Issues says 0 unresolvedNon-blocking accept. Queue, environment chip, or wrong project
Spike valve202 during a flood. Counter rises. Fewer stored bodies100 raw events/minute/fingerprint. Clients see no error
403 ingest_cap_exceeded403 before the row existsHourly project cap, default 5000. Checked before enqueue

Cap hits may emit an internal alert with kind ingest_cap_hit. Spike valve detail: the spike valve guide.

Copyable checks

  • Sentry.captureException(new Error("Epure verify test"))
  • docker compose logs epure
  • In the UI: select the project that owns the DSN, then set the environment chip to the same string as environment in Sentry.init.

Verification

  • The verify call returns HTTP 202 and { "id": "<event-uuid>" }.
  • Within about a second, Issues shows one unresolved exception for that project and environment.
  • Sending the same error again increases the count on that issue.
  • Under the spike valve, 202 continues and the counter increments while excess bodies are not stored.

Troubleshooting

202, then nothing in Issues

Accept is non-blocking. Wait about 1 second. Match the environment chip to the SDK tag (local in the doc examples, or whatever you set). Confirm you opened the project that owns the DSN. Dashboard URLs use /p/:uuid/, which is the internal id, and the DSN path is the numeric project id. Read docker compose logs epure for persist errors.

Flood still returns 202

That is the spike valve: 100 raw events per minute per fingerprint. Excess bodies are not stored. The issue counter increments. Clients see no error. Slow the loop or wait a minute, then send one distinct exception. Full notes: Spike valve.

403 ingest_cap_exceeded

The hourly project cap defaults to 5000 events per hour per project and is checked before enqueue. Wait for the hour window, or raise ingest_cap_per_hour in project settings, then retry. A cap hit may emit an internal alert with kind ingest_cap_hit.

A login form that accepts the password and shows itself again is the HTTP Secure-cookie case in Troubleshooting.

Questions

Does 202 mean the body was stored?
On a normal verify, the row shows up after the queue flushes, usually within about a second. Under the spike valve, 202 continues, the issue counter increments, and excess bodies are not stored.
Which project should be open?
The project that owns the DSN you configured. A 202 into project A will not appear while the UI is sitting on project B. Match the environment chip to the SDK environment tag in that same project.