---
title: "Prepare a pinned export of stopped saved files"
method: POST
path: "/v1/research-workspaces/{id}/files/export"
tags: ["Research workspaces"]
---

# Prepare a pinned export of stopped saved files

`POST /v1/research-workspaces/{id}/files/export`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/v1/research-workspaces/{id}/files/export`
- Auth: HTTP bearer

Requires stopped compute, no active transfer and the observed current revision. Repeating the same live revision reuses its fixed 24-hour export. Does not start compute or require credits. Concatenate segments in manifest order and verify their hashes and the complete archive before publishing the local file. Saved files use version 3 storage.

## Path parameters

- `id` string, required

## Request body

- ResearchWorkspaceFileRevision
  - `storage_revision` integer, required: Observed saved-file revision, required to guard the selected export or deletion.

## Response `200`

First page of a pinned saved-file export

- ResearchWorkspaceFileExport
  - `id` string, uuid, required
  - `workspace_id` string, required
  - `storage_revision` integer, required
  - `format` 'research-archive-v3', required
  - `expires_at` string, date-time, required: Fixed expiry of the retained export revision, 24 hours after admission.
  - `urls_expire_at` string, date-time, required: Earliest signed URL expiry on this page, at most 15 minutes. Read the page again for fresh URLs.
  - `manifest` WorkspaceArchiveManifest, required: Version 3 canonical workspace archive commitment, limited to 16 MiB of manifest JSON. Requires a qualified archive writer. Arbitrary tar, zip or compressed bytes are not accepted. The archive permits ordered regular files, directories and confined symbolic links, with at most 10 GB of payload and 512 MiB of archive metadata. Verification checks the complete archive and inventory before replacing saved files.
    - `version` 3, required
    - `archive_sha256` string, required
    - `archive_bytes` integer, required
    - `inventory` WorkspaceArchiveInventory, required
      - `sha256` string, required: Versioned inventory digest derived from ordered paths, file bytes and metadata. The server verifies it against the uploaded archive.
      - `payload_bytes` integer, required
      - `entries` integer, required
    - `segments` WorkspaceArchiveSegment[], required
      - `sha256` string, required
      - `offset` integer, required
      - `bytes` integer, required
  - `segments` ResearchWorkspaceExportSegment[], required
    - `index` integer, required
    - `sha256` string, required
    - `offset` integer, required
    - `bytes` integer, required
    - `url` string, uri, required: Short-lived signed HTTPS object URL. Do not forward Nodus authentication or cookies to this URL.
    - `download_path` string, required: Authenticated API-relative path for downloading this segment without cross-origin browser requests.
  - `next_offset` integer: Read the next page at this offset. Omitted on the final page.

## Other responses

- `default`: 404 for an unavailable owned workspace or export, 409 for stale revision, active compute, pending transfer, empty files or legacy format, 410 for expired export, 429 for too many retained export revisions, and 503 for temporary storage failures. Authentication and rate limits apply. No credit balance is required.

---

[API](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api.md) - [All operations](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/revisions/a59210899d95?raw)
