---
title: "Get interactive artifact contents"
method: GET
path: "/sessions/agents/{sessionId}/artifacts/{artifactId}/content"
tags: ["Research Agent"]
---

# Get interactive artifact contents

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

## Request

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

Materialize the contents of an interactive artifact listed under `deliveredOutputs` on the list-artifacts endpoint.

The response is structured JSON discriminated on `kind`: tables carry `columns` and `rows`; prose and figures carry supported content (cleaned text, the original markdown, and resolved citations); presentations carry slides. The default `format` is `json` (omitting the parameter is equivalent to `?format=json`). Tables can also be downloaded with `?format=csv` or `?format=xlsx`, and prose with `?format=md`. File responses are served with `Content-Disposition: attachment`, not as JSON. Unsupported kind/format combinations return `400 download_not_available`.

### Example

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

# Table as CSV
curl "https://elicit.com/api/v2/sessions/agents/{sessionId}/artifacts/{artifactId}/content?format=csv" \
  -H "Authorization: Bearer elk_live_your_key_here" \
  -O -J

# Prose as portable Markdown
curl "https://elicit.com/api/v2/sessions/agents/{sessionId}/artifacts/{artifactId}/content?format=md" \
  -H "Authorization: Bearer elk_live_your_key_here" \
  -O -J
