Skip to content
Dashboard

Support

SupportConversations

Conversations are messenger/inbox conversations in your Featurebase organization. Use this endpoint to list and retrieve conversation information.

List conversations
client.support.conversations.list(ConversationListParams { cursor, limit, tagIds, featurebaseVersion } params?, RequestOptionsoptions?): CursorPage<Conversation { id, adminAssigneeId, botConversationStateLastUpdatedAt, 26 more } >
GET/v2/conversations
Create a conversation
client.support.conversations.create(ConversationCreateParams { bodyMarkdown, from, channel, 4 more } params, RequestOptionsoptions?): Conversation { id, adminAssigneeId, botConversationStateLastUpdatedAt, 26 more }
POST/v2/conversations
Get conversation by ID
client.support.conversations.retrieve(stringid, ConversationRetrieveParams { featurebaseVersion } params?, RequestOptionsoptions?): Conversation { id, adminAssigneeId, botConversationStateLastUpdatedAt, 26 more }
GET/v2/conversations/{id}
Delete a conversation
client.support.conversations.delete(stringid, ConversationDeleteParams { featurebaseVersion } params?, RequestOptionsoptions?): ConversationDeleteResponse { id, deleted, object }
DELETE/v2/conversations/{id}
Update a conversation
client.support.conversations.update(stringid, ConversationUpdateParams { actingAdminId, adminAssigneeId, customAttributes, 6 more } params, RequestOptionsoptions?): Conversation { id, adminAssigneeId, botConversationStateLastUpdatedAt, 26 more }
PATCH/v2/conversations/{id}
Reply to a conversation
client.support.conversations.reply(stringid, ConversationReplyParamsparams, RequestOptionsoptions?): ConversationPart
POST/v2/conversations/{id}/reply
Redact a conversation part
client.support.conversations.redact(ConversationRedactParams { conversationId, conversationPartId, type, 2 more } params, RequestOptionsoptions?): Conversation { id, adminAssigneeId, botConversationStateLastUpdatedAt, 26 more }
POST/v2/conversations/redact
ModelsExpand Collapse
Conversation { id, adminAssigneeId, botConversationStateLastUpdatedAt, 26 more }
id: string

Unique conversation identifier

adminAssigneeId: string | null

ID of the assigned admin

botConversationStateLastUpdatedAt: string | null

ISO timestamp when bot state last changed

brandId: string | null

ID of the brand associated with this conversation

createdAt: string

ISO timestamp when conversation was created

hasAdminOverriddenLanguage: boolean

Whether an admin has manually overridden the language for this conversation. When true, automatic language detection is disabled.

isBlocked: boolean

Whether the user is blocked

lastActivityAt: string | null

ISO timestamp of last activity

object: "conversation"

Object type identifier

participants: Array<ConversationParticipant { id, type } >

Participants in this conversation

id: string

Participant ID

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

Type of participant

One of the following:
"customer"
"lead"
"admin"
"bot"
"guest"
"integration"
priority: boolean

Whether this conversation is marked as priority

prioritySetAt: string | null

ISO timestamp when priority was set

snoozedUntil: string | null

ISO timestamp until which conversation is snoozed

state: "open" | "closed" | "snoozed"

Current state of the conversation

One of the following:
"open"
"closed"
"snoozed"
tags: Array<ConversationTag { id, name, type } >

Current tags applied anywhere in this conversation

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

teamAssigneeId: string | null

ID of the assigned team

updatedAt: string

ISO timestamp when conversation was last updated

userPreferredLanguage: string

User’s preferred language

waitingSince: string | null

ISO timestamp when conversation started waiting

awaitingCustomerReply?: boolean

Whether we are awaiting a customer reply

botConversationState?: "active" | "handed_off_to_human" | "resolved"

State of AI agent handling for this conversation

One of the following:
"active"
"handed_off_to_human"
"resolved"
conversationParts?: Array<ConversationPart>

Array of conversation parts (messages). Only included when fetching a single conversation by ID.

One of the following:
UserMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message from a customer or lead

id: string

Unique part identifier

bodyHtml: string | null

Message body content as HTML with signed image URLs

bodyMarkdown: string | null

Message body content as markdown

channel: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "user_msg"

User message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AdminMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message from an admin or support agent

id: string

Unique part identifier

bodyHtml: string | null

Message body content as HTML with signed image URLs

bodyMarkdown: string | null

Message body content as markdown

channel: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "admin_msg"

Admin message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AdminNote { id, bodyHtml, bodyMarkdown, 7 more }

Internal note visible only to admins

id: string

Unique part identifier

bodyHtml: string | null

Note body content as HTML with signed image URLs

bodyMarkdown: string | null

Note body content as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "admin_note"

Admin internal note type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

EmailMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message sent via email

id: string

Unique part identifier

bodyHtml: string | null

Email body content as HTML with signed image URLs

bodyMarkdown: string | null

Email body content as markdown

channel: "email"

Email channel

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "email_msg"

Email message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

BotMessage { id, bodyHtml, bodyMarkdown, 8 more }

Automated message from AI or bot

id: string

Unique part identifier

bodyHtml: string | null

Bot message body content as HTML with signed image URLs

bodyMarkdown: string | null

Bot message body content as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "bot_msg"

Bot message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

channel?: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

QuickReplyOptions { id, createdAt, object, 6 more }

Presents options for user to choose from

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "quick_reply_opts"

Quick reply options type

replyOptions: Array<ReplyOption>

Available reply options

id: string

Option ID

text: string

Option text

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

QuickReplyResponse { id, bodyHtml, bodyMarkdown, 8 more }

User’s selection from quick reply options

id: string

Unique part identifier

bodyHtml: string

The selected option text as HTML

bodyMarkdown: string

The selected option text as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "quick_reply_resp"

Quick reply response type

selectedOptionId: string

ID of the selected option

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

