# Get a post by ID Retrieves a single post by its unique identifier. Returns the full post object including: - Author information - Current status - Tags - Voting stats - Engagement metrics - Custom field values Endpoint: GET /v2/posts/{id} Version: 2026-01-01.nova Security: bearerAuth ## Header parameters: - `Featurebase-Version` (string) API version for this request. Defaults to your organization's configured API version if not specified. Example: "2026-01-01.nova" ## Path parameters: - `id` (string, required) Post unique identifier Example: "507f1f77bcf86cd799439011" ## Response 200 fields (application/json): - `object` (string, required) Object type identifier Enum: "post" - `id` (string, required) Unique identifier Example: "507f1f77bcf86cd799439011" - `slug` (string, required) URL-friendly slug Example: "add-dark-mode-support" - `postUrl` (string, required) Full URL to view the post Example: "https://feedback.example.com/p/add-dark-mode-support" - `title` (string, required) Post title Example: "Add dark mode support" - `content` (string, required) Post content in HTML format Example: "
It would be great to have a dark mode option for the dashboard.
" - `boardId` (string, required) Board (category) ID this post belongs to Example: "507f1f77bcf86cd799439011" - `author` (object,null, required) - `author.id` (string,null, required) Author unique identifier Example: "507f1f77bcf86cd799439011" - `author.name` (string, required) Author display name Example: "John Doe" - `author.email` (string,null, required) Author email (if available) Example: "john@example.com" - `author.profilePicture` (string,null, required) Author profile picture URL Example: "https://cdn.example.com/avatars/john.png" - `author.type` (string, required) Type of user who authored the post Enum: "admin", "customer", "guest", "integration", "bot", "lead" - `status` (object, required) - `status.name` (string, required) Display name Example: "In Progress" - `status.color` (string, required) Color for UI display Example: "Blue" - `status.type` (string, required) The workflow stage this status represents Enum: "reviewing", "unstarted", "active", "completed", "canceled" - `status.isDefault` (boolean, required) Whether this is the default status for new posts - `tags` (array, required) Tags attached to this post Example: [{"id":"507f1f77bcf86cd799439011","name":"bug","color":"#FF5722"}] - `tags.id` (string, required) Tag unique identifier Example: "507f1f77bcf86cd799439011" - `tags.name` (string, required) Tag name Example: "bug" - `tags.color` (string,null, required) Tag color hex code Example: "#FF5722" - `features` (object, required) - `features.commentsEnabled` (boolean, required) Whether comments are allowed on this post Example: true - `upvotes` (number, required) Total number of upvotes Example: 42 - `commentCount` (number, required) Total number of comments Example: 5 - `inReview` (boolean, required) Whether the post is pending moderation review - `isPinned` (boolean, required) Whether the post is pinned to the top - `access` (object, required) - `access.userIds` (array, required) User IDs explicitly granted access to this post. Empty array means no user-level restrictions (post uses board/org visibility). Non-empty means only these users (plus admins) can see the post. Example: [] - `access.companyExternalIds` (array, required) External company IDs explicitly granted access to this post. Empty array means no company-level restrictions. Non-empty means only users belonging to these companies can see the post. Example: [] - `assigneeId` (string,null, required) ID of the admin assigned to this post, null if unassigned Example: "507f1f77bcf86cd799439013" - `eta` (string,null, required) Estimated completion time as ISO 8601 timestamp, null if not set Example: "2025-01-01T00:00:00.000Z" - `customFields` (object, required) Custom field values keyed by field ID Example: {"cf_priority":"high","cf_effort":3} - `createdAt` (string, required) ISO 8601 timestamp when created Example: "2023-12-12T00:00:00.000Z" - `updatedAt` (string, required) ISO 8601 timestamp when last modified Example: "2023-12-13T00:00:00.000Z" ## Response 400 fields (application/json): - `error` (object, required) - `error.type` (string, required) The type of error returned Enum: "invalid_request_error" - `error.code` (string, required) Machine-readable error code Enum: "invalid_id" - `error.message` (string, required) Human-readable error message Example: "An error occurred" - `error.param` (string) The parameter that caused the error (if applicable) Example: "id" - `error.status` (number, required) HTTP status code Enum: 400 ## Response 404 fields (application/json): - `error` (object, required) - `error.type` (string, required) The type of error returned Enum: "invalid_request_error" - `error.code` (string, required) Machine-readable error code Enum: "post_not_found" - `error.message` (string, required) Human-readable error message Example: "An error occurred" - `error.param` (string) The parameter that caused the error (if applicable) Example: "id" - `error.status` (number, required) HTTP status code Enum: 404