```

## Path parameters

- `sessionId` string, uuid, required
- `artifactId` string, required

## Query parameters

- `format` 'json' | 'csv' | 'xlsx' | 'md': Response format: omit or "json" for the JSON body; "csv"/"xlsx" to download a table as a file, or "md" to download prose as Markdown.

## Response `200`

Contents of the interactive artifact: structured JSON, a CSV/XLSX file for a table, or a Markdown file for prose.

- union
  - object
    - `artifactId` string, required: Opaque identifier for the interactive artifact, echoing the request. Can also be re-requested with ?format=<fmt> to download as a file (tables: csv/xlsx, prose: md).
    - `title` string, required: Human-readable title of the artifact.
    - `caption` string, nullable, required: Optional caption describing the artifact.
    - `url` string, required: URL to view the session in the Elicit web interface. Only the owner can continue it.
    - `kind` 'table', required
    - `columns` string[], required: Ordered column keys for the table, in first-seen order across the rows.
    - `rows` object[], required: Table rows, each a mapping from column key to cell.
  - object
    - `artifactId` string, required: Opaque identifier for the interactive artifact, echoing the request. Can also be re-requested with ?format=<fmt> to download as a file (tables: csv/xlsx, prose: md).
    - `title` string, required: Human-readable title of the artifact.
    - `caption` string, nullable, required: Optional caption describing the artifact.
    - `url` string, required: URL to view the session in the Elicit web interface. Only the owner can continue it.
    - `kind` 'prose', required
    - `content` object, required
      - `text` string, required: Human-readable content with inline citation markup removed.
      - `markdown` string, required: The original markdown content, including inline citation markup.
      - `citations` object[], required: Citations backing this content, resolved to the same shape as message citations.
        - `citationId` string, required: Identifier for this citation within the agent message.
        - `reference` string, nullable, required: The inline citation this entry resolves. It matches, character for character, a single reference token inside the `<citations>…</citations>` markup in the message text (one entry per token, after comma-separated tokens are split). Use it to map inline references in the text to this citation; use the `source` field to identify the underlying source. `null` for citations with no inline reference (e.g. legacy quotes-array or artifact-content citations).
        - `quote` string, required: The passage from the source that supports the message.
        - `source` object, required
          - `sourceRef` string, required: Opaque identifier for the underlying source, stable everywhere it appears in a session (message citations, table cells, and the cited-sources endpoint). Use it to deduplicate citations and to join a citation to its entry from the session's cited-sources endpoint, which additionally carries the abstract. Never a raw internal id; do not construct or decode it.
          - `title` string, nullable, required: Title of the cited work.
          - `authors` string[], required: Authors of the cited work, in display order.
          - `year` integer, nullable, required: Publication year.
          - `doi` string, nullable, required: Digital Object Identifier (DOI), when available.
          - `url` string, nullable, required: Best available URL for the cited work.
          - `venue` string, nullable, required: Journal, conference, repository, or other publication venue.
          - `citationCount` integer, nullable, required: Number of works citing this source, when known.
          - `fullTextAvailable` boolean, nullable, required: Whether the source's full text (rather than the abstract alone) is available. Null when the session recorded no verdict — most often on the events feed, which reports only what the session itself recorded. The cited-sources endpoint resolves those unknowns and is the reliable place to read this field.
          - `studyTypeTags` string[], required: Study-design tags for the source, when classified (e.g. "Randomized Controlled Trial", "Meta-Analysis").
          - `journalQuartile` integer, nullable, required: Journal ranking quartile from 1 (highest) to 4, when known.
          - `elicitId` string, nullable, required: Elicit's identifier for the source, when it is in the Elicit corpus.
  - object
    - `artifactId` string, required: Opaque identifier for the interactive artifact, echoing the request. Can also be re-requested with ?format=<fmt> to download as a file (tables: csv/xlsx, prose: md).
    - `title` string, required: Human-readable title of the artifact.
    - `caption` string, nullable, required: Optional caption describing the artifact.
    - `url` string, required: URL to view the session in the Elicit web interface. Only the owner can continue it.
    - `kind` 'presentation', required
    - `slides` object[], required: Ordered slides, each with a title and supported content.
      - `title` string, required: Slide title.
      - `content` object, required
        - `text` string, required: Human-readable content with inline citation markup removed.
        - `markdown` string, required: The original markdown content, including inline citation markup.
        - `citations` object[], required: Citations backing this content, resolved to the same shape as message citations.
          - `citationId` string, required: Identifier for this citation within the agent message.
          - `reference` string, nullable, required: The inline citation this entry resolves. It matches, character for character, a single reference token inside the `<citations>…</citations>` markup in the message text (one entry per token, after comma-separated tokens are split). Use it to map inline references in the text to this citation; use the `source` field to identify the underlying source. `null` for citations with no inline reference (e.g. legacy quotes-array or artifact-content citations).
          - `quote` string, required: The passage from the source that supports the message.
          - `source` object, required
            - `sourceRef` string, required: Opaque identifier for the underlying source, stable everywhere it appears in a session (message citations, table cells, and the cited-sources endpoint). Use it to deduplicate citations and to join a citation to its entry from the session's cited-sources endpoint, which additionally carries the abstract. Never a raw internal id; do not construct or decode it.
            - `title` string, nullable, required: Title of the cited work.
            - `authors` string[], required: Authors of the cited work, in display order.
            - `year` integer, nullable, required: Publication year.
            - `doi` string, nullable, required: Digital Object Identifier (DOI), when available.
            - `url` string, nullable, required: Best available URL for the cited work.
            - `venue` string, nullable, required: Journal, conference, repository, or other publication venue.
            - `citationCount` integer, nullable, required: Number of works citing this source, when known.
            - `fullTextAvailable` boolean, nullable, required: Whether the source's full text (rather than the abstract alone) is available. Null when the session recorded no verdict — most often on the events feed, which reports only what the session itself recorded. The cited-sources endpoint resolves those unknowns and is the reliable place to read this field.
            - `studyTypeTags` string[], required: Study-design tags for the source, when classified (e.g. "Randomized Controlled Trial", "Meta-Analysis").
            - `journalQuartile` integer, nullable, required: Journal ranking quartile from 1 (highest) to 4, when known.
            - `elicitId` string, nullable, required: Elicit's identifier for the source, when it is in the Elicit corpus.
      - `speakerNotes` string, nullable, required: Speaker notes, when present.
  - object
    - `artifactId` string, required: Opaque identifier for the interactive artifact, echoing the request. Can also be re-requested with ?format=<fmt> to download as a file (tables: csv/xlsx, prose: md).
    - `title` string, required: Human-readable title of the artifact.
    - `caption` string, nullable, required: Optional caption describing the artifact.
    - `url` string, required: URL to view the session in the Elicit web interface. Only the owner can continue it.
    - `kind` 'figure', required
    - `description` object, required
      - `text` string, required: Human-readable content with inline citation markup removed.
      - `markdown` string, required: The original markdown content, including inline citation markup.
      - `citations` object[], required: Citations backing this content, resolved to the same shape as message citations.
        - `citationId` string, required: Identifier for this citation within the agent message.
        - `reference` string, nullable, required: The inline citation this entry resolves. It matches, character for character, a single reference token inside the `<citations>…</citations>` markup in the message text (one entry per token, after comma-separated tokens are split). Use it to map inline references in the text to this citation; use the `source` field to identify the underlying source. `null` for citations with no inline reference (e.g. legacy quotes-array or artifact-content citations).
        - `quote` string, required: The passage from the source that supports the message.
        - `source` object, required
          - `sourceRef` string, required: Opaque identifier for the underlying source, stable everywhere it appears in a session (message citations, table cells, and the cited-sources endpoint). Use it to deduplicate citations and to join a citation to its entry from the session's cited-sources endpoint, which additionally carries the abstract. Never a raw internal id; do not construct or decode it.
          - `title` string, nullable, required: Title of the cited work.
          - `authors` string[], required: Authors of the cited work, in display order.
          - `year` integer, nullable, required: Publication year.
          - `doi` string, nullable, required: Digital Object Identifier (DOI), when available.
          - `url` string, nullable, required: Best available URL for the cited work.
          - `venue` string, nullable, required: Journal, conference, repository, or other publication venue.
          - `citationCount` integer, nullable, required: Number of works citing this source, when known.
          - `fullTextAvailable` boolean, nullable, required: Whether the source's full text (rather than the abstract alone) is available. Null when the session recorded no verdict — most often on the events feed, which reports only what the session itself recorded. The cited-sources endpoint resolves those unknowns and is the reliable place to read this field.
          - `studyTypeTags` string[], required: Study-design tags for the source, when classified (e.g. "Randomized Controlled Trial", "Meta-Analysis").
          - `journalQuartile` integer, nullable, required: Journal ranking quartile from 1 (highest) to 4, when known.
          - `elicitId` string, nullable, required: Elicit's identifier for the source, when it is in the Elicit corpus.
    - `renderer` string, nullable, required: Figure renderer, when known.
    - `spec` string, nullable, required: Figure spec, when known.

## Other responses

- `400`: The requested file format is not available for this artifact kind. Tables support CSV/XLSX and prose supports Markdown.
- `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 was not found, or the artifact is not in the session's current deliveredOutputs list.
- `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/:artifactId/content/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)