RatingRequested { id, createdAt, csat, 3 more }

Represents a persisted CSAT request in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

csat: Csat { channel, requestedAt, requestId, 7 more }

Canonical CSAT request payload for this thread event

channel: "desktop" | "email"

Channel used for the CSAT request

One of the following:
"desktop"
"email"
requestedAt: string

ISO timestamp when the request was created

requestId: string

Canonical CSAT request ID

requestSource: "workflow"

Source that created the CSAT request

status: "pending" | "rated" | "canceled" | "expired"

Status of the CSAT request represented by this part

One of the following:
"pending"
"rated"
"canceled"
"expired"
changeLockWindowEndsAt?: string

ISO timestamp after which changing the rating is no longer allowed

expiredAt?: string

ISO timestamp when the request expired, when applicable

lateSubmitWindowEndsAt?: string

ISO timestamp after which late submission is no longer allowed

ratedAgent?: CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

workflow?: CsatWorkflowLink { workflowActionId, workflowId, workflowRunId, workflowStepId }
object: "conversation_part"

Object type identifier

partType: "rating_requested"

CSAT rating requested part type

updatedAt: string

ISO timestamp when the part was last updated

RatingSubmitted { id, createdAt, csat, 3 more }

Represents a persisted CSAT submission in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

csat: Csat { channel, ratedAt, requestId, 7 more }

Canonical CSAT submission payload for this thread event

channel: "desktop" | "email"

Channel used for the CSAT request

One of the following:
"desktop"
"email"
ratedAt: string

ISO timestamp when the customer submitted the rating

requestId: string

Canonical CSAT request ID

requestSource: "workflow"

Source that created the CSAT request

score: number

CSAT score from 1 to 5

minimum1
maximum5
status: "rated"

Submitted ratings are always in the rated state

ratedAgent?: CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

remark?: string

Optional remark left with the rating

requestedAt?: string

ISO timestamp when the request was created

workflow?: CsatWorkflowLink { workflowActionId, workflowId, workflowRunId, workflowStepId }
object: "conversation_part"

Object type identifier

partType: "rating_submitted"

CSAT rating submitted part type

updatedAt: string

ISO timestamp when the part was last updated

AttributeCollectionPrompt { id, createdAt, form, 6 more }

Requests information from user via form

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

form: Form { id, attributes }

Form configuration

id: string

Form ID

attributes: Array<Attribute>

Form fields

identifier: string

Field identifier

name: string

Field display name

type: string

Field type

object: "conversation_part"

Object type identifier

partType: "attr_prompt"

Attribute collection prompt type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AttributeCollectionComplete { id, createdAt, object, 2 more }

Indicates form was completed

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "attr_complete"

Attribute collection complete type

updatedAt: string

ISO timestamp when the part was last updated

Assignment { id, createdAt, object, 5 more }

Conversation assigned to admin or team

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "assign"

Assignment type

updatedAt: string

ISO timestamp when the part was last updated

adminAssigneeId?: string | null

ID of the admin assigned to the conversation

adminAssignerId?: string | null

ID of the admin who made the assignment

teamAssigneeId?: string | null

ID of the team assigned to the conversation

StatusChange { id, createdAt, object, 4 more }

Conversation state changed (open/closed/snoozed)

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "status"

Status change type

status: "open" | "closed" | "snoozed"

New conversation status

One of the following:
"open"
"closed"
"snoozed"
updatedAt: string

ISO timestamp when the part was last updated

snoozedUntil?: string | null

ISO timestamp until conversation is snoozed (if snoozed)

TagUpdate { id, action, createdAt, 8 more }

A tag was added to or removed from a specific reply

id: string

Unique part identifier

action: "added" | "removed"

Whether the tag was added or removed

One of the following:
"added"
"removed"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

occurredAt: string

ISO timestamp when the tag mutation occurred

partType: "tags"

Tag update type

tagId: string

Identifier of the affected tag

updatedAt: string

ISO timestamp when the part was last updated

actor?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tagName?: string | null

Tag name at the time of the event or the best available current display name

targetPartId?: string | null

Conversation part that the tag mutation targeted

WorkflowWaitEvent { id, createdAt, object, 3 more }

Represents a workflow wait start, finish, or interruption in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "workflow_wait"

Workflow wait event part type

updatedAt: string

ISO timestamp when the part was last updated

workflowWait: WorkflowWait { eventType, occurredAt, interruptedByUserType, 3 more }

Workflow wait event payload for this thread event

eventType: "started" | "finished" | "interrupted"

Lifecycle stage of the workflow wait event

One of the following:
"started"
"finished"
"interrupted"
occurredAt: string

ISO timestamp when the wait event occurred

interruptedByUserType?: "admin" | "customer" | "lead"

User type that interrupted the wait when applicable

One of the following:
"admin"
"customer"
"lead"
waitLabel?: string

Human-readable wait duration or preset label

workflowId?: string

Workflow ID associated with the wait event

workflowName?: string

Workflow display name at the time of the wait event

PriorityChange { id, createdAt, isPriority, 3 more }

Conversation priority was updated

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

isPriority: boolean

Whether the conversation is now marked as priority

object: "conversation_part"

Object type identifier

partType: "priority"

Priority change type

updatedAt: string

ISO timestamp when the part was last updated

ParticipantAdded { id, createdAt, object, 3 more }

New participant joined the conversation

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

participant: Participant { id, type }

The added participant

id: string

Participant ID

type: "customer" | "lead" | "admin"

Participant type

One of the following:
"customer"
"lead"
"admin"
partType: "part_add"

Participant added type

updatedAt: string

ISO timestamp when the part was last updated

csatDebug?: CsatDebug { requestId, status, changeLockWindowEndsAt, 2 more }

Minimal CSAT diagnostics for the current effective request.

requestId: string

Canonical CSAT request ID used for the latest debug snapshot

