---
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`

## Request

- Base URL: `https://elicit.com/api/v2`
- URL: `https://elicit.com/api/v2/sessions/agents/{sessionId}/artifacts`
- Auth: HTTP bearer

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 the session in the Elicit web interface. Only the owner can continue it.

## Other responses

- `400`: The request body, query parameters, or path ID failed validation.
- `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 session does not exist or is not accessible to you for this operation.
- `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 reads with backoff; before retrying a write, check whether it took effect. See Error Handling for retry guidance.

## Changes

- **2026-10-16** `22847bf7e65d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elicitlabs/apis/elicit-labs-api/changes/sessions/agents/:sessionId/artifacts/get.md)

---

[API](https://skmtc.dev/elicitlabs/apis/elicit-labs-api.md) - [All operations](https://skmtc.dev/elicitlabs/apis/elicit-labs-api/llms.txt) - [OpenAPI document](https://skmtc.dev/elicitlabs/apis/elicit-labs-api/revisions/cbbe29509d04?raw)
