---
title: "List Research Agent session artifacts"
method: GET
path: "/sessions/agents/{sessionId}/artifacts"
tags: ["Research Agent"]
---

# List Research Agent session artifacts

`GET /sessions/agents/{sessionId}/artifacts`

List files and interactive outputs produced in a Research Agent session.

File-backed artifacts are listed under `artifacts`. Only the latest version of each is listed. A delivered file appears once as `agent-delivered-file`; `agent-saved-file` denotes a workspace file that the agent saved but did not deliver.

Interactive outputs delivered as session outputs (tables, prose, presentations, figures) are listed under `deliveredOutputs`; retrieve their contents from the artifact content endpoint.

Use the opaque, session-scoped `artifactId` with the download endpoint (for `artifacts`) or the content endpoint (for `deliveredOutputs`). Do not construct or decode artifact IDs.

### Example

```bash
curl https://elicit.com/api/v2/sessions/agents/{sessionId}/artifacts \
  -H "Authorization: Bearer elk_live_your_key_here"
```

## Path parameters

- `sessionId` string, uuid, required

## Response `200`

Latest artifacts produced in the session.

- GetAgentSessionArtifactsResponse
  - `sessionId` string, required — Unique identifier for the research agent session.
  - `artifacts` PublicAgentArtifact[], required — File-backed artifacts produced in the session. Only the latest version of each artifact is listed. Retrieve contents via the download endpoint.
    - `artifactId` string, required — Opaque identifier for the artifact, stable within a session. Pass it to the download endpoint to retrieve the file. Never a raw storage key.
    - `kind` 'agent-saved-file' | 'agent-delivered-file' | 'prose-export' | 'presentation-export' | 'figure-export' | 'report-asset' | 'report-citation', required — The kind of artifact produced in the session. A delivered file lists once as "agent-delivered-file"; "agent-saved-file" denotes a file the agent saved to its workspace but did not deliver.
    - `format` string, nullable, required — Subtype within the artifact (e.g. "pdf", "docx", "pptx"). For agent files it is the filename extension; null only when the filename has no extension.
    - `filename` string, required — Suggested filename for the downloaded artifact.
    - `contentType` string, nullable, required — MIME type of the artifact, when known.
    - `sizeBytes` number, nullable, required — Size of the artifact in bytes, when known.
    - `createdAt` string, nullable, required — ISO 8601 timestamp of when the artifact was produced, when known.
  - `deliveredOutputs` PublicDeliveredOutput[], required — Interactive outputs (tables, prose, presentations, figures) delivered as session outputs. Only the latest delivery of each is listed. Retrieve contents via the artifact content endpoint.
    - `artifactId` string, required — Opaque identifier for the interactive artifact, stable within a session. Pass it to the artifact content endpoint to retrieve its contents. Never a raw storage key or entity hash.
    - `kind` 'table' | 'prose' | 'presentation' | 'figure', required — The kind of interactive artifact: table, prose, presentation, or figure.
    - `title` string, required — Human-readable title of the artifact.
    - `caption` string, nullable, required — Optional caption describing the artifact.
    - `rowCount` integer, nullable, required — Number of rows for a table artifact; null for non-table kinds.
    - `createdAt` string, nullable, required — ISO 8601 timestamp of when the artifact was delivered, when known.
    - `downloadFormats` string[], required — File formats this artifact can be downloaded as from the content endpoint via ?format=<fmt> (tables: csv/xlsx; prose: md; empty for other kinds). The JSON body is returned when no format is given.
  - `url` string, required — URL to view and continue the session in the Elicit web interface.

## Other responses

- `401` — Authentication failed. The API key is missing, invalid, revoked, or expired.
- `403` — API access is not available on your current plan. Upgrade to Pro or above to use the API.
- `404` — The Research Agent API is not enabled for this account, or the session does not exist or belongs to another user.
- `429` — Rate limit exceeded. More than 100 requests per minute were received from your IP address; further requests are blocked for 5 minutes.
- `500` — An unexpected error occurred. Retry after a short delay.

---

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