status: "pending" | "rated" | "canceled" | "expired"

Lifecycle status of the request represented in the debug snapshot

One of the following:
"pending"
"rated"
"canceled"
"expired"
changeLockWindowEndsAt?: string

ISO timestamp when rating edits stop being accepted

emailDelivery?: CsatEmailDelivery { status, failedAt, failureReason, 2 more }
status: "pending" | "sent" | "failed"

Email delivery status for the CSAT request when applicable

One of the following:
"pending"
"sent"
"failed"
failedAt?: string

ISO timestamp when the CSAT email failed

failureReason?: string

Operational failure reason for the CSAT email delivery

messageId?: string

Email message ID associated with delivery

sentAt?: string

ISO timestamp when the CSAT email was sent

lateSubmitWindowEndsAt?: string

ISO timestamp when first-time submissions stop being accepted

csatHistory?: Array<CsatHistory>

Historical CSAT requests for this conversation, ordered newest first.

channel: "desktop" | "email"

Channel used for the CSAT request

One of the following:
"desktop"
"email"
isLatestEffective: boolean

Whether this row represents the currently effective CSAT request for the conversation

lastUpdatedAt: string

ISO timestamp when the request last changed

requestedAt: string

ISO timestamp when the request was created

requestId: string

Canonical CSAT request ID

requestSource: "workflow"

Source that created the CSAT request

status: "pending" | "rated" | "canceled" | "expired"

Lifecycle status for this historical CSAT request

One of the following:
"pending"
"rated"
"canceled"
"expired"
canceledAt?: string

ISO timestamp when the request was canceled

changeLockWindowEndsAt?: string

ISO timestamp when edits to an existing rating stop being accepted

emailDelivery?: CsatEmailDelivery { status, failedAt, failureReason, 2 more }
status: "pending" | "sent" | "failed"

Email delivery status for the CSAT request when applicable

One of the following:
"pending"
"sent"
"failed"
failedAt?: string

ISO timestamp when the CSAT email failed

failureReason?: string

Operational failure reason for the CSAT email delivery

messageId?: string

Email message ID associated with delivery

sentAt?: string

ISO timestamp when the CSAT email was sent

expiredAt?: string

ISO timestamp when the request expired

lateSubmitWindowEndsAt?: string

ISO timestamp when first-time submissions stop being accepted

ratedAgent?: CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

ratedAt?: string

ISO timestamp when the request was rated

remark?: string

Submitted remark when present

score?: number

Submitted score when this request was rated

minimum1
maximum5
workflow?: CsatWorkflowLink { workflowActionId, workflowId, workflowRunId, workflowStepId }
csatSummary?: CsatSummary { lastUpdatedAt, status, canceledAt, 10 more }

Derived CSAT summary for this conversation when a rating request or rating exists.

lastUpdatedAt: string

ISO timestamp when the summary last changed

status: "pending" | "rated" | "canceled" | "expired"

Current summary status for CSAT on this conversation

One of the following:
"pending"
"rated"
"canceled"
"expired"
canceledAt?: string

ISO timestamp when the request was canceled

channel?: "desktop" | "email"

Channel used for the latest CSAT request when known

One of the following:
"desktop"
"email"
expiredAt?: string

ISO timestamp when the request expired

ratedAgent?: CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

ratedAt?: string

ISO timestamp when the customer submitted a rating

remark?: string

Optional remark left with the rating

requestedAt?: string

ISO timestamp when the latest CSAT request was created

requestId?: string

Canonical CSAT request ID

requestSource?: "workflow"

Source of the latest CSAT request when known

score?: number

CSAT score from 1 to 5 when rated

minimum1
maximum5
workflow?: CsatWorkflowLink { workflowActionId, workflowId, workflowRunId, workflowStepId }
disableCustomerReply?: boolean

Whether customer replies are disabled

readReceipts?: Array<ReadReceipt>

Read receipts indicating how far each participant has read in the conversation. Each receipt maps a user to their last-read conversation part. The tracked position reflects the system read state and may reference parts the user cannot directly view (e.g., a contact’s read position may point to an internal admin note). Use these receipts to render read indicators and typing awareness, not to infer content access.

id: string

The internal ID of the user

lastReadPartId: string

The ID of the last conversation part this user has read. Note: This reflects the system-tracked read position and may reference a part the user cannot directly access (e.g., internal notes for contacts). The read state is advanced to the latest part in the conversation regardless of part visibility.

userType: "admin" | "customer" | "lead"

Type of user who has read the conversation

One of the following:
"admin"
"customer"
"lead"
source?: Source { bodyHtml, bodyMarkdown, channel, 4 more }
bodyHtml: string

Body of the initial message as HTML with signed image URLs

bodyMarkdown: string

Body of the initial message as markdown

channel: "unknown" | "desktop" | "android" | 2 more

Channel through which the conversation was initiated

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
author?: ConversationParticipant { id, type }
id: string

Participant ID

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

Type of participant

One of the following:
"customer"
"lead"
"admin"
"bot"
"guest"
"integration"
deliveredAs?: "customer_initiated" | "admin_initiated"

How the conversation was initiated

One of the following:
"customer_initiated"
"admin_initiated"
subject?: string

Subject line for email conversations

url?: string

URL where the conversation was initiated

title?: string

Conversation title

ConversationPart = UserMessage { id, bodyHtml, bodyMarkdown, 8 more } | AdminMessage { id, bodyHtml, bodyMarkdown, 8 more } | AdminNote { id, bodyHtml, bodyMarkdown, 7 more } | 14 more

Message from a customer or lead

One of the following:
UserMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message from a customer or lead

id: string

Unique part identifier

bodyHtml: string | null

Message body content as HTML with signed image URLs

bodyMarkdown: string | null

Message body content as markdown

channel: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "user_msg"

User message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AdminMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message from an admin or support agent

id: string

Unique part identifier

