---
title: "List run artifacts"
method: GET
path: "/api/v1/runs/{id}/artifacts"
tags: ["Runs"]
---

# List run artifacts

`GET /api/v1/runs/{id}/artifacts`

Returns a JSON list of downloadable artifact paths for a run. Pass `zip=1` to switch the response to a ZIP download containing output files.

## Path parameters

- `id` string, required — Run id

## Query parameters

- `zip` '1' — When `1`, download output files as a ZIP instead of listing paths. Does not include trace, scores, or input — use `GET /runs/{id}/scores` and `GET /runs/{id}/trace` for those.
- `bundle` 'review' — With `zip=1`, use `review` to download a ZIP with `output/` and `expected/` folders (corrected review artifacts).
- `token` string — Signed email download token (zip only; no Bearer required).

## Response `200`

JSON artifact list, or ZIP bytes when `zip=1`.

- RunArtifactsResponse
  - `artifacts` RunArtifact[], required
    - `name` string, required
    - `role` string, required — `input`, `output`, `debug`, `report`, or another stable artifact role.
    - `path` string, required — Canonical artifact path for GET /api/v1/runs/:id/artifacts/:path.
    - `stepName` string — Workflow step that produced the file, when known.
    - `contentType` string, nullable
    - `size` integer, nullable

## Other responses

- `400` — Validation error. Request shape did not match the spec.
- `401` — Missing or invalid API key
- `403` — API key lacks required scope
- `404` — Resource not found
- `413` — Payload too large. Upload exceeded the per-request size cap.
- `429` — Rate limit exceeded
- `500` — Internal server error

---

[API](https://skmtc.dev/eigenpal/apis/eigenpal-api.md) · [All operations](https://skmtc.dev/eigenpal/apis/eigenpal-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/eigenpal/eigenpal-api/revisions/dddcddf1975c/schema)
