---
title: "Get Deck"
method: GET
path: "/decks/{deck_id}"
tags: ["decks"]
---

# Get Deck

`GET /decks/{deck_id}`

## Request

- Base URL: `https://api.presentations.ai/api/v1`
- URL: `https://api.presentations.ai/api/v1/decks/{deck_id}`
- Auth: HTTP bearer

Fetch deck metadata, latest generation status, and existing export artifacts.

## Path parameters

- `deck_id` string, uuid, required

## Response `200`

Successful Response

- DeckDetailResponse: Deck metadata plus its latest generation state and previously produced artifacts.
  - `id` string, uuid, required
  - `workspace_id` string, uuid, required
  - `project_id` string, uuid, nullable, required
  - `source_deck_id` string, uuid, nullable
  - `legacy_deck_id` string, nullable
  - `created_by` string, uuid, nullable, required
  - `name` string, required
  - `visibility` 'PROJECT' | 'PRIVATE' | 'WORKSPACE' | 'PUBLIC', required: Default access mode for a deck.
  - `thumbnail_url` string, nullable, required
  - `thumbnails` Thumbnail[], required: Every stored size of the same render, largest first (`thumbnails[0]` is `thumbnail_url`). Empty until the first render.
    - `url` string, required
    - `width` integer, required
    - `height` integer, required
  - `has_share_link` boolean
  - `archived_at` string, date-time, nullable, required
  - `deleted_at` string, date-time, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `flags` DeckFlagType[]
  - `version` string, nullable: Active content version: v1 | v2 | null (authored in-app)
  - `origin_version` string, nullable: Version this deck was migrated from; null if authored in-app.
  - `permissions` DeckPermissions: Caller's resolved access to one deck.
    - `workspace_role` 'OWNER' | 'ADMIN' | 'MEMBER' | 'GUEST', required: Workspace membership role; higher roles subsume lower ones for hierarchy checks.
    - `project_role` 'LEAD' | 'EDITOR' | 'VIEWER', required: Project membership role.
    - `deck_grant_role` 'VIEW' | 'COMMENT' | 'EDIT', required: Per-deck grant role for sharing decks independently of project membership.
    - `is_creator` boolean, required
    - `capabilities` Capability[], required
  - `shared_with_me` boolean, nullable
  - `status` 'CREATED' | 'RUNNING' | 'COMPLETED' | 'FAILED', required: Lifecycle state of an async task.
  - `exports` ExternalDeckExportResponse[], required: Previously produced artifacts with download URLs. This read never queues or creates an export.
    - `id` string, uuid, required
    - `deck_id` string, uuid, required
    - `format` 'PPTX' | 'PDF' | 'IMAGE', required: Artifact format produced by the converter (PPTX) or the renderer (PDF/IMAGE).
    - `content_type` string, required
    - `size_bytes` integer, required
    - `download_url` string, required
    - `created_at` string, date-time, required

## Other responses

- `401`: Missing, malformed, expired, or revoked Bearer API key.
- `403`: The API key, workspace role, project scope, or plan lacks permission.
- `404`: The resource does not exist or is outside the caller's scope.
- `422`: A path, query, header, or request-body field failed validation.
- `429`: The caller exceeded the API rate limit.
- `500`: Unexpected server failure. Retry only idempotent operations and retain trace_id.

---

[API](https://skmtc.dev/presentations/apis/presentation-services-api.md) · [All operations](https://skmtc.dev/presentations/apis/presentation-services-api/llms.txt) · [OpenAPI document](https://skmtc.dev/presentations/apis/presentation-services-api/revisions/da06cb2e2f32?raw)