bodyHtml: string | null

Message body content as HTML with signed image URLs

bodyMarkdown: string | null

Message body content as markdown

channel: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "admin_msg"

Admin message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AdminNote { id, bodyHtml, bodyMarkdown, 7 more }

Internal note visible only to admins

id: string

Unique part identifier

bodyHtml: string | null

Note body content as HTML with signed image URLs

bodyMarkdown: string | null

Note body content as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "admin_note"

Admin internal note type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

EmailMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message sent via email

id: string

Unique part identifier

bodyHtml: string | null

Email body content as HTML with signed image URLs

bodyMarkdown: string | null

Email body content as markdown

channel: "email"

Email channel

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "email_msg"

Email message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

BotMessage { id, bodyHtml, bodyMarkdown, 8 more }

Automated message from AI or bot

id: string

Unique part identifier

bodyHtml: string | null

Bot message body content as HTML with signed image URLs

bodyMarkdown: string | null

Bot message body content as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "bot_msg"

Bot message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

channel?: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

QuickReplyOptions { id, createdAt, object, 6 more }

Presents options for user to choose from

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "quick_reply_opts"

Quick reply options type

replyOptions: Array<ReplyOption>

Available reply options

id: string

Option ID

text: string

Option text

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

QuickReplyResponse { id, bodyHtml, bodyMarkdown, 8 more }

User’s selection from quick reply options

id: string

Unique part identifier

bodyHtml: string

The selected option text as HTML

bodyMarkdown: string

The selected option text as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "quick_reply_resp"

Quick reply response type

selectedOptionId: string

ID of the selected option

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

RatingRequested { id, createdAt, csat, 3 more }

Represents a persisted CSAT request in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

csat: Csat { channel, requestedAt, requestId, 7 more }

Canonical CSAT request payload for this thread event

channel: "desktop" | "email"

Channel used for the CSAT request

One of the following:
"desktop"
"email"
requestedAt: string

ISO timestamp when the request was created

requestId: string

Canonical CSAT request ID

requestSource: "workflow"

Source that created the CSAT request

status: "pending" | "rated" | "canceled" | "expired"

Status of the CSAT request represented by this part

One of the following:
"pending"
"rated"
"canceled"
"expired"
changeLockWindowEndsAt?: string

ISO timestamp after which changing the rating is no longer allowed

expiredAt?: string

ISO timestamp when the request expired, when applicable

lateSubmitWindowEndsAt?: string

ISO timestamp after which late submission is no longer allowed

ratedAgent?: CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

workflow?: CsatWorkflowLink { workflowActionId, workflowId, workflowRunId, workflowStepId }
object: "conversation_part"

Object type identifier

partType: "rating_requested"

CSAT rating requested part type

updatedAt: string

ISO timestamp when the part was last updated

RatingSubmitted { id, createdAt, csat, 3 more }

Represents a persisted CSAT submission in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

csat: Csat { channel, ratedAt, requestId, 7 more }

Canonical CSAT submission payload for this thread event

channel: "desktop" | "email"

Channel used for the CSAT request

One of the following:
"desktop"
"email"
ratedAt: string

ISO timestamp when the customer submitted the rating

requestId: string

Canonical CSAT request ID

requestSource: "workflow"

Source that created the CSAT request

score: number

CSAT score from 1 to 5

minimum1
maximum5
status: "rated"

Submitted ratings are always in the rated state

ratedAgent?: CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

remark?: string

Optional remark left with the rating

requestedAt?: string

ISO timestamp when the request was created

workflow?: CsatWorkflowLink { workflowActionId, workflowId, workflowRunId, workflowStepId }
object: "conversation_part"

Object type identifier

partType: "rating_submitted"

CSAT rating submitted part type

updatedAt: string

ISO timestamp when the part was last updated

AttributeCollectionPrompt { id, createdAt, form, 6 more }

Requests information from user via form

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

form: Form { id, attributes }

Form configuration

id: string

Form ID

attributes: Array<Attribute>

Form fields

identifier: string

Field identifier

name: string

Field display name

type: string

Field type

object: "conversation_part"

Object type identifier

partType: "attr_prompt"

Attribute collection prompt type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AttributeCollectionComplete { id, createdAt, object, 2 more }

Indicates form was completed

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "attr_complete"

Attribute collection complete type

updatedAt: string

ISO timestamp when the part was last updated

Assignment { id, createdAt, object, 5 more }

Conversation assigned to admin or team

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "assign"

Assignment type

updatedAt: string

ISO timestamp when the part was last updated

adminAssigneeId?: string | null

ID of the admin assigned to the conversation

adminAssignerId?: string | null

ID of the admin who made the assignment

teamAssigneeId?: string | null

ID of the team assigned to the conversation

StatusChange { id, createdAt, object, 4 more }

Conversation state changed (open/closed/snoozed)

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "status"

Status change type

status: "open" | "closed" | "snoozed"

New conversation status

One of the following:
"open"
"closed"
"snoozed"
updatedAt: string

ISO timestamp when the part was last updated

snoozedUntil?: string | null

ISO timestamp until conversation is snoozed (if snoozed)

TagUpdate { id, action, createdAt, 8 more }

A tag was added to or removed from a specific reply

id: string

Unique part identifier

action: "added" | "removed"

Whether the tag was added or removed

One of the following:
"added"
"removed"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

occurredAt: string

ISO timestamp when the tag mutation occurred

partType: "tags"

Tag update type

tagId: string

Identifier of the affected tag

updatedAt: string

ISO timestamp when the part was last updated

actor?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tagName?: string | null

Tag name at the time of the event or the best available current display name

targetPartId?: string | null

Conversation part that the tag mutation targeted

WorkflowWaitEvent { id, createdAt, object, 3 more }

Represents a workflow wait start, finish, or interruption in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "workflow_wait"

Workflow wait event part type

updatedAt: string

