# List all posts Returns all posts (feedback submissions) for the authenticated organization. Posts are user-submitted feedback items. Each post belongs to a board and can have: - Status (in progress, complete, etc.) - Tags for categorization - Upvotes from users - Comments (if enabled) - Custom field values ### Pagination This endpoint uses cursor-based pagination: - limit - Number of posts to return (1-100, default 10) - cursor - Opaque cursor from a previous response's nextCursor field Example: To paginate through results: 1. First request: GET /v2/posts?limit=10 2. If nextCursor is not null, use it for the next page 3. Next request: GET /v2/posts?limit=10&cursor={nextCursor} ### Response Format Returns a list object with: - object - Always "list" - data - Array of post objects - nextCursor - Cursor for the next page (null if no more results) ### Filtering Filter posts using query parameters: - boardId - Filter by board (category) ID - statusId - Filter by status ID - tags - Filter by tag names (can be comma-separated or repeated) - q - Search query for title/content - inReview - Include posts pending moderation ### Sorting Use sortBy to sort results: - createdAt - Sort by creation date (default) - upvotes - Sort by vote count - trending - Sort by trending score - recent - Sort by most recently updated Endpoint: GET /v2/posts 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" ## Query parameters: - `limit` (integer) A limit on the number of posts to be returned, between 1 and 100. Example: 10 - `cursor` (string) An opaque cursor for pagination. Use the nextCursor value from a previous response to fetch the next page of results. Example: "eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9" - `boardId` (any) Filter by board (category) ID(s) Example: "507f1f77bcf86cd799439011" - `statusId` (any) Filter by status ID(s) Example: "507f1f77bcf86cd799439012" - `tags` (any) Filter by tag names Example: ["bug","feature"] - `q` (string) Search query to filter posts by title/content Example: "dark mode" - `inReview` (boolean,null) Include posts that are in review Example: true - `sortBy` (string) Sort order for posts Enum: "createdAt", "upvotes", "trending", "recent" - `sortOrder` (string) Sort direction Enum: "asc", "desc" ## Response 200 fields (application/json): - `object` (string, required) Object type identifier Enum: "list" - `data` (array, required) Array of posts Example: [] - `data.id` (string, required) Unique identifier Example: "507f1f77bcf86cd799439011" - `data.slug` (string, required) URL-friendly slug Example: "add-dark-mode-support" - `data.postUrl` (string, required) Full URL to view the post Example: "https://feedback.example.com/p/add-dark-mode-support" - `data.title` (string, required) Post title Example: "Add dark mode support" - `data.content` (string, required) Post content in HTML format Example: "

It would be great to have a dark mode option for the dashboard.

" - `data.boardId` (string, required) Board (category) ID this post belongs to Example: "507f1f77bcf86cd799439011" - `data.author` (object,null, required) - `data.author.id` (string,null, required) Author unique identifier Example: "507f1f77bcf86cd799439011" - `data.author.name` (string, required) Author display name Example: "John Doe" - `data.author.email` (string,null, required) Author email (if available) Example: "john@example.com" - `data.author.profilePicture` (string,null, required) Author profile picture URL Example: "https://cdn.example.com/avatars/john.png" - `data.author.type` (string, required) Type of user who authored the post Enum: "admin", "customer", "guest", "integration", "bot", "lead" - `data.status` (object, required) - `data.status.name` (string, required) Display name Example: "In Progress" - `data.status.color` (string, required) Color for UI display Example: "Blue" - `data.status.type` (string, required) The workflow stage this status represents Enum: "reviewing", "unstarted", "active", "completed", "canceled" - `data.status.isDefault` (boolean, required) Whether this is the default status for new posts - `data.tags` (array, required) Tags attached to this post Example: [{"id":"507f1f77bcf86cd799439011","name":"bug","color":"#FF5722"}] - `data.tags.id` (string, required) Tag unique identifier Example: "507f1f77bcf86cd799439011" - `data.tags.name` (string, required) Tag name Example: "bug" - `data.tags.color` (string,null, required) Tag color hex code Example: "#FF5722" - `data.features` (object, required) - `data.features.commentsEnabled` (boolean, required) Whether comments are allowed on this post Example: true - `data.upvotes` (number, required) Total number of upvotes Example: 42 - `data.commentCount` (number, required) Total number of comments Example: 5 - `data.inReview` (boolean, required) Whether the post is pending moderation review - `data.isPinned` (boolean, required) Whether the post is pinned to the top - `data.access` (object, required) - `data.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: [] - `data.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: [] - `data.assigneeId` (string,null, required) ID of the admin assigned to this post, null if unassigned Example: "507f1f77bcf86cd799439013" - `data.eta` (string,null, required) Estimated completion time as ISO 8601 timestamp, null if not set Example: "2025-01-01T00:00:00.000Z" - `data.customFields` (object, required) Custom field values keyed by field ID Example: {"cf_priority":"high","cf_effort":3} - `data.createdAt` (string, required) ISO 8601 timestamp when created Example: "2023-12-12T00:00:00.000Z" - `data.updatedAt` (string, required) ISO 8601 timestamp when last modified Example: "2023-12-13T00:00:00.000Z" - `nextCursor` (string,null, required) Cursor for fetching the next page (cursor-based pagination) Example: "eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9" - `pagination` (object) Pagination metadata for page-based requests - `pagination.page` (number, required) Current page number Example: 1 - `pagination.limit` (number, required) Items per page Example: 10 - `pagination.total` (number, required) Total number of items Example: 42 - `pagination.totalPages` (number, required) Total number of pages Example: 5 ## 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_cursor" - `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