Skip to content
Dashboard

Update a post

client.feedback.posts.update(stringid, PostUpdateParams { assigneeId, author, boardId, 13 more } params, RequestOptionsoptions?): Post { id, access, assigneeId, 20 more }
PATCH/v2/posts/{id}

Updates an existing post. Only provided fields will be modified.

Updatable Fields

  • title - Post title (minimum 2 characters)
  • content - Post content in HTML format
  • boardId - Move post to a different board
  • statusId - Update post status
  • tags - Replace existing tags with new set
  • commentsEnabled - Enable/disable comments
  • inReview - Put post in/out of moderation queue
  • customFields - Update custom field values
  • eta - Set estimated completion date (null to clear)
  • createdAt - Update creation date (for backdating)
  • assigneeId - Admin ID to assign this post to (null to unassign)
  • visibility - Post-level visibility restriction: ‘public’ (no additional restrictions), ‘authorOnly’ (only author and admins), or ‘companyOnly’ (only users in author’s company). Note: even ‘public’ posts are still subject to board-level and organization-level access controls.
  • author - Change post attribution (id, userId, email, name, profilePicture)

Status Update Notifications

  • sendStatusUpdateEmail - When changing status, optionally send email notification to voters (default: false)

Response

Returns the updated post object with all fields populated.

ParametersExpand Collapse
id: string

Post unique identifier

params: PostUpdateParams { assigneeId, author, boardId, 13 more }
assigneeId?: string | null

Body param: Admin ID to assign this post to (null to unassign)

author?: AuthorInput { id, email, name, 2 more }

Body param: Author to attribute the post to. If not provided, uses the authenticated user. Supports multiple identification methods: id (Featurebase ID), userId (external SSO ID), or email.

id?: string

Featurebase user ID to attribute content to

email?: string

Author email (used to find or create user)

formatemail
name?: string

Author display name

maxLength255
profilePicture?: string

Author profile picture URL

userId?: string

External user ID from your system (matched via SSO)

maxLength255
boardId?: string

Body param: Board ID to move post to

commentsEnabled?: boolean | null

Body param: Whether comments are enabled on this post

content?: string

Body param: Post content (HTML)

createdAt?: string | null

Body param: Creation date (for backdating)

customFields?: Record<string, Array<string> | boolean | number | 2 more>

Body param: Custom field values. Keys must be valid ObjectIds. Values can be: string, boolean, number, ISO date string, array of strings, ObjectId string, or null.

One of the following:
Array<string>
boolean
number
string
string | null
eta?: string | null

Body param: Estimated completion date (null to clear)

inReview?: boolean | null

Body param: Whether post is pending moderation

sendStatusUpdateEmail?: boolean | null

Body param: Whether to send status update email to voters

statusId?: string

Body param: Status ID to set

tags?: string | Array<string>

Body param: Tag names to set (replaces existing)

One of the following:
string
Array<string>
title?: string

Body param: Post title

minLength2
maxLength512
upvotes?: number | null

Body param: Set the upvotes count directly. Use with caution as this overrides the actual vote count.

minimum0
visibility?: "public" | "authorOnly" | "companyOnly"

Body param: Post visibility. ‘public’ = visible to all users, ‘authorOnly’ = only visible to the author and admins, ‘companyOnly’ = only visible to users in the same company as the author

One of the following:
"public"
"authorOnly"
"companyOnly"
featurebaseVersion?: "2026-01-01.nova" | "2025-12-12.clover"

Header param: API version for this request. Defaults to your organization’s configured API version if not specified.

One of the following:
"2026-01-01.nova"
"2025-12-12.clover"
ReturnsExpand Collapse
Post { id, access, assigneeId, 20 more }
id: string

Unique identifier

access: Access { companyExternalIds, userIds }
companyExternalIds: Array<string>

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.

userIds: Array<string>

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.

assigneeId: string | null

ID of the admin assigned to this post, null if unassigned

author: Author | null
id: string | null

Author unique identifier

email: string | null

Author email (if available)

name: string

Author display name

profilePicture: string | null

Author profile picture URL

type: "admin" | "customer" | "guest" | 3 more

Type of user who authored the post

One of the following:
"admin"
"customer"
"guest"
"integration"
"bot"
"lead"
boardId: string

Board (category) ID this post belongs to

commentCount: number

Total number of comments

content: string

Post content in HTML format

createdAt: string

ISO 8601 timestamp when created

customFields: Record<string, unknown>

Custom field values keyed by field ID