ISO timestamp when the part was last updated

workflowWait: WorkflowWait { eventType, occurredAt, interruptedByUserType, 3 more }

Workflow wait event payload for this thread event

eventType: "started" | "finished" | "interrupted"

Lifecycle stage of the workflow wait event

One of the following:
"started"
"finished"
"interrupted"
occurredAt: string

ISO timestamp when the wait event occurred

interruptedByUserType?: "admin" | "customer" | "lead"

User type that interrupted the wait when applicable

One of the following:
"admin"
"customer"
"lead"
waitLabel?: string

Human-readable wait duration or preset label

workflowId?: string

Workflow ID associated with the wait event

workflowName?: string

Workflow display name at the time of the wait event

PriorityChange { id, createdAt, isPriority, 3 more }

Conversation priority was updated

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

isPriority: boolean

Whether the conversation is now marked as priority

object: "conversation_part"

Object type identifier

partType: "priority"

Priority change type

updatedAt: string

ISO timestamp when the part was last updated

ParticipantAdded { id, createdAt, object, 3 more }

New participant joined the conversation

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

participant: Participant { id, type }

The added participant

id: string

Participant ID

type: "customer" | "lead" | "admin"

Participant type

One of the following:
"customer"
"lead"
"admin"
partType: "part_add"

Participant added type

updatedAt: string

ISO timestamp when the part was last updated

ConversationPartAuthor { id, type, email, 2 more }
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

ConversationParticipant { id, type }
id: string

Participant ID

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

Type of participant

One of the following:
"customer"
"lead"
"admin"
"bot"
"guest"
"integration"
ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more }
appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

CsatEmailDelivery { status, failedAt, failureReason, 2 more }
status: "pending" | "sent" | "failed"

Email delivery status for the CSAT request when applicable

One of the following:
"pending"
"sent"
"failed"
failedAt?: string

ISO timestamp when the CSAT email failed

failureReason?: string

Operational failure reason for the CSAT email delivery

messageId?: string

Email message ID associated with delivery

sentAt?: string

ISO timestamp when the CSAT email was sent

CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

EmailRecipients { emails, ids }

Primary recipients (To field)

emails?: Array<string>

Array of email addresses

ids?: Array<string>

Array of Featurebase contact IDs

ConversationDeleteResponse { id, deleted, object }
id: string

Unique identifier of the deleted conversation

deleted: true

Indicates the resource was deleted

object: "conversation"

Object type identifier

SupportConversationsTags

Conversations are messenger/inbox conversations in your Featurebase organization. Use this endpoint to list and retrieve conversation information.

Attach a tag to a conversation
client.support.conversations.tags.attach(stringid, TagAttachParams { actingAdminId, tagId, featurebaseVersion } params, RequestOptionsoptions?): AttachedConversationTag { id, name, type, 5 more }
POST/v2/conversations/{id}/tags
Detach a tag from a conversation
client.support.conversations.tags.detach(stringtagID, TagDetachParams { id, actingAdminId, featurebaseVersion } params, RequestOptionsoptions?): AttachedConversationTag { id, name, type, 5 more }
DELETE/v2/conversations/{id}/tags/{tagId}
ModelsExpand Collapse
AttachedConversationTag { id, name, type, 5 more }
id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

appliedAt?: string | null

ISO timestamp when the tag was applied

appliedBy?: ConversationTagMutationActor { type, id, name } | null

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed, if applicable

removedBy?: ConversationTagMutationActor { type, id, name } | null

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

targetPartId?: string | null

Reply/message ID used as the deterministic attachment target for this conversation tag mutation.

ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

SupportConversationsParticipants

Conversations are messenger/inbox conversations in your Featurebase organization. Use this endpoint to list and retrieve conversation information.

Add a contact to a conversation
client.support.conversations.participants.add(stringid, ParticipantAddParams { participant, actingAdminId, featurebaseVersion } params, RequestOptionsoptions?): Conversation { id, adminAssigneeId, botConversationStateLastUpdatedAt, 26 more }
POST/v2/conversations/{id}/participants
Remove a contact from a conversation
client.support.conversations.participants.remove(stringid, ParticipantRemoveParams { id, actingAdminId, featurebaseVersion } params, RequestOptionsoptions?): Conversation { id, adminAssigneeId, botConversationStateLastUpdatedAt, 26 more }
DELETE/v2/conversations/{id}/participants

SupportConversation Tags

Conversation tags let you organize, filter, and automate around inbox conversations. Use these endpoints to list, look up, create, rename, and delete workspace conversation tags.

List workspace tags
client.support.conversationTags.list(ConversationTagListParams { featurebaseVersion } params?, RequestOptionsoptions?): ConversationTagListResponse { data, nextCursor, object }
GET/v2/tags
Create or rename a tag
client.support.conversationTags.createOrRename(ConversationTagCreateOrRenameParams { name, id, actingAdminId, featurebaseVersion } params, RequestOptionsoptions?): ConversationTag { id, name, type }
POST/v2/tags
Get tag by ID
client.support.conversationTags.retrieve(stringid, ConversationTagRetrieveParams { featurebaseVersion } params?, RequestOptionsoptions?): ConversationTag { id, name, type }
GET/v2/tags/{id}
Delete a tag
client.support.conversationTags.delete(stringid, ConversationTagDeleteParams { actingAdminId, featurebaseVersion } params?, RequestOptionsoptions?): ConversationTagDeleteResponse { id, deleted, object }
DELETE/v2/tags/{id}
ModelsExpand Collapse
ConversationTag { id, name, type }
id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

ConversationTagListResponse { data, nextCursor, object }
data: Array<ConversationTag { id, name, type } >

Array containing the actual response elements

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

nextCursor: string | null

Cursor to use for fetching the next page. Null if there are no more results.

maxLength512
object: "list"

String representing the object type

