Epure
Get startedVerify

Verify

Prove the path: Quickstart (captureException), or the panel below.

What success looks like

Ingest returns 202 Accepted with { "id": "<event-uuid>" }, then an unresolved issue appears for that exception type.

CheckExpected
Ingest HTTP status202 Accepted
Body{ "id": "<event-uuid>" }
Issues listNew unresolved issue for the exception type
Event detailStack frames; breadcrumbs if the SDK sent them
Same error twiceSame issue (count ↑), not two issues
Revoked DSN403 { "error": "dsn_revoked", "message": "…" }

Send one test event

Sentry.captureException(new Error("Epure verify test"));

Or POST store JSON / a fixture envelope:

Try ingest

Seed defaults. Change host if Epure is not on localhost:8080.

store curl

curl -sS -D - -o /tmp/epure-ingest.json -X POST
  "http://localhost:8080/api/550e8400-e29b-41d4-a716-446655440000/store/"
  -H "X-Sentry-Auth: Sentry sentry_version=7, sentry_key=a1b2c3d4e5f6g7h8i9j0"
  -H "Content-Type: application/json"
  -d '{
  "platform": "javascript",
  "exception": {
    "values": [{ "type": "Error", "value": "Epure try-it" }]
  }
}'

Expected

HTTP/1.1 202 Accepted

{ "id": "<event-uuid>" }

Then open Issues. This panel does not POST from the browser. CORS and your DSN stay on your machine.

Confirm in the UI

  1. Open http://localhost:8080 (or your EPURE_PUBLIC_URL).
  2. Select the project that owns the DSN.
  3. Set the environment filter to match Sentry.init (local / production / all).
  4. Open Issues. The exception should be there (e.g. Error / Epure verify test).

Empty state when nothing is unresolved: 0 UNRESOLVED EXCEPTIONS. If you sent the test and the list stays empty, see Events not showing.

Confirm grouping (optional)

Send the same exception again. Occurrence count on that issue should increase. You should not get a second issue for an identical fingerprint (type + top in-app frame).

Confirm sourcemaps (optional, JS/TS)

  1. Upload minified assets + .map for a release (Source maps).
  2. Capture an error from the minified bundle with matching release.
  3. Event detail should show original file / function / line, not only app.min.js:1:….

Other languages: raw frames only.

When verify fails

Find the symptom below. Response codes in full: API errors.

SymptomWhat happenedWhat to do
Connection refusedNothing listening on EPURE_PORT (default 8080)docker compose ps; Installation
401 invalid_dsnMissing/wrong sentry_key, or binary older than v0.1.5Copy the public-key DSN from Settings → SDK connection. Official SDKs do not send a secret — pin v0.1.5+
403 dsn_revokedKey revokedCreate or rotate a key; update dsn
403 project_mismatchDSN project id ≠ URL {project_id}Use the project UUID from the DSN path
403 ingest_cap_exceededHourly project cap hitWait or raise the cap in project settings
202 but no issueWrong project, env filter, or worker still flushingWait ~1s; filter local; docker compose logs epure. Still empty: Events not showing
Browser CORS errorOrigin not allowedSet EPURE_CORS_ORIGINS; Troubleshooting
Cookie / login loop on HTTPSecure cookie on plain HTTPEPURE_SESSION_SECURE=0 for local HTTP
Health not okPostgres not readydocker compose ps; retry /health

Spike valve

Flooding the same fingerprint (~100+/min) still returns 202 and bumps counters, but duplicate bodies may drop. That is the valve, not a failed verify.

I got 202 but Issues is empty after a minute

Match the environment chip to the event tag; seed and SDK examples use local. Confirm you opened the project that owns the DSN. Then wait for the worker and read docker compose logs epure. More causes on Troubleshooting.

I need a session API call, not ingest

Login is POST /api/v1/auth/login → 204 plus cookie. Then call the Issues API. DSN headers on /api/v1/* return 401, and a session cookie on envelope or store is ignored. See Authentication.

Why does a flood still return 202?

The spike valve still accepts. Saturated fingerprints increment the counter and may drop bodies, which is expected. Send a slower unique exception, or wait a minute. The hourly project cap is the one that returns 403: API errors.

Next