API: issue search
Search the issue list over the JSON API. One row is returned per normalized issue group. All filters combine with AND semantics.
GET /?api=errors
GET /?api=issues
errors and issues are aliases. The dashboard uses GET /?api=groups, which shares the same filters and sorting but always includes stack and context fields.
Filters
| Parameter | Type / default | Behavior |
|---|---|---|
app | first registered | Selects one isolated application. No cross-application value. |
q | string | Case-insensitive search across title, representative message, exception class, application frame, module name, source channel, and archived source path. |
date | YYYY-MM-DD | Ingested groups with an occurrence that day, plus manual issues created that day. Invalid formats return 422. count stays the lifetime total. |
severity | string | Exact: EMERGENCY, ALERT, CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG. |
status | string | Exact: open, in_progress, fixed, wont_fix, reoccurred. |
log_type | string | Exact: laravel, horizon, nginx_access, console, manual. |
origin | string | ingested or manual. |
kind | string | error for ingested; issue, bug, feature_request, task for manual. |
module | integer / string | Module ID, slug, or case-insensitive name. |
source | string | Exact channel or partial archived path. Unlike q, skips application frames. |
tag | integer / string | Tag ID or case-insensitive tag name. |
has_stack | boolean | true requires a parsed stack; false requires none; omit for both. |
Projection
| Parameter | Default | Adds |
|---|---|---|
include_stack | false | sample_stack |
include_context | false | sample_context, sample_message |
skip_vendor | false | Strips /vendor/ stack lines (needs include_stack=true; never alters stored data). |
Sorting and paging
| Parameter | Default | Values |
|---|---|---|
sort | newest | newest, oldest, occurrences (highest lifetime count first) |
page | 1 | One-indexed; values below one normalize to one |
limit | 50 | Page size, clamped to 1-200 |
Response
{
"data": [
{
"id": 15, "fingerprint": "sha256...", "severity": "ERROR",
"title": "Database query failed", "count": 42,
"first_seen": "2026-07-20 09:14:00", "last_seen": "2026-07-24 16:42:12",
"status": "in_progress", "log_type": "laravel", "channel": "laravel.log",
"origin": "ingested", "kind": "error", "module_name": "Billing",
"has_stack": 1, "tags": []
}
],
"meta": { "total": 144, "page": 1, "limit": 50, "pages": 3,
"sort": "newest", "include_stack": false, "include_context": false, "skip_vendor": false }
}