Getting started with ZeroErrors
By the end you have sent an error report and watched it show up as an issue in the dashboard.
1. Get an API key
Section titled “1. Get an API key”ZeroErrors uses the same key as ZeroVault, so you only need the sign-in and API Keys steps: sign in at dash.zeroapps.dev, open API Keys in the sidebar, and click Create. Copy the key when it is shown (it is shown once). The full walkthrough is in ZeroVault getting started, but you can skip the project and secret steps.
export ZEROVAULT_API_KEY=zv_your_key_here2. Send your first error
Section titled “2. Send your first error”POST a report to the ingest endpoint:
curl -sS -X POST https://api.zeroapps.dev/errors/v1/errors \ -H "authorization: Bearer $ZEROVAULT_API_KEY" \ -H "content-type: application/json" \ -d '{"project":"docs-demo","message":"Hello from getting-started","level":"info"}'You get back 202 and the issue it landed in:
{"issueId":"f0dc012e-0b66-4dd2-a4af-2eee08198f1f","isNew":true}isNew is true the first time and false for later reports that group into the
same issue. Send the same command a few more times and you will see the same
issueId come back with isNew: false.
3. See the issue
Section titled “3. See the issue”Open dash.zeroapps.dev/errors, filter by
docs-demo, and you will see one issue titled Hello from getting-started with
the count of reports you sent. Open it to see the individual events, and click
Resolve when you are done.
Report fields
Section titled “Report fields”The body of a report:
| Field | Required | Notes |
|---|---|---|
project |
yes | 1–200 characters. Groups and labels the issue. |
message |
yes | 1–10000 characters. Its first line becomes the issue title. |
stack |
no | Up to 50000 characters. Its first at … frame helps group the issue. |
level |
no | error, warning, or info. Defaults to error. |
context |
no | Any JSON object of extra data. |
Errors you may see
Section titled “Errors you may see”- 401
{"error":"Invalid API key"}: the key is missing or wrong. - 400
{"error":"Invalid error report"}: the body is malformed or missing a required field (checked only once the key is valid). - 429 with a
Retry-Afterheader: you are being rate-limited; wait and retry.