eta: string | null

Estimated completion time as ISO 8601 timestamp, null if not set

features: Features { commentsEnabled }
commentsEnabled: boolean

Whether comments are allowed on this post

inReview: boolean

Whether the post is pending moderation review

integrations: Integrations { clickup, devops, github, 4 more }

Third-party integration links associated with this post

clickup: Array<Clickup>
id: string

ClickUp task ID

title: string

ClickUp task title

url: string

URL to the ClickUp task

devops: Array<Devop>
id: number

Azure DevOps work item ID

projectId: string

Azure DevOps project ID

projectName: string

Azure DevOps project name

title: string

Work item title

url: string

URL to the work item

github: Array<GitHub>
id: string

GitHub issue ID

number: string

GitHub issue number

repositoryFullName: string

Full repository name (owner/repo)

repositoryName: string

Repository name

title: string

GitHub issue title

url: string

URL to the GitHub issue

hubspot: Array<Hubspot>
dealAmount: number | null

Deal amount (for DEAL type)

dealClosed: boolean | null

Whether the deal is closed (for DEAL type)

objectId: number

HubSpot object ID

type: "TICKET" | "DEAL" | "CONTACT"

HubSpot object type

One of the following:
"TICKET"
"DEAL"
"CONTACT"
jira: Array<Jira>
issueId: string

Jira issue ID

issueUrl: string | null

URL to the Jira issue

linear: Array<Linear>
issueId: string

Linear issue ID

issueUrl: string | null

URL to the Linear issue

salesforce: Array<Salesforce>
amount: number | null

Opportunity amount (for Opportunity type)

isClosed: boolean | null

Whether the opportunity is closed (for Opportunity type)

objectId: string

Salesforce record ID

objectType: "Opportunity" | "Case"

Salesforce object type

One of the following:
"Opportunity"
"Case"
isPinned: boolean

Whether the post is pinned to the top

object: "post"

Object type identifier

opportunityAmount: number | null

Total opportunity amount from linked HubSpot deals and Salesforce opportunities

postUrl: string

Full URL to view the post

slug: string

URL-friendly slug

status: PostStatus { id, color, isDefault, 3 more }
id: string

Unique identifier

color: string

Color for UI display

isDefault: boolean

Whether this is the default status for new posts

name: string

Display name

object: "post_status"

Object type identifier

type: "reviewing" | "unstarted" | "active" | 2 more

The workflow stage this status represents

One of the following:
"reviewing"
"unstarted"
"active"
"completed"
"canceled"
tags: Array<Tag>

Tags attached to this post

id: string

Tag unique identifier

color: string | null

Tag color hex code

name: string

Tag name

title: string

Post title

updatedAt: string

ISO 8601 timestamp when last modified

upvotes: number

Total number of upvotes

Update a post

import Featurebase from 'featurebase-node';

const client = new Featurebase({
  apiKey: process.env['FEATUREBASE_API_KEY'], // This is the default and can be omitted
});

const post = await client.feedback.posts.update('507f1f77bcf86cd799439011');

