Skip to main content

API: issue detail and raw source

Fetch a single issue with its occurrences, timeline, status history, and tags, then read the exact bytes behind any occurrence. All three endpoints are GET requests against the JSON API.

Endpoints

api=ReturnsIssue key
groupFull detailgroup
errorFull detail (public shape)data
sourceRaw log slice for one occurrence-

group and error return identical data. The only difference is the envelope key holding the issue record: group uses group, error renames it to data.

Detail parameters (group / error)

ParamDefaultNotes
id-Issue (error group) id. Missing or unknown ids return 404.
page1Occurrence page.
limit100 (error), 500 (group)Occurrences per page, clamped to 1-500.
skip_vendorfalseDrops any sample_stack line containing /vendor/.
include_contexttrueWhen false, removes the issue's sample_context and each occurrence's context_preview.

include_context defaults to on; send include_context=false to omit context. The response meta echoes both skip_vendor and include_context, alongside total_occurrences, page, limit, and pages.

{
"group": { "id": 42, "title": "...", "sample_stack": "...", "count": 17 },
"occurrences": [ { "id": 900, "byte_start": 1024, "byte_end": 3096 } ],
"timeline": [ { "day": "2026-07-24", "count": 5 } ],
"status_history": [ ... ],
"tags": [ ... ],
"meta": { "total_occurrences": 17, "page": 1, "limit": 100, "pages": 1,
"skip_vendor": false, "include_context": true }
}

Raw source (source)

GET /?api=source&occurrence=900

Give an occurrence id. Log Lens seeks to the occurrence's stored byte_start and reads up to byte_end (capped at 4 MB per request), returning the untouched log text plus its path, log_type, and channel:

{ "byte_start": 1024, "byte_end": 3096, "path": "/.../laravel.log",
"log_type": "laravel", "channel": "single", "content": "[2026-07-24...] ..." }

If the archived file is gone or unreadable, the endpoint returns 400 with "The archived source file is unavailable."