---
title: "Get post detail"
method: GET
path: "/posts/{id}"
tags: ["Posts"]
---

# Get post detail

`GET /posts/{id}`

Returns a single post by ID including media URLs.

## Path parameters

- `id` string, required

## Response `200`

Post detail with media

- object
  - `data` object, required
    - `id` string, required
    - `workspaceId` string, required
    - `pageId` string, required
    - `type` string, required
    - `classification` string, required
    - `plainText` string, required
    - `createdAt` string, date-time, required
    - `gridPosition` number
    - `campaignId` string, nullable, required
    - `media` string[], required — Up to 20 public image or video URLs, each max 100MB. Files are downloaded server-side from the provided URLs.
    - `scheduledAt` string, date-time, nullable, required
    - `status` string, required
    - `approved` boolean, required
    - `approvedBy` object[]
      - `userId` string, required
      - `approvedAt` string, date-time, required
      - `levelId` string
    - `approval` object, required
      - `status` 'NOT_APPLICABLE' | 'NEVER_SENT' | 'PENDING' | 'PARTIALLY_APPROVED' | 'FULLY_APPROVED', required
      - `approved` boolean, required
      - `type` 'NONE' | 'OPTIONAL' | 'REQUIRED' | 'MULTIPLE', required
      - `completedLevels` integer, required
      - `totalLevels` integer, required
      - `currentLevelId` string
      - `levels` object[], required
        - `id` string, required
        - `label` string, required
        - `approved` boolean, required
        - `approvedBy` object[], required
          - `userId` string, required
          - `approvedAt` string, date-time, required
          - `levelId` string
    - `published` boolean, required
    - `scheduledSet` boolean, required
    - `teamOnly` boolean, required
    - `archived` boolean, required
    - `modifiedAt` string, date-time
    - `mediaType` string
    - `videoThumbnailUrl` string, uri — Current thumbnail (cover) URL of the post video, when the post has a video with a thumbnail.
    - `labels` object[]
      - `uuid` string, required
      - `text` string, required
      - `color` string, required
    - `commentsCounter` number, required
    - `notesCounter` number, required
    - `publicShareLink` string, uri
    - `publishedPostLink` string, uri
    - `groupId` string
    - `groupPageIds` string[]
    - `groupSync` boolean
    - `pinterest` object
      - `boardId` string, required
      - `boardName` string, required
      - `title` string, nullable, required
      - `link` string, nullable, required
      - `description` string, nullable, required

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Post not found
- `429` — Rate limit exceeded
- `500` — Internal server error

---

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