console.log(post.id);
{
  "id": "507f1f77bcf86cd799439011",
  "access": {
    "companyExternalIds": [
      "string"
    ],
    "userIds": [
      "string"
    ]
  },
  "assigneeId": "507f1f77bcf86cd799439013",
  "author": {
    "id": "507f1f77bcf86cd799439011",
    "email": "john@example.com",
    "name": "John Doe",
    "profilePicture": "https://cdn.example.com/avatars/john.png",
    "type": "customer"
  },
  "boardId": "507f1f77bcf86cd799439011",
  "commentCount": 5,
  "content": "<p>It would be great to have a dark mode option for the dashboard.</p>",
  "createdAt": "2023-12-12T00:00:00.000Z",
  "customFields": {
    "cf_priority": "bar",
    "cf_effort": "bar"
  },
  "eta": "2025-01-01T00:00:00.000Z",
  "features": {
    "commentsEnabled": true
  },
  "inReview": false,
  "integrations": {
    "clickup": [
      {
        "id": "86a1b2c3d",
        "title": "Add dark mode support",
        "url": "https://app.clickup.com/t/86a1b2c3d"
      }
    ],
    "devops": [
      {
        "id": 1234,
        "projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "projectName": "My Project",
        "title": "Add dark mode support",
        "url": "https://dev.azure.com/org/project/_workitems/edit/1234"
      }
    ],
    "github": [
      {
        "id": "1234567890",
        "number": "42",
        "repositoryFullName": "acme/backend",
        "repositoryName": "backend",
        "title": "Add dark mode support",
        "url": "https://github.com/acme/backend/issues/42"
      }
    ],
    "hubspot": [
      {
        "dealAmount": 5000,
        "dealClosed": false,
        "objectId": 123456789,
        "type": "TICKET"
      }
    ],
    "jira": [
      {
        "issueId": "10042",
        "issueUrl": "https://myteam.atlassian.net/browse/PROJ-123"
      }
    ],
    "linear": [
      {
        "issueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "issueUrl": "https://linear.app/team/issue/ENG-123"
      }
    ],
    "salesforce": [
      {
        "amount": 25000,
        "isClosed": false,
        "objectId": "006Dn00000Abcdef",
        "objectType": "Opportunity"
      }
    ]
  },
  "isPinned": false,
  "object": "post",
  "opportunityAmount": 30000,
  "postUrl": "https://feedback.example.com/p/add-dark-mode-support",
  "slug": "add-dark-mode-support",
  "status": {
    "id": "507f1f77bcf86cd799439011",
    "color": "Blue",
    "isDefault": false,
    "name": "In Progress",
    "object": "post_status",
    "type": "active"
  },
  "tags": [
    {
      "id": "507f1f77bcf86cd799439011",
      "color": "#FF5722",
      "name": "bug"
    }
  ],
  "title": "Add dark mode support",
  "updatedAt": "2023-12-13T00:00:00.000Z",
  "upvotes": 42
}
Returns Examples
{
  "id": "507f1f77bcf86cd799439011",
  "access": {
    "companyExternalIds": [
      "string"
    ],
    "userIds": [
      "string"
    ]
  },
  "assigneeId": "507f1f77bcf86cd799439013",
  "author": {
    "id": "507f1f77bcf86cd799439011",
    "email": "john@example.com",
    "name": "John Doe",
    "profilePicture": "https://cdn.example.com/avatars/john.png",
    "type": "customer"
  },
  "boardId": "507f1f77bcf86cd799439011",
  "commentCount": 5,
  "content": "<p>It would be great to have a dark mode option for the dashboard.</p>",
  "createdAt": "2023-12-12T00:00:00.000Z",
  "customFields": {
    "cf_priority": "bar",
    "cf_effort": "bar"
  },
  "eta": "2025-01-01T00:00:00.000Z",
  "features": {
    "commentsEnabled": true
  },
  "inReview": false,
  "integrations": {
    "clickup": [
      {
        "id": "86a1b2c3d",
        "title": "Add dark mode support",
        "url": "https://app.clickup.com/t/86a1b2c3d"
      }
    ],
    "devops": [
      {
        "id": 1234,
        "projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "projectName": "My Project",
        "title": "Add dark mode support",
        "url": "https://dev.azure.com/org/project/_workitems/edit/1234"
      }
    ],
    "github": [
      {
        "id": "1234567890",
        "number": "42",
        "repositoryFullName": "acme/backend",
        "repositoryName": "backend",
        "title": "Add dark mode support",
        "url": "https://github.com/acme/backend/issues/42"
      }
    ],
    "hubspot": [
      {
        "dealAmount": 5000,
        "dealClosed": false,
        "objectId": 123456789,
        "type": "TICKET"
      }
    ],
    "jira": [
      {
        "issueId": "10042",
        "issueUrl": "https://myteam.atlassian.net/browse/PROJ-123"
      }
    ],
    "linear": [
      {
        "issueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "issueUrl": "https://linear.app/team/issue/ENG-123"
      }
    ],
    "salesforce": [
      {
        "amount": 25000,
        "isClosed": false,
        "objectId": "006Dn00000Abcdef",
        "objectType": "Opportunity"
      }
    ]
  },
  "isPinned": false,
  "object": "post",
  "opportunityAmount": 30000,
  "postUrl": "https://feedback.example.com/p/add-dark-mode-support",
  "slug": "add-dark-mode-support",
  "status": {
    "id": "507f1f77bcf86cd799439011",
    "color": "Blue",
    "isDefault": false,
    "name": "In Progress",
    "object": "post_status",
    "type": "active"
  },
  "tags": [
    {
      "id": "507f1f77bcf86cd799439011",
      "color": "#FF5722",
      "name": "bug"
    }
  ],
  "title": "Add dark mode support",
  "updatedAt": "2023-12-13T00:00:00.000Z",
  "upvotes": 42
}