---
title: "Read a saved knowledge document version"
method: GET
path: "/api/knowledge/{id}/history/{versionId}"
tags: ["Knowledge"]
---

# Read a saved knowledge document version

`GET /api/knowledge/{id}/history/{versionId}`

## Request

- Base URL: `https://core-api.getaptly.com`
- URL: `https://core-api.getaptly.com/api/knowledge/{id}/history/{versionId}`
- Auth: one of:
  - API key in header `x-token`
  - API key in header `Authorization`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/getaptly/apis/aptly-api/docs/api/knowledge/:id/history/:versionId/get.ts> (a function with typed inputs; its response is checked against the schema)

Reads retained saved snapshots of a non-archived knowledge document. Partner tokens require knowledge-docs; API keys or delegate tokens use knowledge read access. Delegate callers must remain active company members and currently be able to view the document; membership, document and team authorization use primary reads. API keys and partner tokens are company-scoped. Archived, deleted, or inaccessible documents return 404. There is no archived override. Snapshots older than the current document creation time are excluded so a reused document ID cannot expose a deleted document history. These are saved versions, not unsaved drafts or a complete edit audit: rapid saves may merge and older history may be pruned (normally 50 versions retained). savedBy records the saver, not necessarily the author of every passage; Hiro before/after snapshots both name the approver. No restore or mutation is performed. Returns historical metadata and read-only top-level text blocks, up to 20 blocks and 20,000 text characters per page. Each block is capped at 10,000 characters with explicit truncation; specialized blocks may omit non-text/formatting details. offset/nextOffset count blocks. No editable flags or current editing-version token are returned. Unsupported legacy snapshots return 400. The top-level name is the current title; snapshot.name is the historical title. Any document link opens the current document.

## Path parameters

- `id` string, required
- `versionId` string, required

## Query parameters

- `companyId` string
- `offset` integer

## Response `200`

Saved history. Nullable fields and nextOffset: null are preserved.

- KnowledgeHistoryDetail
  - `documentId` string
  - `name` string
  - `note` string
  - `nextOffset` integer, nullable: Pass as offset to continue; null means this result is complete.
  - `snapshot` KnowledgeHistoryVersion
    - `versionId` string
    - `name` string, nullable
    - `savedAt` string, date-time, nullable
    - `savedBy` string, nullable
    - `savedByName` string, nullable
    - `conduit` string, nullable: hiro identifies a save through Hiro. Saver attribution is not proof of passage authorship.
    - `emoji` string, nullable
    - `iconUrl` string, nullable
    - `iconFileId` string, nullable
    - `coverId` string, nullable
    - `coverUrl` string, nullable
  - `readOnly` true
  - `total` integer: Total top-level blocks in this snapshot.
  - `blocks` object[]
    - `id` string
    - `type` string
    - `text` string
    - `truncated` boolean: Block text exceeded 10,000 characters; the rest is not returned.
    - `commented` boolean

## Other responses

- `400`: Invalid filters/pagination, or (detail only) an unsupported historical content format.
- `401`: Missing or invalid authentication.
- `403`: Credential lacks knowledge read access.
- `404`: Document inaccessible, archived, or absent; or the requested version does not belong to this document and company.

---

[API](https://skmtc.dev/getaptly/apis/aptly-api.md) - [All operations](https://skmtc.dev/getaptly/apis/aptly-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getaptly/apis/aptly-api/revisions/75c367e0b8e5?raw)
