---
title: "List quest files"
method: GET
path: "/api/v1/quests/{id}/files"
tags: ["AI"]
---

# List quest files

`GET /api/v1/quests/{id}/files`

## Request

- Base URL: `https://your-deployment.example.com`
- URL: `https://your-deployment.example.com/api/v1/quests/{id}/files`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Returns the files attached to one quest (one turn of a session): what was sent with the message and what the turn produced. Each carries a short-lived signed `download_url` once downloadable; re-read this endpoint rather than storing it. Not paginated: a quest holds a bounded set of files. A `404` covers a quest that does not exist and one in a session the caller cannot see.

## Path parameters

- `id` string, required: The quest id returned by POST /api/chat or another async start.

## Response `200`

The quest's files.

- ListQuestFilesResponse200
  - `files` object[], required
    - `id` string, required
    - `file_name` string, required
    - `mime_type` string, required
    - `file_size` number, required
    - `moderation_status` 'pending' | 'scanning' | 'clean' | 'blocked' | 'null', nullable, required
    - `download_url` string, nullable, required
    - `download_url_expires_at` string, nullable, required
    - `created_at` string, required

## Other responses

- `401`: Missing or invalid credentials.
- `403`: The API key holds none of `notebooks:read`, `ai:chat` or `ai:generate`.
- `404`: No quest with that id is visible to the caller.
- `405`: The path does not serve this HTTP method.
- `422`: Request failed validation.
- `429`: Per-user rate limit exceeded.

---

[API](https://skmtc.dev/bike4mind/apis/bike4mind-api.md) · [All operations](https://skmtc.dev/bike4mind/apis/bike4mind-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bike4mind/apis/bike4mind-api/revisions/db47495b892f?raw)