ConversationTagDeleteResponse { id, deleted, object }
id: string

Unique tag identifier

deleted: true

Whether the tag has been deleted

object: "tag"

Object type identifier

SupportTickets

Tickets represent support requests in your Featurebase organization. Create, update, reply to, and manage tickets via these endpoints.

List tickets
client.support.tickets.list(TicketListParams { assigneeId, categoryType, cursor, 7 more } params?, RequestOptionsoptions?): CursorPage<Ticket { id, assigneeId, author, 18 more } >
GET/v2/tickets
Create a ticket
client.support.tickets.create(TicketCreateParams { author, ticketCategoryId, title, 9 more } params, RequestOptionsoptions?): Ticket { id, assigneeId, author, 18 more }
POST/v2/tickets
Get a ticket
client.support.tickets.retrieve(numberid, TicketRetrieveParams { featurebaseVersion } params?, RequestOptionsoptions?): Ticket { id, assigneeId, author, 18 more }
GET/v2/tickets/{id}
Update a ticket
client.support.tickets.update(numberid, TicketUpdateParams { assigneeId, companyId, content, 7 more } params, RequestOptionsoptions?): Ticket { id, assigneeId, author, 18 more }
PATCH/v2/tickets/{id}
Delete a ticket
client.support.tickets.delete(numberid, TicketDeleteParams { featurebaseVersion } params?, RequestOptionsoptions?): TicketDeleteResponse { id, deleted, object }
DELETE/v2/tickets/{id}
Reply to a ticket
client.support.tickets.reply(numberid, TicketReplyParamsparams, RequestOptionsoptions?): Ticket { id, assigneeId, author, 18 more }
POST/v2/tickets/{id}/reply
ModelsExpand Collapse
AuthorInput { id, email, name, 2 more }

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
Ticket { id, assigneeId, author, 18 more }
id: string

Unique identifier (MongoDB ID)

assigneeId: string | null

Assigned admin ID

author: Author | null

Contact who created the ticket

id: string | null

Author unique identifier

email: string | null

Author email

name: string

Author display name

profilePicture: string | null

Author profile picture URL

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

Type of user

One of the following:
"admin"
"customer"
"guest"
"integration"
"bot"
"lead"
categoryType: "customer" | "tracker" | "back-office"

Ticket category type

One of the following:
"customer"
"tracker"
"back-office"
companyId: string | null

Associated company ID

content: string

Ticket content/description (HTML)

createdAt: string

ISO 8601 creation timestamp

customFields: Record<string, unknown>

Custom field values keyed by field ID. File-type fields contain a JSON string of { key, name, url } with a signed download URL (1 hour expiry). For allowMultiple file fields, the value is a JSON string of an array of these objects.

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

Third-party integration links

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

linkedConversations: Array<LinkedConversation>

Linked conversations

id: string

Conversation ID

role: "customer" | "tracker" | "back-office"

Link role

One of the following:
"customer"
"tracker"
"back-office"
object: "ticket"

Object type identifier

open: boolean

Whether the ticket is open

snoozedUntil: string | null

ISO 8601 timestamp until snoozed (from linked conversation)

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

Current ticket status

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"
teamAssigneeId: string | null

Assigned team ID (from linked conversation)

ticketCategoryId: string

Ticket category ID

ticketNumber: number

Sequential display ID (e.g. TK-42)

ticketUrl: string

Full URL to view the ticket

title: string

Ticket title

updatedAt: string

ISO 8601 last updated timestamp

conversationParts?: Array<ConversationPart>

Conversation message history. Only included when fetching a single ticket by ID.

One of the following:
UserMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message from a customer or lead

id: string

Unique part identifier

bodyHtml: string | null

Message body content as HTML with signed image URLs

bodyMarkdown: string | null

Message body content as markdown

channel: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "user_msg"

User message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AdminMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message from an admin or support agent

id: string

Unique part identifier

bodyHtml: string | null

Message body content as HTML with signed image URLs

bodyMarkdown: string | null

Message body content as markdown

channel: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "admin_msg"

Admin message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AdminNote { id, bodyHtml, bodyMarkdown, 7 more }

Internal note visible only to admins

id: string

Unique part identifier

bodyHtml: string | null

Note body content as HTML with signed image URLs

bodyMarkdown: string | null

Note body content as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "admin_note"

Admin internal note type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

EmailMessage { id, bodyHtml, bodyMarkdown, 8 more }

Message sent via email

id: string

Unique part identifier

bodyHtml: string | null

Email body content as HTML with signed image URLs

bodyMarkdown: string | null

Email body content as markdown

channel: "email"

Email channel

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "email_msg"

Email message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

BotMessage { id, bodyHtml, bodyMarkdown, 8 more }

Automated message from AI or bot

id: string

Unique part identifier

bodyHtml: string | null

Bot message body content as HTML with signed image URLs

bodyMarkdown: string | null

Bot message body content as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "bot_msg"

Bot message type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

channel?: "unknown" | "desktop" | "android" | 2 more

Channel through which the message was sent

One of the following:
"unknown"
"desktop"
"android"
"ios"
"email"
redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

QuickReplyOptions { id, createdAt, object, 6 more }

Presents options for user to choose from

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "quick_reply_opts"

Quick reply options type

replyOptions: Array<ReplyOption>

Available reply options

id: string

Option ID

text: string

Option text

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

QuickReplyResponse { id, bodyHtml, bodyMarkdown, 8 more }

User’s selection from quick reply options

id: string

Unique part identifier

bodyHtml: string

The selected option text as HTML

bodyMarkdown: string

The selected option text as markdown

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "quick_reply_resp"

Quick reply response type

selectedOptionId: string

ID of the selected option

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

RatingRequested { id, createdAt, csat, 3 more }

Represents a persisted CSAT request in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

csat: Csat { channel, requestedAt, requestId, 7 more }

Canonical CSAT request payload for this thread event

