---
title: "Get a post"
method: GET
path: "/posts/{postId}"
---

# Get a post

`GET /posts/{postId}`

## Request

- Base URL: `https://app.voteship.app/api/v1`
- URL: `https://app.voteship.app/api/v1/posts/{postId}`
- Auth: HTTP bearer

Retrieve a single post with its tags.

## Path parameters

- `postId` string, required

## Response `200`

Post details

- object
  - `data` PostWithTags
    - `id` string
    - `projectId` string
    - `title` string
    - `description` string, nullable
    - `status` 'PENDING' | 'APPROVED' | 'IN_PROGRESS' | 'COMPLETE' | 'CLOSED' | 'ARCHIVED'
    - `voteCount` integer
    - `metadata` object, nullable: Private context. Replaces the object; null clears it. Omitted from public responses; available to secret-key APIs and trusted admin webhooks.
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `tags` Tag[]
      - `id` string
      - `label` string
      - `theme` string
      - `createdAt` string, date-time

## Other responses

- `404`: Post not found

---

[API](https://skmtc.dev/voteship/apis/voteship-api.md) · [All operations](https://skmtc.dev/voteship/apis/voteship-api/llms.txt) · [OpenAPI document](https://skmtc.dev/voteship/apis/voteship-api/revisions/51ab9e650f82?raw)
