---
title: "Update forum post"
method: PATCH
path: "/forum_posts/{id}"
tags: ["Forum posts"]
---

# Update forum post

`PATCH /forum_posts/{id}`

Edit the content, attachments, pinned status, or visibility of an existing forum post or comment.

## Path parameters

- `id` string, required

## Request body

- object — Parameters for UpdateForumPost
  - `attachments` object[], nullable — A replacement list of file attachments for this post, such as images or videos.
    - `id` string, required — The ID of an existing file object.
  - `content` string, nullable — The updated body of the post in Markdown format. For example, 'Check out this **update**'. Hidden if the post is paywalled and the viewer has not purchased access.
  - `is_pinned` boolean, nullable — Whether this post should be pinned to the top of the forum. Only top-level posts can be pinned, not comments.
  - `title` string, nullable — The updated title of the post, displayed prominently at the top. Required for paywalled posts as it remains visible to non-purchasers.
  - `visibility` 'members_only' | 'globally_visible' — The visibility types for forum posts

## Response `200`

A successful response

- ForumPost — A post or comment in a forum feed, supporting rich text, attachments, polls, and reactions.
  - `attachments` object[], required — All file attachments on this post, such as images, documents, and videos.
    - `content_type` string, nullable, required — Uploaded file MIME type, such as image/jpeg, video/mp4, or audio/mpeg.
    - `filename` string, nullable, required — The original filename of the uploaded attachment, including its file extension.
    - `id` string, required — Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an ID.
    - `url` string, nullable, required — A pre-optimized URL for rendering this attachment on the client. This should be used for displaying attachments in apps.
  - `comment_count` integer, required — The total number of direct comments on this post.
  - `content` string, nullable, required — The body of the forum post in Markdown format. Null if the post is paywalled and the current user does not have access.
  - `created_at` string, date-time, required — The time this post was created, as a Unix timestamp.
  - `id` string, required — Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an ID.
  - `is_edited` boolean, required — Whether this post has been edited after its initial creation.
  - `is_pinned` boolean, required — Whether this post is pinned to the top of the forum feed.
  - `is_poster_admin` boolean, required — Whether the author of this post is an admin of the company that owns the forum.
  - `like_count` integer, nullable, required — The total number of like reactions this post has received.
  - `parent_id` string, nullable, required — The unique identifier of the parent post. Null if this is a top-level post.
  - `title` string, nullable, required — The headline of the forum post. Null if the post has no title.
  - `updated_at` string, date-time, required — The time this post was last updated, as a Unix timestamp.
  - `user` object, required — The user who authored this forum post.
    - `id` string, required — The unique identifier for the user.
    - `name` string, nullable, required — The user's display name shown on their public profile.
    - `username` string, required — The user's unique username shown on their public profile.
  - `view_count` integer, nullable, required — The total number of times this post has been viewed by users.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `422` — Verification required
- `429` — Too many requests
- `500` — Internal server error

---

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