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 pageShowHide
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_dsnor 403dsn_revoked/project_mismatch. Use Invalid DSN - You are still choosing the numeric project id. Use Point the DSN
@sentry/nodelogsInvalid 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 /healthreturns{"status":"ok"}.- Epure v0.1.5+ and a DSN copied from Settings → SDK connection (numeric project id).
- SDK
environmentis a value you can select in the Issues filter. Doc examples uselocal. - You can read
docker compose logs epureon the host that runs the two containers (Rust binary and PostgreSQL 16).
What each symptom means
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
| Dimension | What you see | What happened |
|---|---|---|
| 202, empty Issues | Body has an id. Issues says 0 unresolved | Non-blocking accept. Queue, environment chip, or wrong project |
| Spike valve | 202 during a flood. Counter rises. Fewer stored bodies | 100 raw events/minute/fingerprint. Clients see no error |
| 403 ingest_cap_exceeded | 403 before the row exists | Hourly 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
environmentinSentry.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.