channel: "desktop" | "email"

Channel used for the CSAT request

One of the following:
"desktop"
"email"
requestedAt: string

ISO timestamp when the request was created

requestId: string

Canonical CSAT request ID

requestSource: "workflow"

Source that created the CSAT request

status: "pending" | "rated" | "canceled" | "expired"

Status of the CSAT request represented by this part

One of the following:
"pending"
"rated"
"canceled"
"expired"
changeLockWindowEndsAt?: string

ISO timestamp after which changing the rating is no longer allowed

expiredAt?: string

ISO timestamp when the request expired, when applicable

lateSubmitWindowEndsAt?: string

ISO timestamp after which late submission is no longer allowed

ratedAgent?: CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

workflow?: CsatWorkflowLink { workflowActionId, workflowId, workflowRunId, workflowStepId }
object: "conversation_part"

Object type identifier

partType: "rating_requested"

CSAT rating requested part type

updatedAt: string

ISO timestamp when the part was last updated

RatingSubmitted { id, createdAt, csat, 3 more }

Represents a persisted CSAT submission in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

csat: Csat { channel, ratedAt, requestId, 7 more }

Canonical CSAT submission payload for this thread event

channel: "desktop" | "email"

Channel used for the CSAT request

One of the following:
"desktop"
"email"
ratedAt: string

ISO timestamp when the customer submitted the rating

requestId: string

Canonical CSAT request ID

requestSource: "workflow"

Source that created the CSAT request

score: number

CSAT score from 1 to 5

minimum1
maximum5
status: "rated"

Submitted ratings are always in the rated state

ratedAgent?: CsatRatedAgent { type, id }
type: "teammate" | "fibi" | "chatbot"

Type of agent the CSAT request is attributed to

One of the following:
"teammate"
"fibi"
"chatbot"
id?: string

Identifier of the rated agent when applicable

remark?: string

Optional remark left with the rating

requestedAt?: string

ISO timestamp when the request was created

workflow?: CsatWorkflowLink { workflowActionId, workflowId, workflowRunId, workflowStepId }
object: "conversation_part"

Object type identifier

partType: "rating_submitted"

CSAT rating submitted part type

updatedAt: string

ISO timestamp when the part was last updated

AttributeCollectionPrompt { id, createdAt, form, 6 more }

Requests information from user via form

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

form: Form { id, attributes }

Form configuration

id: string

Form ID

attributes: Array<Attribute>

Form fields

identifier: string

Field identifier

name: string

Field display name

type: string

Field type

object: "conversation_part"

Object type identifier

partType: "attr_prompt"

Attribute collection prompt type

updatedAt: string

ISO timestamp when the part was last updated

author?: ConversationPartAuthor { id, type, email, 2 more } | null
id: string | null

Author ID

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

Type of author

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

Author email address

name?: string

Author display name

profilePicture?: string | null

Author profile picture URL

redacted?: boolean

Whether this message has been redacted

tagApplications?: Array<ConversationTagApplication { appliedAt, tagId, appliedBy, 3 more } >

Reply-level tag applications and provenance for this conversation part

appliedAt: string

ISO timestamp when the tag was applied to this reply

tagId: string

Identifier of the applied tag

appliedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

removedAt?: string | null

ISO timestamp when the tag was removed from this reply, if it was removed

removedBy?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tag?: ConversationTag { id, name, type }

Resolved tag object when the tag still exists in the shared workspace catalog

id: string

Unique tag identifier

name: string

Current tag name

type: "tag"

Object type identifier for a tag

AttributeCollectionComplete { id, createdAt, object, 2 more }

Indicates form was completed

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "attr_complete"

Attribute collection complete type

updatedAt: string

ISO timestamp when the part was last updated

Assignment { id, createdAt, object, 5 more }

Conversation assigned to admin or team

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "assign"

Assignment type

updatedAt: string

ISO timestamp when the part was last updated

adminAssigneeId?: string | null

ID of the admin assigned to the conversation

adminAssignerId?: string | null

ID of the admin who made the assignment

teamAssigneeId?: string | null

ID of the team assigned to the conversation

StatusChange { id, createdAt, object, 4 more }

Conversation state changed (open/closed/snoozed)

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "status"

Status change type

status: "open" | "closed" | "snoozed"

New conversation status

One of the following:
"open"
"closed"
"snoozed"
updatedAt: string

ISO timestamp when the part was last updated

snoozedUntil?: string | null

ISO timestamp until conversation is snoozed (if snoozed)

TagUpdate { id, action, createdAt, 8 more }

A tag was added to or removed from a specific reply

id: string

Unique part identifier

action: "added" | "removed"

Whether the tag was added or removed

One of the following:
"added"
"removed"
createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

occurredAt: string

ISO timestamp when the tag mutation occurred

partType: "tags"

Tag update type

tagId: string

Identifier of the affected tag

updatedAt: string

ISO timestamp when the part was last updated

actor?: ConversationTagMutationActor { type, id, name }

Actor that applied the tag

type: "admin" | "customer" | "lead" | 4 more

Actor that caused the tag mutation

One of the following:
"admin"
"customer"
"lead"
"bot"
"integration"
"system"
"workflow"
id?: string | null

Actor identifier when available

name?: string | null

Actor display name when available

tagName?: string | null

Tag name at the time of the event or the best available current display name

targetPartId?: string | null

Conversation part that the tag mutation targeted

WorkflowWaitEvent { id, createdAt, object, 3 more }

Represents a workflow wait start, finish, or interruption in the conversation thread

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

partType: "workflow_wait"

Workflow wait event part type

updatedAt: string

ISO timestamp when the part was last updated

workflowWait: WorkflowWait { eventType, occurredAt, interruptedByUserType, 3 more }

Workflow wait event payload for this thread event

eventType: "started" | "finished" | "interrupted"

Lifecycle stage of the workflow wait event

