The results of a run, newest first
const url = 'https://beta-api.plune.ai/v1/runs/example/results';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://beta-api.plune.ai/v1/runs/example/results \ --header 'Authorization: Bearer <token>'The result list of the run page (api.ts → listRunResults): every result the run holds, with its status, outcome, execution and error text, whatever the state of the case it points at — a result is evidence of the run and stays listed when its case is later deleted. Not paged: a run is bounded by what one CI job reports. Each result carries its failure in this same answer, so the page opens the detail without another request, and every errorContext is sanitized on the way out — one stored before the rules existed included.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Responses
Section titled “ Responses ”Results of the run
object
One stored result, as every reader returns it — a run’s results, a test’s history, a corrected mark.
object
Returned sanitized — no colour codes, no credentials — whether it was stored before the rules existed or after.
What the platform removed before storing — written whenever something was, even without text; null when nothing ever was.
object
Values replaced by a marker, in the text and in every string of failure, each once. The headline counts only when there is no text — otherwise it repeats a line of it.
Whether the TEXT was cut to 256 KB. A shortened field of failure carries its own ….
What the reporter said about the failed attempt, or null.
object
How many steps between the outer and the inner ones were left out. Absent when none were.
object
From the repository root in posix form, the way a case’s specRef names it. A path of the machine is refused: absolute, with a drive or a scheme, from a home (~), or climbing out with ...
object
As the runner named it — screenshot, trace, error-context.
How many artifacts past the listed ones there are — all reachable through ciUrl.
Files uploaded to this result — screenshots, and text (JSON, plain text, logs) — oldest first (ADR 0040) — present on a run’s results list, and only when there is one. The bytes are GET /v1/files/{id}.
A file of a result, everything but its bytes (ADR 0040).
object
The last segment of the name it was uploaded with, cleaned of credentials as a text is.
A log is text/plain.
Bytes as kept: a picture at most 2 MiB; a text at most 512 KiB, and counted after its credentials are cleaned, so it can differ from what was sent.
Example
{ "results": [ { "id": "6f1c2b3a-0000-4000-8000-0000000000e2", "runId": "6f1c2b3a-0000-4000-8000-0000000000d1", "testCaseId": "6f1c2b3a-0000-4000-8000-0000000000c1", "resultKey": "e2e/checkout.spec.ts::Checkout — coupon applied::chromium", "signature": "2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3", "status": "failed", "rawStatus": "failed", "source": "playwright", "expectedStatus": "passed", "outcome": "unexpected", "execution": { "startedAt": "2026-09-16T09:12:05.400Z", "finishedAt": "2026-09-16T09:12:09.021Z", "durationMs": 3621, "retry": 1, "worker": "chromium-1" }, "durationMs": 3621, "caseVersion": 1, "errorContext": "Error: expect(locator).toHaveText(\"−10 %\")\n Expected: \"−10 %\"\n Received: \"0 %\"\n at e2e/checkout.spec.ts:41:31", "errorContextMeta": { "redacted": 0, "truncated": false }, "assertions": [], "steps": null, "failure": { "headline": "Error: expect(locator).toHaveText(\"−10 %\")", "steps": [ "Pay", "Apply the coupon" ], "location": { "file": "e2e/checkout.spec.ts", "line": 41, "column": 31 }, "artifacts": [ { "name": "screenshot", "contentType": "image/png" }, { "name": "error-context", "contentType": "text/markdown" }, { "name": "trace", "contentType": "application/zip" } ], "ciUrl": "https://github.com/plune-ai/plune/actions/runs/35003177826" }, "executedBy": null, "createdAt": "2026-09-16T09:12:04.151Z" }, { "id": "6f1c2b3a-0000-4000-8000-0000000000e1", "runId": "6f1c2b3a-0000-4000-8000-0000000000d1", "testCaseId": "6f1c2b3a-0000-4000-8000-0000000000c1", "resultKey": "e2e/checkout.spec.ts::Checkout — empty cart::chromium", "signature": "7f974c61f8f10065cd8ae6993cc069e4f85b1db1ed008b965885fb6f945a28c9", "status": "passed", "rawStatus": "passed", "source": "playwright", "expectedStatus": "passed", "outcome": "expected", "execution": { "startedAt": "2026-09-16T09:12:04.000Z", "finishedAt": "2026-09-16T09:12:05.310Z", "durationMs": 1310, "retry": 0, "worker": "chromium-1" }, "durationMs": 1310, "caseVersion": 1, "errorContext": null, "errorContextMeta": null, "assertions": [], "steps": null, "failure": null, "executedBy": null, "createdAt": "2026-09-16T09:12:04.151Z" } ]}No / invalid token or session
Not found or not yours
object
Example generated
{ "error": "example"}