---
title: "List post draft versions"
method: GET
path: "/posts/{id}/versions"
tags: ["Posts"]
---

# List post draft versions

`GET /posts/{id}/versions`

List saved draft versions for a post's channel editors, newest first. Each channel with an editor is returned as its own entry with its own `versions` array, `nextCursor`, and optional `error`.

**Pagination:** Each channel paginates independently. To fetch more versions for a channel, call again with `channel` set to that channel and `cursor` set to the `nextCursor` from the previous response. `channel` is required whenever `cursor` is set.

**Errors:** When `channel` is set and that channel has no editor for this post, the endpoint returns `404 NOT_FOUND`. If a single channel's version history fails to load, that channel's entry has an empty `versions` array plus an `error` string — the rest of the response still succeeds.

Use the returned version IDs with `GET /posts/{id}/channels/{channel}/versions/{versionId}` to read the copy of a specific version.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `channel` 'LinkedIn' | 'Facebook' | 'Instagram' | 'TikTok' | 'Discord' | 'Slack' | 'Webflow' | 'YouTubeShorts'
- `limit` integer
- `cursor` string

## Response `200`

Version history grouped by channel

- object
  - `postId` string, uuid, required
  - `channels` object[], required
    - `channel` 'LinkedIn' | 'Facebook' | 'Instagram' | 'TikTok' | 'Discord' | 'Slack' | 'Webflow' | 'YouTubeShorts', required
    - `versions` object[], required
      - `id` string, required — Version ID. Pass to the get version content endpoint.
      - `createdAt` string, date-time, required
      - `authors` object[], required — Workspace users who edited the draft in this version. Empty when Ordinal can't resolve the editor.
        - `id` string, required
        - `firstName` string, nullable, required
        - `lastName` string, nullable, required
        - `email` string, nullable, required
    - `nextCursor` string, nullable, required — Pass as `cursor` (with the same `channel`) to fetch the next page. Null when there are no more versions.
    - `error` string — Present only if this channel's version history failed to load. `versions` will be empty.

## Other responses

- `400` — Bad Request - Invalid input parameters
- `401` — Unauthorized - Missing or invalid API key
- `404` — Not Found - Resource does not exist

---

[API](https://skmtc.net/tryordinal/apis/ordinal-api.md) · [All operations](https://skmtc.net/tryordinal/apis/ordinal-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tryordinal/ordinal-api/revisions/1d0792ff454f/schema)
