---
title: "List Decks"
method: GET
path: "/decks"
tags: ["decks"]
---

# List Decks

`GET /decks`

## Request

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

List accessible decks with project, flag, sort, search, and pagination filters.

Decks that have no slides yet (generation still running, or never completed)
are omitted; fetch those by id.

## Query parameters

- `project_id` string, uuid, nullable
- `flag` 'STARRED': Kinds of per-user deck flag.
- `sort` 'RECENT' | 'NAME' | 'UPDATED' | 'CREATED': Ordering for the deck list query.
- `search` string, nullable
- `page` integer
- `limit` integer

## Response `200`

Successful Response

- PageDeck
  - `data` Deck[], required
    - `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
    - `thumbnails` Thumbnail[]: 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
  - `page` integer, required
  - `limit` integer, required
  - `total` integer, required

## Other responses

- `401`: Missing, malformed, expired, or revoked Bearer API key.
- `403`: The API key, workspace role, project scope, or plan lacks permission.
- `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)
