---
title: "List task run storage items"
method: GET
path: "/task-runs/{run_id}/storage"
tags: ["Task Runs"]
---

# List task run storage items

`GET /task-runs/{run_id}/storage`

Returns all storage items (files) produced by a task run in a single response.

## Path parameters

- `run_id` string, required

## Response `200`

OK

- PaginatedResponseOfListStorageItemResponse
  - `data` ListStorageItemResponse[] — Array of storage items. All of the run's files are returned in a single response.
    - `id` string, required — Unique identifier for the storage item, prefixed with `stor_`.
    - `object` string, required — Always `storage`.
    - `file_name` string, required — Original file name as it appeared on the source.
    - `file_type` string, required — MIME type (e.g. `application/pdf`, `image/png`, `text/csv`).
    - `file_size` union, required — File size in bytes.
      - integer
      - string, int64
    - `url` string, nullable, required — Pre-signed URL to download the file. Time-limited; re-fetch the item if it expires.
    - `metadata` unknown, required
    - `extraction` unknown, required
    - `purpose` 'attachment' | 'extraction' | 'output', required — How the file relates to the run: `attachment` (a file you provided as task input for the agent to use), `extraction` (a file you provided as task input that Deck extracts data from directly, skipping the agent), or `output` (a file the agent captured during the run).
    - `result` string, required — Extraction outcome: `failure` if the file's data couldn't be extracted, otherwise `success` (including files with no extraction).
    - `created_at` string, date-time, required — ISO 8601 timestamp of when the resource was created.
  - `has_more` boolean — Always `false`; this endpoint returns all items in one response.
  - `request_id` string, nullable — Unique identifier for the API request.

## Other responses

- `400` — Bad request — validation error or malformed input.
- `401` — Unauthorized.
- `403` — Forbidden.
- `404` — Not found — the requested resource does not exist.
- `409` — Conflict — the request is valid but cannot be completed in the current state.
- `422` — Unprocessable content — the request body is understood but contains invalid values.
- `429` — Too many requests or session concurrency exceeded. Retry with backoff; honor Retry-After and RateLimit headers when present.
- `500` — Internal server error.

---

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