---
title: "Create a post"
method: POST
path: "/posts"
---

# Create a post

`POST /posts`

## Request

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

Create a new feature request. Posts are created with PENDING status by default.

## Request body

- object
  - `title` string, required: Post title (required, max 200 chars)
  - `description` string, nullable
  - `status` 'PENDING' | 'APPROVED' | 'IN_PROGRESS' | 'COMPLETE' | 'CLOSED' | 'ARCHIVED'
  - `tagIds` string[]: Array of tag IDs to attach
  - `metadata` object, nullable: Private context. Replaces the object; null clears it. Omitted from public responses; available to secret-key APIs and trusted admin webhooks.
  - `createdByBoardUserId` string: Must belong to this project.

## Response `201`

Post created

- object
  - `data` Post
    - `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

## Other responses

- `400`: Validation error

---

[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)
