HTTP API

Two different things live under /api, and it is worth knowing which one you want.

Reporting an event

POST https://www.larabug.com/api/log

This is the endpoint the clients post to, and the one a client for a language we do not ship would target. It authenticates with the application's ingest key and project key, or with the DSN that carries both, and it reaches nothing else in your account.

An older pairing, an account token plus the project key, still works for the clients deployed before the ingest key existed. It answers with a Deprecation header and will not be there forever.

Unless you are writing a client, use a client: the Laravel and JavaScript packages do the filtering, the batching, the deduplication and the retries, and those are most of the work.

Reading your account

The rest of the API reads what LaraBug has stored: your applications, their exceptions, their queue jobs and queries. It authenticates with your account token, which is a different credential from the one above and is your whole account rather than one application.

POST /api/login with your email and password returns it, which is how the mobile app signs in.

Send it as a bearer token:

Terminal
curl https://www.larabug.com/api/projects \
  -H "Authorization: Bearer YOUR_ACCOUNT_TOKEN" \
  -H "Accept: application/json"
Endpoint What it returns
GET /api/user The account the token belongs to.
GET /api/projects Your applications.
POST /api/projects A new application.
GET /api/projects/{project} One application.
GET /api/projects/{project}/exceptions Its exceptions.
GET /api/projects/{project}/exceptions/{exception} One of its exceptions.
GET /api/projects/{project}/queue-jobs Its queue jobs.
GET /api/projects/{project}/queries Its queries.
GET /api/projects/{project}/scheduled-tasks Its scheduled tasks.
GET /api/projects/{project}/mail The mail it sent.
GET /api/projects/{project}/notifications The notifications it sent.
GET /api/projects/{project}/cache Its cache events.
GET /api/projects/{project}/commands The commands it ran.
GET /api/exceptions Exceptions across your applications.
GET /api/exceptions/{exception} One exception.
POST /api/exceptions/{exception}/read Mark it read.
POST /api/exceptions/{exception}/toggle-public Turn its public page on or off.
DELETE /api/exceptions/{exception} Delete it.

Everything is JSON, everything is scoped to the account the token belongs to, and a token sees exactly what its owner sees.

The tokens under Profile, API tokens are a different credential. Those are for the MCP server and for apps you connect through OAuth, and they are not what this API reads.

Asking the API what it offers

GET https://www.larabug.com/api

The root describes itself: every endpoint, what it returns, how to authenticate, what the rate limit is, and where the MCP server is. Nothing authenticates it, because the question it answers is how to authenticate.

Or ask an assistant instead

If what you want is to read issues while you work rather than to build something, the MCP server is the same data without the plumbing.