---
title: "Download Session"
method: GET
path: "/v1/sessions/{id}/download"
tags: ["v1"]
---

# Download Session

`GET /v1/sessions/{id}/download`

## Request

- Base URL: `https://api.ellipsis.dev`
- URL: `https://api.ellipsis.dev/v1/sessions/{id}/download`
- Auth: HTTP bearer

Download the complete session history.

The complete, ordered history of the session (agent output, tool calls, thinking,
lifecycle events, environment output, message events) as an ordered
manifest of presigned segment URLs.

Segments are gzip members: download in order and concatenate
for one file. The JSON API never carries the bytes (same
two-step as files). /records is the paged live view of the
same data.

## Path parameters

- `id` string, required

## Headers

- `user-agent` string, nullable

## Response `200`

Successful Response

- GetSessionLogResponse: The session log manifest: the complete, ordered, downloadable history of the session — every record (agent output, tool calls, thinking, lifecycle events, environment output, message events), archived into seq-ranged segments. For a running session `latest_feed_seq` may exceed `archived_through_feed_seq`; `has_more` tells the client whether the manifest is the whole story yet.
  - `archived_through_feed_seq` integer, required: The highest feed_seq covered by an archived segment (0 when none yet).
  - `earliest_feed_seq` integer, nullable, required: The retention head: the first feed_seq still available, or null when nothing has been recorded yet.
  - `format` string: The session log format identifier.
  - `has_more` boolean, required: Whether records exist past the archived segments — true for a running session whose newest records are not archived yet.
  - `latest_feed_seq` integer, required: The feed head: the last allocated feed_seq.
  - `segments` SessionLogSegment[], required: The archived segments, in feed_seq order.
    - `bytes` integer, required: The segment's size in bytes.
    - `download_url` string, required: A short-lived presigned URL to download the segment. The URL is an unauthenticated credential for that one object until it expires — fetch the manifest, then download immediately.
    - `end_feed_seq` integer, required: The last feed_seq covered by this segment.
    - `expires_in` integer, required: How long the download URL stays valid, in seconds.
    - `record_count` integer, required: How many records the segment contains.
    - `start_feed_seq` integer, required: The first feed_seq covered by this segment.
  - `session_id` string, required: Identifier of the session.

## Other responses

- `401`: The bearer token is missing, invalid, or revoked.
- `403`: The credential may not perform this action, or the account is blocked.
- `404`: No such session in your account.
- `422`: Validation Error

---

[API](https://skmtc.dev/ellipsis/apis/ellipsis-rest-api.md) - [All operations](https://skmtc.dev/ellipsis/apis/ellipsis-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ellipsis/apis/ellipsis-rest-api/revisions/344b16df9a1a?raw)
