---
title: "Get one skill revision's content snapshot."
method: GET
path: "/v1/skills/{id}/revisions/{version}"
tags: ["skills"]
---

# Get one skill revision's content snapshot.

`GET /v1/skills/{id}/revisions/{version}`

## Request

- Base URL: `http://localhost:8080`
- URL: `http://localhost:8080/v1/skills/{id}/revisions/{version}`
- Auth: one of:
  - API key in cookie `dvt_session`
  - HTTP bearer

Returns the content snapshot (name, description, whenToUse, whoFor, howToApply, body) recorded at the given version — for rendering a restore diff of what a restore of this version would change vs. the current skill (DVT-1010). `visibility`, `slug`, and `sectionId` are not included: they are never restorable content. Read access follows the skill itself — requires `skill:read` plus the same per-resource read authorization as GET /v1/skills/{id}.

## Response `200`

The revision's content snapshot.

- SkillRevisionDetailEnvelope
  - `data` SkillRevisionDetail, required: One skill revision's full content snapshot plus its header — the payload for a restore diff (DVT-1010). Content fields only; visibility/slug/sectionId are never restorable content and are omitted.
    - `version` integer, required
    - `name` string, required
    - `description` string, required
    - `whenToUse` string, required
    - `whoFor` string, required
    - `howToApply` string, required
    - `body` string, required
    - `changeSummary` string
    - `actorType` 'user' | 'agent' | 'system', required
    - `createdAt` string, date-time, required
  - `meta` Meta, required: Response metadata.
    - `requestId` string, required: Correlates with the X-Request-Id header.
    - `total` integer: Item count, present on collection responses.
    - `nextCursor` string, nullable: Opaque keyset-pagination cursor, present on paginated responses (e.g. GET /v1/dashboards) when more rows exist beyond this page. Pass it back as the `cursor` query param to fetch the next page; absent or null on the last page.
    - `roleResolveDegraded` boolean: Snowflake mode only (DVT-2260), on GET /v1/dashboards: present and true when the caller's live Snowflake role resolution failed or was unavailable — role-shared dashboards may be missing from this page. Omitted (not merely false) whenever resolution succeeded or the role-share arm does not apply (off snowflake mode, an org admin/owner, or off the ingress listener).

## Other responses

- `400`: Malformed request.
- `401`: Missing, invalid, or expired session.
- `403`: The caller's role does not permit this action.
- `404`: Resource does not exist.

---

[API](https://skmtc.dev/dvt/apis/dvt-rest-api.md) · [All operations](https://skmtc.dev/dvt/apis/dvt-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dvt/apis/dvt-rest-api/revisions/00016f504165?raw)
