Quickstart

By the end of this page, your first error will show up grouped in the dashboard.

1. Create a project

In the dashboard, go to Projects → New project. Creating a project generates two keys at once; the secret key is shown only once.

curl -X POST https://api.errorbird.com/api/v1/projects \
  -H "Authorization: Bearer <access-token>" \
  -H "content-type: application/json" \
  -d '{"organizationId":"<org-id>","name":"Dashboard","allowedDomains":["dashboard.example.com"]}'

2. Send your first event

curl -X POST https://api.errorbird.com/api/v1/ingest \
  -H "X-API-KEY: ebrd_secret_…" \
  -H "content-type: application/json" \
  -d '{
        "@t": "2026-08-19T21:00:00Z",
        "@l": "Error",
        "message": "System.NullReferenceException: Cart not found",
        "stackTrace": "at CartService.GetCart(Int32 userId) in /app/src/Services/CartService.cs:line 42",
        "release": "1.4.2",
        "environment": "production"
      }'

The response is HTTP 202: the event has been queued. The ingest endpoint deliberately says "accepted", not "written" — waiting for the database write inside the request would tie your application to Errorbird's speed at busy moments.

3. Read it back

curl "https://api.errorbird.com/api/v1/projects/<project-id>/issues" \
  -H "X-API-KEY: ebrd_pub_…"

If the same error arrives again with a different user id, a different GUID and a different line number, no new Issue is created; the existing Issue's totalCount goes up.

4. Add a monitor

curl -X POST https://api.errorbird.com/api/v1/monitors \
  -H "Authorization: Bearer <access-token>" \
  -H "content-type: application/json" \
  -d '{"projectId":"<project-id>","type":"Http","name":"Main site","target":"https://example.com"}'

The Ssl and Domain types are added through the same endpoint; the certificate expiry date and domain expiry are read automatically. Details: Uptime, SSL and domains.

Next steps