# Posts Endpoints for creating, reading, updating, and deleting posts, as well as managing comments, likes, bookmarks, and reposts ## Get posts feed - [GET /api/v1/posts](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts/get.md): Returns posts based on various filters. For authenticated users, shows their personalized feed. For unauthenticated users, shows public posts only. Supports filtering by user, owner, tags, lists, bookmarks, and more. Can include comments, translations, and various metadata. ## Create a new post - [POST /api/v1/posts](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts/post.md): Creates a new post with text content. Can be a regular post, article, or other post type. Posts can be public, unlisted, followers-only, or direct messages. Sensitive content requires a content warning. The post is automatically distributed to followers and federated instances. ## Get home feed - [GET /api/v1/posts/feeds/following](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1feeds~1following/get.md): Returns the home feed showing posts from accounts the current user follows. This is the main timeline feed. Supports caching for performance, with fallback to database if cache is empty or regenerating. Can include follow status, bookmarks, and translations. ## Get public posts feed - [GET /api/v1/posts/feeds/public](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1feeds~1public/get.md): Returns a feed of public posts visible to everyone. Can be filtered by owner type, local vs federated posts, and whether to include reposts. Supports various metadata inclusions like follow status, bookmarks, translations, and trends. Also called Discover Feed. ## Get home feed - [GET /api/v1/posts/following](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1following/get.md): Returns the home feed showing posts from accounts the current user follows. This is the main timeline feed. Supports caching for performance, with fallback to database if cache is empty or regenerating. Can include follow status, bookmarks, and translations. ## Get liked posts - [GET /api/v1/posts/liked](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1liked/get.md): Returns all posts that the currently authenticated user has liked. Can be filtered by owner type to show only posts from users, groups, categories, or events. ## Convert markdown to HTML - [PUT /api/v1/posts/markdown2html](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1markdown2html/put.md): Converts markdown formatted text to HTML for preview purposes. Supports standard markdown syntax and returns properly formatted HTML. Useful for previewing how markdown content will appear when rendered in posts or articles. ## Get posts with mentions - [GET /api/v1/posts/mentioned](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1mentioned/get.md): Returns all posts where the currently authenticated user was mentioned. Can be filtered by owner type and privacy level (e.g., to show only direct messages where mentioned). ## Get current user's posts - [GET /api/v1/posts/my](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1my/get.md): Returns all posts created by the currently authenticated user. Can filter for reposts only or bookmarked posts only. Optionally includes comments and bookmark status. ## Get public posts feed - [GET /api/v1/posts/public](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1public/get.md): Returns a feed of public posts visible to everyone. Can be filtered by owner type, local vs federated posts, and whether to include reposts. Supports various metadata inclusions like follow status, bookmarks, translations, and trends. ## Get user's replies - [GET /api/v1/posts/replies](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1replies/get.md): Returns posts that a user has replied to, along with their replies. Shows the original post as the parent with the user's reply nested within it. Useful for viewing a user's conversation participation. ## Get Subscribes - [GET /api/v1/posts/subscribe](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1subscribe/get.md) ## Update post content - [PUT /api/v1/posts/{postId}](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D/put.md): Updates an existing post's content, privacy settings, or metadata. Only the post author can update their own posts. Cannot update comments through this endpoint. Sensitive content must include a content warning. ## Get post by ID - [GET /api/v1/posts/{postId}](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D/get.md): Retrieves a specific post by its ID. Can optionally include comments with configurable depth levels, parent posts for comments, bookmarks, translations, trends, and repost information. Supports building comment trees with specified depth limits. ## Delete a post - [DELETE /api/v1/posts/{postId}](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D/delete.md): Permanently deletes a post. Only the post author can delete their own posts. This action removes the post from all timelines and sends deletion notifications to federated instances. ## Remove bookmark - [DELETE /api/v1/posts/{postId}/bookmark](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1bookmark/delete.md): Removes a post from the authenticated user's bookmarks. Fails if the post was not previously bookmarked. This action is private and does not notify the post author. ## Bookmark a post - [POST /api/v1/posts/{postId}/bookmark](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1bookmark/post.md): Adds a post to the authenticated user's bookmarks for later reading. Bookmarks are private and not visible to other users or the post author. Each post can only be bookmarked once per user. ## Get post comments - [GET /api/v1/posts/{postId}/comments](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1comments/get.md): Retrieves all comments for a specific post. Supports pagination and configurable comment depth levels. Returns an empty list if comments are disabled for the post. Comments are organized in a tree structure based on their reply relationships. ## Create a comment - [POST /api/v1/posts/{postId}/comments](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1comments/post.md): Creates a new comment on a post. Comments can be nested replies to other comments. The authenticated user becomes the comment author. Comments inherit visibility from their parent post. ## Update a comment - [PUT /api/v1/posts/{postId}/comments/{commentId}](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1comments~1%7Bcommentid%7D/put.md): Updates an existing comment's content. Only the comment author can update their own comments. The comment must belong to the specified post. Maintains the comment's position in the thread hierarchy. ## Delete a comment - [DELETE /api/v1/posts/{postId}/comments/{commentId}](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1comments~1%7Bcommentid%7D/delete.md): Permanently deletes a comment from a post. Only the comment author can delete their own comments. The comment must belong to the specified post. Child comments may be affected depending on the platform's threading model. ## Detach repost from original - [POST /api/v1/posts/{postId}/detach](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1detach/post.md): Allows the original post author to detach a repost or quote from their post. This breaks the connection between the repost and the original, typically used when the repost violates the author's wishes or contains inappropriate commentary. ## Downvote a post - [POST /api/v1/posts/{postId}/downvote](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1downvote/post.md): Add a negative vote to a post ## View edit history of a post - [GET /api/v1/posts/{postId}/edits](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1edits/get.md): Retrieves the complete edit history of a post, showing all versions from creation to current state. Each edit includes the text, media, mentions, and timestamp of the change. Useful for transparency and tracking post modifications over time. ## Get post likes - [GET /api/v1/posts/{postId}/likes](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1likes/get.md): Returns a list of users who have liked a specific post. Can include follow relationship status between the viewer and the liking users. Supports pagination for posts with many likes. ## Unlike a post - [DELETE /api/v1/posts/{postId}/likes](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1likes/delete.md): Removes the authenticated user's like from a post. Returns the new total number of likes. Sends unlike notifications and federates the activity. Fails if the post was not previously liked. ## Like a post - [POST /api/v1/posts/{postId}/likes](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1likes/post.md): Adds a like to a post from the authenticated user. Each user can only like a post once. Returns the new total number of likes. Sends like notifications to the post author and federates the activity. ## Refresh the preview card for a post - [POST /api/v1/posts/{postId}/refresh-card](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1refresh-card/post.md): Regenerates the link preview card for a post that contains URLs. Only the post author can refresh the card. This is useful when the linked content has changed and you want to update the preview information. ## Undo a repost - [DELETE /api/v1/posts/{postId}/repost](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1repost/delete.md): Removes your repost or quote of a specific post. This deletes the repost from your timeline and notifies the original author. Only your own reposts can be undone. ## Repost or quote another post - [POST /api/v1/posts/{postId}/repost](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1repost/post.md): Creates a repost (boost) or quote post of someone else's content. Regular reposts simply share the original post, while quotes add your own commentary. Only public posts and public follow-posts can be reposted. You cannot repost a repost. ## Get post reposts - [GET /api/v1/posts/{postId}/reposts](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1reposts/get.md): Returns a list of users who have reposted or quoted a specific post. Can filter by repost type (regular repost vs quote). Includes follow relationship status and supports deduplication of multiple reposts by the same user. ## Subscribe to post notifications - [POST /api/v1/posts/{postId}/subscribe](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1subscribe/post.md): Subscribes the authenticated user to receive notifications for new activity on a post (new comments, edits, etc.). Users cannot subscribe to their own posts as they already receive notifications by default. ## Unsubscribe from post - [DELETE /api/v1/posts/{postId}/subscribe](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1subscribe/delete.md): Removes the subscription for post notifications. The user will no longer receive notifications about new activity on this post. Does not affect notifications already received. ## Track post view - [POST /api/v1/posts/{postId}/track-view](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1track-view/post.md): Records that a user has viewed this post. Used for analytics and engagement metrics. Works for both authenticated and unauthenticated users. ## Translate post content - [POST /api/v1/posts/{postId}/translate](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1translate/post.md): Translates the text content of a post to the specified target language. Can return either plain text or HTML formatted translation. Uses automatic translation services to provide the translation. ## Upvote a post - [POST /api/v1/posts/{postId}/upvote](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1upvote/post.md): Add a positive vote to a post ## Get post votes - [GET /api/v1/posts/{postId}/votes](https://docs.wellesley.social/openapi/posts/paths/~1api~1v1~1posts~1%7Bpostid%7D~1votes/get.md): Returns a summary of votes for a post