One of the following:
"started"
"finished"
"interrupted"
occurredAt: string

ISO timestamp when the wait event occurred

interruptedByUserType?: "admin" | "customer" | "lead"

User type that interrupted the wait when applicable

One of the following:
"admin"
"customer"
"lead"
waitLabel?: string

Human-readable wait duration or preset label

workflowId?: string

Workflow ID associated with the wait event

workflowName?: string

Workflow display name at the time of the wait event

PriorityChange { id, createdAt, isPriority, 3 more }

Conversation priority was updated

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

isPriority: boolean

Whether the conversation is now marked as priority

object: "conversation_part"

Object type identifier

partType: "priority"

Priority change type

updatedAt: string

ISO timestamp when the part was last updated

ParticipantAdded { id, createdAt, object, 3 more }

New participant joined the conversation

id: string

Unique part identifier

createdAt: string

ISO timestamp when the part was created

object: "conversation_part"

Object type identifier

participant: Participant { id, type }

The added participant

id: string

Participant ID

type: "customer" | "lead" | "admin"

Participant type

One of the following:
"customer"
"lead"
"admin"
partType: "part_add"

Participant added type

updatedAt: string

ISO timestamp when the part was last updated

TicketDeleteResponse { id, deleted, object }
id: string

Unique identifier of the deleted ticket

deleted: true

Indicates the resource was deleted

object: "ticket"

Object type identifier

SupportTicketsCustom Fields

Tickets represent support requests in your Featurebase organization. Create, update, reply to, and manage tickets via these endpoints.

List custom fields
client.support.tickets.customFields.list(CustomFieldListParams { featurebaseVersion } params?, RequestOptionsoptions?): CustomFieldList { data, nextCursor, object, pagination }
GET/v2/tickets/custom_fields
Get a custom field by ID
client.support.tickets.customFields.retrieve(stringid, CustomFieldRetrieveParams { featurebaseVersion } params?, RequestOptionsoptions?): CustomField { id, label, object, 9 more }
GET/v2/tickets/custom_fields/{id}

SupportTicketsCategories

Tickets represent support requests in your Featurebase organization. Create, update, reply to, and manage tickets via these endpoints.

List ticket categories
client.support.tickets.categories.list(CategoryListParams { featurebaseVersion } params?, RequestOptionsoptions?): CategoryListResponse { id, access, createdAt, 7 more }
GET/v2/tickets/categories
Get a ticket category by ID
client.support.tickets.categories.retrieve(stringid, CategoryRetrieveParams { featurebaseVersion } params?, RequestOptionsoptions?): Board { id, access, createdAt, 7 more }
GET/v2/tickets/categories/{id}
ModelsExpand Collapse
CategoryListResponse = Array<Board { id, access, createdAt, 7 more } >
id: string

Unique identifier

access: Access { adminOnly, allowedRoles, deniedRoles, segments }
adminOnly: boolean

If true, only admins can see this board

allowedRoles: Array<string>

Role IDs allowed access (empty = all)

deniedRoles: Array<string>

Role IDs explicitly denied access

segments: Array<string>

Segment IDs that can access (empty = all)

createdAt: string

ISO 8601 timestamp when created

customFields: Array<string>

Custom field IDs attached to this board

features: Features { commentsEnabled, createdDatesVisible, postingEnabled }
commentsEnabled: boolean

Whether users can comment on posts

createdDatesVisible: boolean

Whether creation dates are visible on posts

postingEnabled: boolean

Whether users can create new posts

icon: EmojiIcon { type, value } | PredefinedIcon { type, value } | URLIcon { type, value } | null

The board’s icon. Can be one of three types:

  • emoji: A single emoji character (e.g., 💡, 🚀, ⭐)
  • icon: A predefined icon from the built-in library (e.g., lightbulb, bug, star)
  • url: A custom image URL (HTTPS required)

Can be null if no icon is set.

One of the following:
EmojiIcon { type, value }

An emoji character as the board icon

type: "emoji"

Emoji icon type

value: string

A single emoji character

PredefinedIcon { type, value }

A predefined icon from the built-in icon library

type: "icon"

Predefined icon type

value: string

Icon name from the predefined icon set (e.g., lightbulb, bug, star, rocket, flag, heart, check, question, megaphone, gift)

URLIcon { type, value }

A custom icon loaded from an external URL

type: "url"

External URL icon type

value: string

HTTPS URL to a custom icon image (PNG, SVG, or WebP recommended)

formaturi
localization: Localization { description, formPlaceholder, heroDescription, 3 more }
description: Record<string, string> | null

Localized description

formPlaceholder: Record<string, string> | null

Placeholder text in the post creation form

heroDescription: Record<string, string> | null

Hero description/subtitle

heroTitle: Record<string, string> | null

Hero title shown on the board page

name: Record<string, string>

Localized board name (language code → text)

submitButtonText: Record<string, string> | null

Submit button text

name: string

Display name in organization’s default locale

object: "board"

Object type identifier

postDefaults: PostDefaults { visibility }
visibility: "public" | "authorOnly" | "companyOnly"

Default visibility for new posts

One of the following:
"public"
"authorOnly"
"companyOnly"

SupportTicketsStatuses

Tickets represent support requests in your Featurebase organization. Create, update, reply to, and manage tickets via these endpoints.

List ticket statuses
client.support.tickets.statuses.list(StatusListParams { featurebaseVersion } params?, RequestOptionsoptions?): StatusListResponse { id, color, isDefault, 3 more }
GET/v2/tickets/statuses
Get a ticket status by ID
client.support.tickets.statuses.retrieve(stringid, StatusRetrieveParams { featurebaseVersion } params?, RequestOptionsoptions?): PostStatus { id, color, isDefault, 3 more }
GET/v2/tickets/statuses/{id}
ModelsExpand Collapse
StatusListResponse = Array<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"