Skip to content

Featurebase API (2026-01-01.nova)

Welcome to the Featurebase API. This API allows you to programmatically interact with your Featurebase organization.

This documentation reflects API version 2026-01-01.nova.

Download OpenAPI description
Languages
Servers
Mock server
https://docs.featurebase.app/_mock/rest-api
Production
https://do.featurebase.app

API Versioning

This API uses date-based versioning. Each version is identified by a release date and slug, e.g., 2026-01-01.nova.

Specifying a Version

Include the version in the request header:

Featurebase-Version: 2026-01-01.nova

Or set a default version for your organization in the dashboard settings.

Version Compatibility

  • Newer versions may add new fields to responses (always backwards-compatible)
  • Breaking changes (removed/renamed fields, changed behavior) only occur in new versions
  • Your integration will continue to work as long as you pin to a specific version

Authentication

All API requests require authentication via API key.

Include in headers:

Authorization: Bearer <api-key>

Create and manage your API keys in the Featurebase dashboard.

Error Handling

The API uses conventional HTTP response codes to indicate success or failure:

  • 2xx - Success
  • 4xx - Client errors (bad request, unauthorized, not found, etc.)
  • 5xx - Server errors (internal error)

Error Response Format

All errors follow a consistent format:

{
  "error": {
    "type": "invalid_request_error",
    "code": "resource_not_found",
    "message": "Post not found",
    "param": "id",
    "status": 404
  }
}

Error Types

TypeDescription
authentication_errorAuthentication failed (401)
authorization_errorPermission denied (403)
invalid_request_errorInvalid request parameters or resource not found (400, 404, 410)
api_errorServer-side error (500)
rate_limit_errorToo many requests (429)

Boards

Boards (post categories) organize feedback into distinct containers with their own settings.

Operations

Posts

User-submitted feedback and feature requests. Posts belong to boards and can be upvoted, commented on, and tracked through statuses.

Operations

Post Statuses

Post statuses define the workflow stages for posts (e.g., In Review, Active, Completed).

Operations

Comments

Threaded discussions on posts and changelogs. Comments support voting, moderation, and privacy controls.

Operations

Custom Fields

Configurable input fields for posts in your Featurebase organization. Custom fields allow you to collect additional structured data when users create posts.

Operations

Changelogs

Release notes and updates published by the organization. Changelogs keep users informed about new features, improvements, and fixes.

Operations

Admins

Team members who manage your Featurebase organization. Admins have roles that define their permissions.

Operations

Teams

Teams are groups within your Featurebase organization. Use this endpoint to list and retrieve team information for conversation assignment and organization management.

Operations

Brands

Brands represent distinct brand identities within your organization. Each brand can have its own help center and email sending address. Use this endpoint to list and retrieve brand information.

Operations

Contacts

Contacts are the customers and leads in your Featurebase organization. Use this endpoint to list and retrieve contact information.

Operations

Companies

Companies represent organizations or businesses that your users belong to. Use this endpoint to list and retrieve company information.

Operations

Surveys

Surveys allow you to collect targeted feedback from your users within your product. Surveys can be targeted to specific user segments or pages and can contain multiple questions with conditional logic.

Operations

Help Centers

Help centers allow organizations to create and manage knowledge bases with articles and collections. Currently, Featurebase supports one help center per organization.

Operations

Conversations

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

Operations

Tickets

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

Operations

List tickets

Request

Returns a list of tickets in your organization using cursor-based pagination.

Query Parameters

ParameterTypeDescription
limitnumberNumber of tickets to return (1-100, default 10)
cursorstringCursor from previous response for pagination
ticketCategoryIdsstring[]Filter by ticket category IDs
statusIdsstring[]Filter by status IDs
qstringSearch query
assigneeIdstringFilter by assignee ID
categoryTypestringFilter by category type: "customer", "tracker", or "back-office"
sortBystringSort field: "date" (default), "recent", or "ticketNumber"
sortOrderstringSort direction: "asc" or "desc" (default)

Response

Returns a list object with data (array of ticket objects) and nextCursor.

Security
bearerAuth
Query
limitinteger[ 1 .. 100 ]
Default 10
cursorstring<= 512 characters
ticketCategoryIdsArray of strings
statusIdsArray of strings
qstring
assigneeIdstring
categoryTypestring
Enum"customer""tracker""back-office"
sortBystring
Default "date"
Enum"date""recent""ticketNumber"
sortOrderstring
Default "desc"
Enum"asc""desc"
Headers
Featurebase-Versionstring(FeaturebaseVersion)

API version for this request. Defaults to your organization's configured API version if not specified.

Example: 2026-01-01.nova
curl -i -X GET \
  'https://docs.featurebase.app/_mock/rest-api/v2/tickets?limit=10&cursor=string&ticketCategoryIds=string&statusIds=string&q=string&assigneeId=string&categoryType=customer&sortBy=date&sortOrder=asc' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Featurebase-Version: 2026-01-01.nova'

Responses

Success

Bodyapplication/json
objectstringrequired

Object type identifier

Value"list"
Example: "list"
dataArray of objects(Ticket)required

Array of tickets

Example: []
data[].​objectstringrequired

Object type identifier

Value"ticket"
Example: "ticket"
data[].​idstringrequired

Unique identifier (MongoDB ID)

Example: "507f1f77bcf86cd799439011"
data[].​ticketNumbernumberrequired

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

Example: 42
data[].​titlestringrequired

Ticket title

Example: "Cannot login to dashboard"
data[].​contentstringrequired

Ticket content/description (HTML)

Example: "<p>I get a 403 error when logging in.</p>"
data[].​ticketCategoryIdstringrequired

Ticket category ID

Example: "507f1f77bcf86cd799439011"
data[].​categoryTypestringrequired

Ticket category type

Enum"customer""tracker""back-office"
Example: "customer"
data[].​ticketUrlstringrequired

Full URL to view the ticket

Example: "https://feedback.example.com/p/cannot-login"
data[].​authorobject or null(TicketAuthor)required

Contact who created the ticket

data[].​author.​idstring or nullrequired

Author unique identifier

Example: "507f1f77bcf86cd799439011"
data[].​author.​namestringrequired

Author display name

Example: "John Doe"
data[].​author.​emailstring or nullrequired

Author email

Example: "john@example.com"
data[].​author.​profilePicturestring or nullrequired

Author profile picture URL

Example: "https://cdn.example.com/avatars/john.png"
data[].​author.​typestringrequired

Type of user

Enum"admin""customer""guest""integration""bot""lead"
Example: "customer"
data[].​statusobjectrequired

Current ticket status

data[].​status.​objectstringrequired

Object type identifier

Value"post_status"
Example: "post_status"
data[].​status.​idstringrequired

Unique identifier

Example: "507f1f77bcf86cd799439011"
data[].​status.​namestringrequired

Display name

Example: "In Progress"
data[].​status.​colorstringrequired

Color for UI display

Example: "Blue"
data[].​status.​typestringrequired

The workflow stage this status represents

Enum"reviewing""unstarted""active""completed""canceled"
Example: "active"
data[].​status.​isDefaultbooleanrequired

Whether this is the default status for new posts

Example: false
data[].​customFieldsobjectrequired

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.

Example: {"priority":"high","507f1f77bcf86cd799439099":"{\"key\":\"org/pending/file.pdf\",\"name\":\"document.pdf\",\"url\":\"https://...\"}"}
data[].​customFields.​property name*anyadditional property
data[].​companyIdstring or nullrequired

Associated company ID

Example: "507f1f77bcf86cd799439015"
data[].​assigneeIdstring or nullrequired

Assigned admin ID

Example: "507f1f77bcf86cd799439013"
data[].​teamAssigneeIdstring or nullrequired

Assigned team ID (from linked conversation)

Example: "507f1f77bcf86cd799439014"
data[].​openbooleanrequired

Whether the ticket is open

Example: true
data[].​snoozedUntilstring or nullrequired

ISO 8601 timestamp until snoozed (from linked conversation)

Example: "2025-01-16T09:00:00.000Z"
data[].​linkedConversationsArray of objects(LinkedConversation)required

Linked conversations

data[].​linkedConversations[].​idstringrequired

Conversation ID

Example: "507f1f77bcf86cd799439011"
data[].​linkedConversations[].​rolestringrequired

Link role

Enum"customer""tracker""back-office"
Example: "customer"
data[].​conversationPartsArray of any(ConversationPart)

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

data[].​createdAtstringrequired

ISO 8601 creation timestamp

Example: "2025-01-15T10:30:00.000Z"
data[].​updatedAtstringrequired

ISO 8601 last updated timestamp

Example: "2025-01-15T12:30:00.000Z"
data[].​integrationsobjectrequired

Third-party integration links

data[].​integrations.​linearArray of objectsrequired
data[].​integrations.​linear[].​issueIdstringrequired

Linear issue ID

Example: "LIN-123"
data[].​integrations.​linear[].​issueUrlstring or nullrequired

URL to the Linear issue

Example: "https://linear.app/team/issue/LIN-123"
data[].​integrations.​jiraArray of objectsrequired
data[].​integrations.​jira[].​issueIdstringrequired

Jira issue ID

Example: "PROJ-456"
data[].​integrations.​jira[].​issueUrlstring or nullrequired

URL to the Jira issue

Example: "https://company.atlassian.net/browse/PROJ-456"
data[].​integrations.​clickupArray of objectsrequired
data[].​integrations.​clickup[].​idstringrequired

ClickUp task ID

Example: "86a1b2c3d"
data[].​integrations.​clickup[].​urlstringrequired

URL to the ClickUp task

Example: "https://app.clickup.com/t/86a1b2c3d"
data[].​integrations.​clickup[].​titlestringrequired

ClickUp task title

Example: "Fix login bug"
data[].​integrations.​githubArray of objectsrequired
data[].​integrations.​github[].​idstringrequired

GitHub issue ID

Example: "1234567890"
data[].​integrations.​github[].​numberstringrequired

GitHub issue number

Example: "42"
data[].​integrations.​github[].​repositoryNamestringrequired

Repository name

Example: "frontend"
data[].​integrations.​github[].​repositoryFullNamestringrequired

Full repository name (owner/repo)

Example: "acme/frontend"
data[].​integrations.​github[].​urlstringrequired

URL to the GitHub issue

Example: "https://github.com/acme/frontend/issues/42"
data[].​integrations.​github[].​titlestringrequired

GitHub issue title

Example: "Login page returns 403"
data[].​integrations.​devopsArray of objectsrequired
data[].​integrations.​devops[].​idnumberrequired

Azure DevOps work item ID

Example: 789
data[].​integrations.​devops[].​urlstringrequired

URL to the work item

Example: "https://dev.azure.com/org/project/_workitems/edit/789"
data[].​integrations.​devops[].​projectIdstringrequired

Azure DevOps project ID

Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
data[].​integrations.​devops[].​projectNamestringrequired

Azure DevOps project name

Example: "My Project"
data[].​integrations.​devops[].​titlestringrequired

Work item title

Example: "Implement SSO"
data[].​integrations.​hubspotArray of objectsrequired
data[].​integrations.​hubspot[].​objectIdnumberrequired

HubSpot object ID

Example: 12345
data[].​integrations.​hubspot[].​typestringrequired

HubSpot object type

Enum"TICKET""DEAL""CONTACT"
Example: "DEAL"
data[].​integrations.​hubspot[].​dealAmountnumber or nullrequired

Deal amount (for DEAL type)

Example: 5000
data[].​integrations.​hubspot[].​dealClosedboolean or nullrequired

Whether the deal is closed (for DEAL type)

Example: false
nextCursorstring or null<= 512 charactersrequired

Cursor for fetching the next page

Example: "eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9"
Response
application/json
{ "object": "list", "data": [], "nextCursor": "eyJpZCI6IjUwN2YxZjc3YmNmODZjZDc5OTQzOTAxMSJ9" }

Create a ticket

Request

Creates a new ticket.

Required Fields

FieldTypeDescription
ticketCategoryIdstringTicket category ID
titlestringTicket title (min 2 characters)
authorobjectAuthor/contact info (id, userId, email, name, profilePicture)

Optional Fields

FieldTypeDescription
contentstringTicket description (HTML)
customFieldsobjectCustom field values
companyIdstringCompany to associate
linkedConversationIdstringConversation to link
assigneeIdstringAdmin to assign
statusIdstringInitial status
createdAtstringISO 8601 timestamp for backdating
skipNotificationsbooleanSkip sending notifications (default false)

File Custom Fields

File-type custom fields can be provided in two ways:

Method 1: Multipart upload — Send the request as multipart/form-data. Put the JSON body in a field named data, and attach files with field names like customFields.<fieldId>. For allowMultiple fields, send multiple files with the same field name.

Method 2: External URL — In the JSON body, set the file custom field value to { "url": "https://..." }. Optionally include "name" to set the filename (e.g. { "url": "https://...", "name": "report.pdf" }); if omitted, the filename is extracted from the download response. For allowMultiple fields, use an array: [{ "url": "..." }, ...]. The server downloads the file (max 10MB, HTTPS only) and stores it.

Both methods produce signed download URLs in the response.

Limits: Max 10 files per request, 400MB total upload size. Executable file types (.exe, .bat, .js, .sh, etc.) are blocked.

Response format: File custom field values in the response are JSON strings containing { "key": "...", "name": "...", "url": "https://signed-url..." }. For allowMultiple fields, an array of these objects. The url is a time-limited signed download URL (expires in 1 hour).

Response

Returns the created ticket object with 201 Created status.

Security
bearerAuth
Headers
Featurebase-Versionstring(FeaturebaseVersion)

API version for this request. Defaults to your organization's configured API version if not specified.

Example: 2026-01-01.nova
Bodyapplication/json
ticketCategoryIdstringrequired
Example: "507f1f77bcf86cd799439011"
titlestring>= 2 charactersrequired
Example: "Cannot login to dashboard"
contentstring
Default ""
Example: "<p>I get a 403 error when logging in.</p>"
authorobject(AuthorInput)required

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.

author.​idstring

Featurebase user ID to attribute content to

Example: "507f1f77bcf86cd799439011"
author.​userIdstring<= 255 characters

External user ID from your system (matched via SSO)

Example: "usr_12345"
author.​emailstring(email)

Author email (used to find or create user)

Example: "john@example.com"
author.​namestring<= 255 characters

Author display name

Example: "John Doe"
author.​profilePicturestring

Author profile picture URL

Example: "https://example.com/avatar.png"
customFieldsobject
companyIdstring
Example: "507f1f77bcf86cd799439015"
linkedConversationIdstring
Example: "507f1f77bcf86cd799439012"
assigneeIdstring
Example: "507f1f77bcf86cd799439013"
createdAtstring or null
Example: "2025-01-15T10:30:00.000Z"
skipNotificationsboolean
Default false
Example: false
statusIdstring
Example: "507f1f77bcf86cd799439016"
curl -i -X POST \
  https://docs.featurebase.app/_mock/rest-api/v2/tickets \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'Featurebase-Version: 2026-01-01.nova' \
  -d '{
    "ticketCategoryId": "507f1f77bcf86cd799439011",
    "title": "Cannot login to dashboard",
    "content": "<p>I get a 403 error when logging in.</p>",
    "author": {
      "id": "507f1f77bcf86cd799439011",
      "userId": "usr_12345",
      "email": "john@example.com",
      "name": "John Doe",
      "profilePicture": "https://example.com/avatar.png"
    },
    "customFields": {
      "property1": null,
      "property2": null
    },
    "companyId": "507f1f77bcf86cd799439015",
    "linkedConversationId": "507f1f77bcf86cd799439012",
    "assigneeId": "507f1f77bcf86cd799439013",
    "createdAt": "2025-01-15T10:30:00.000Z",
    "skipNotifications": false,
    "statusId": "507f1f77bcf86cd799439016"
  }'

Responses

Created

Bodyapplication/json
objectstringrequired

Object type identifier

Value"ticket"
Example: "ticket"
idstringrequired

Unique identifier (MongoDB ID)

Example: "507f1f77bcf86cd799439011"
ticketNumbernumberrequired

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

Example: 42
titlestringrequired

Ticket title

Example: "Cannot login to dashboard"
contentstringrequired

Ticket content/description (HTML)

Example: "<p>I get a 403 error when logging in.</p>"
ticketCategoryIdstringrequired

Ticket category ID

Example: "507f1f77bcf86cd799439011"
categoryTypestringrequired

Ticket category type

Enum"customer""tracker""back-office"
Example: "customer"
ticketUrlstringrequired

Full URL to view the ticket

Example: "https://feedback.example.com/p/cannot-login"
authorobject or null(TicketAuthor)required

Contact who created the ticket

author.​idstring or nullrequired

Author unique identifier

Example: "507f1f77bcf86cd799439011"
author.​namestringrequired

Author display name

Example: "John Doe"
author.​emailstring or nullrequired

Author email

Example: "john@example.com"
author.​profilePicturestring or nullrequired

Author profile picture URL

Example: "https://cdn.example.com/avatars/john.png"
author.​typestringrequired

Type of user

Enum"admin""customer""guest""integration""bot""lead"
Example: "customer"
statusobjectrequired

Current ticket status

status.​objectstringrequired

Object type identifier

Value"post_status"
Example: "post_status"
status.​idstringrequired

Unique identifier

Example: "507f1f77bcf86cd799439011"
status.​namestringrequired

Display name

Example: "In Progress"
status.​colorstringrequired

Color for UI display

Example: "Blue"
status.​typestringrequired

The workflow stage this status represents

Enum"reviewing""unstarted""active""completed""canceled"
Example: "active"
status.​isDefaultbooleanrequired

Whether this is the default status for new posts

Example: false
customFieldsobjectrequired

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.

Example: {"priority":"high","507f1f77bcf86cd799439099":"{\"key\":\"org/pending/file.pdf\",\"name\":\"document.pdf\",\"url\":\"https://...\"}"}
customFields.​property name*anyadditional property
companyIdstring or nullrequired

Associated company ID

Example: "507f1f77bcf86cd799439015"
assigneeIdstring or nullrequired

Assigned admin ID

Example: "507f1f77bcf86cd799439013"
teamAssigneeIdstring or nullrequired

Assigned team ID (from linked conversation)

Example: "507f1f77bcf86cd799439014"
openbooleanrequired

Whether the ticket is open

Example: true
snoozedUntilstring or nullrequired

ISO 8601 timestamp until snoozed (from linked conversation)

Example: "2025-01-16T09:00:00.000Z"
linkedConversationsArray of objects(LinkedConversation)required

Linked conversations

linkedConversations[].​idstringrequired

Conversation ID

Example: "507f1f77bcf86cd799439011"
linkedConversations[].​rolestringrequired

Link role

Enum"customer""tracker""back-office"
Example: "customer"
conversationPartsArray of any(ConversationPart)

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

createdAtstringrequired

ISO 8601 creation timestamp

Example: "2025-01-15T10:30:00.000Z"
updatedAtstringrequired

ISO 8601 last updated timestamp

Example: "2025-01-15T12:30:00.000Z"
integrationsobjectrequired

Third-party integration links

integrations.​linearArray of objectsrequired
integrations.​linear[].​issueIdstringrequired

Linear issue ID

Example: "LIN-123"
integrations.​linear[].​issueUrlstring or nullrequired

URL to the Linear issue

Example: "https://linear.app/team/issue/LIN-123"
integrations.​jiraArray of objectsrequired
integrations.​jira[].​issueIdstringrequired

Jira issue ID

Example: "PROJ-456"
integrations.​jira[].​issueUrlstring or nullrequired

URL to the Jira issue

Example: "https://company.atlassian.net/browse/PROJ-456"
integrations.​clickupArray of objectsrequired
integrations.​clickup[].​idstringrequired

ClickUp task ID

Example: "86a1b2c3d"
integrations.​clickup[].​urlstringrequired

URL to the ClickUp task

Example: "https://app.clickup.com/t/86a1b2c3d"
integrations.​clickup[].​titlestringrequired

ClickUp task title

Example: "Fix login bug"
integrations.​githubArray of objectsrequired
integrations.​github[].​idstringrequired

GitHub issue ID

Example: "1234567890"
integrations.​github[].​numberstringrequired

GitHub issue number

Example: "42"
integrations.​github[].​repositoryNamestringrequired

Repository name

Example: "frontend"
integrations.​github[].​repositoryFullNamestringrequired

Full repository name (owner/repo)

Example: "acme/frontend"
integrations.​github[].​urlstringrequired

URL to the GitHub issue

Example: "https://github.com/acme/frontend/issues/42"
integrations.​github[].​titlestringrequired

GitHub issue title

Example: "Login page returns 403"
integrations.​devopsArray of objectsrequired
integrations.​devops[].​idnumberrequired

Azure DevOps work item ID

Example: 789
integrations.​devops[].​urlstringrequired

URL to the work item

Example: "https://dev.azure.com/org/project/_workitems/edit/789"
integrations.​devops[].​projectIdstringrequired

Azure DevOps project ID

Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
integrations.​devops[].​projectNamestringrequired

Azure DevOps project name

Example: "My Project"
integrations.​devops[].​titlestringrequired

Work item title

Example: "Implement SSO"
integrations.​hubspotArray of objectsrequired
integrations.​hubspot[].​objectIdnumberrequired

HubSpot object ID

Example: 12345
integrations.​hubspot[].​typestringrequired

HubSpot object type

Enum"TICKET""DEAL""CONTACT"
Example: "DEAL"
integrations.​hubspot[].​dealAmountnumber or nullrequired

Deal amount (for DEAL type)

Example: 5000
integrations.​hubspot[].​dealClosedboolean or nullrequired

Whether the deal is closed (for DEAL type)

Example: false
Response
application/json
{ "object": "ticket", "id": "507f1f77bcf86cd799439011", "ticketNumber": 42, "title": "Cannot login to dashboard", "content": "<p>I get a 403 error when logging in.</p>", "ticketCategoryId": "507f1f77bcf86cd799439011", "categoryType": "customer", "ticketUrl": "https://feedback.example.com/p/cannot-login", "author": { "id": "507f1f77bcf86cd799439011", "name": "John Doe", "email": "john@example.com", "profilePicture": "https://cdn.example.com/avatars/john.png", "type": "customer" }, "status": { "object": "post_status", "id": "507f1f77bcf86cd799439011", "name": "In Progress", "color": "Blue", "type": "active", "isDefault": false }, "customFields": { "priority": "high", "507f1f77bcf86cd799439099": "{\"key\":\"org/pending/file.pdf\",\"name\":\"document.pdf\",\"url\":\"https://...\"}" }, "companyId": "507f1f77bcf86cd799439015", "assigneeId": "507f1f77bcf86cd799439013", "teamAssigneeId": "507f1f77bcf86cd799439014", "open": true, "snoozedUntil": "2025-01-16T09:00:00.000Z", "linkedConversations": [ {} ], "conversationParts": [ {} ], "createdAt": "2025-01-15T10:30:00.000Z", "updatedAt": "2025-01-15T12:30:00.000Z", "integrations": { "linear": [], "jira": [], "clickup": [], "github": [], "devops": [], "hubspot": [] } }

Get a ticket

Request

Retrieves a single ticket by its ticket number.

Path Parameters

  • id - The ticket number (e.g. 42 from TK-42)

Response

Returns the ticket object, including conversationParts from the linked conversation (message history).

Security
bearerAuth
Path
idinteger>= 1required
Headers
Featurebase-Versionstring(FeaturebaseVersion)

API version for this request. Defaults to your organization's configured API version if not specified.

Example: 2026-01-01.nova
curl -i -X GET \
  'https://docs.featurebase.app/_mock/rest-api/v2/tickets/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Featurebase-Version: 2026-01-01.nova'

Responses

Success

Bodyapplication/json
objectstringrequired

Object type identifier

Value"ticket"
Example: "ticket"
idstringrequired

Unique identifier (MongoDB ID)

Example: "507f1f77bcf86cd799439011"
ticketNumbernumberrequired

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

Example: 42
titlestringrequired

Ticket title

Example: "Cannot login to dashboard"
contentstringrequired

Ticket content/description (HTML)

Example: "<p>I get a 403 error when logging in.</p>"
ticketCategoryIdstringrequired

Ticket category ID

Example: "507f1f77bcf86cd799439011"
categoryTypestringrequired

Ticket category type

Enum"customer""tracker""back-office"
Example: "customer"
ticketUrlstringrequired

Full URL to view the ticket

Example: "https://feedback.example.com/p/cannot-login"
authorobject or null(TicketAuthor)required

Contact who created the ticket

author.​idstring or nullrequired

Author unique identifier

Example: "507f1f77bcf86cd799439011"
author.​namestringrequired

Author display name

Example: "John Doe"
author.​emailstring or nullrequired

Author email

Example: "john@example.com"
author.​profilePicturestring or nullrequired

Author profile picture URL

Example: "https://cdn.example.com/avatars/john.png"
author.​typestringrequired

Type of user

Enum"admin""customer""guest""integration""bot""lead"
Example: "customer"
statusobjectrequired

Current ticket status

status.​objectstringrequired

Object type identifier

Value"post_status"
Example: "post_status"
status.​idstringrequired

Unique identifier

Example: "507f1f77bcf86cd799439011"
status.​namestringrequired

Display name

Example: "In Progress"
status.​colorstringrequired

Color for UI display

Example: "Blue"
status.​typestringrequired

The workflow stage this status represents

Enum"reviewing""unstarted""active""completed""canceled"
Example: "active"
status.​isDefaultbooleanrequired

Whether this is the default status for new posts

Example: false
customFieldsobjectrequired

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.

Example: {"priority":"high","507f1f77bcf86cd799439099":"{\"key\":\"org/pending/file.pdf\",\"name\":\"document.pdf\",\"url\":\"https://...\"}"}
customFields.​property name*anyadditional property
companyIdstring or nullrequired

Associated company ID

Example: "507f1f77bcf86cd799439015"
assigneeIdstring or nullrequired

Assigned admin ID

Example: "507f1f77bcf86cd799439013"
teamAssigneeIdstring or nullrequired

Assigned team ID (from linked conversation)

Example: "507f1f77bcf86cd799439014"
openbooleanrequired

Whether the ticket is open

Example: true
snoozedUntilstring or nullrequired

ISO 8601 timestamp until snoozed (from linked conversation)

Example: "2025-01-16T09:00:00.000Z"
linkedConversationsArray of objects(LinkedConversation)required

Linked conversations

linkedConversations[].​idstringrequired

Conversation ID

Example: "507f1f77bcf86cd799439011"
linkedConversations[].​rolestringrequired

Link role

Enum"customer""tracker""back-office"
Example: "customer"
conversationPartsArray of any(ConversationPart)

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

createdAtstringrequired

ISO 8601 creation timestamp

Example: "2025-01-15T10:30:00.000Z"
updatedAtstringrequired

ISO 8601 last updated timestamp

Example: "2025-01-15T12:30:00.000Z"
integrationsobjectrequired

Third-party integration links

integrations.​linearArray of objectsrequired
integrations.​linear[].​issueIdstringrequired

Linear issue ID

Example: "LIN-123"
integrations.​linear[].​issueUrlstring or nullrequired

URL to the Linear issue

Example: "https://linear.app/team/issue/LIN-123"
integrations.​jiraArray of objectsrequired
integrations.​jira[].​issueIdstringrequired

Jira issue ID

Example: "PROJ-456"
integrations.​jira[].​issueUrlstring or nullrequired

URL to the Jira issue

Example: "https://company.atlassian.net/browse/PROJ-456"
integrations.​clickupArray of objectsrequired
integrations.​clickup[].​idstringrequired

ClickUp task ID

Example: "86a1b2c3d"
integrations.​clickup[].​urlstringrequired

URL to the ClickUp task

Example: "https://app.clickup.com/t/86a1b2c3d"
integrations.​clickup[].​titlestringrequired

ClickUp task title

Example: "Fix login bug"
integrations.​githubArray of objectsrequired
integrations.​github[].​idstringrequired

GitHub issue ID

Example: "1234567890"
integrations.​github[].​numberstringrequired

GitHub issue number

Example: "42"
integrations.​github[].​repositoryNamestringrequired

Repository name

Example: "frontend"
integrations.​github[].​repositoryFullNamestringrequired

Full repository name (owner/repo)

Example: "acme/frontend"
integrations.​github[].​urlstringrequired

URL to the GitHub issue

Example: "https://github.com/acme/frontend/issues/42"
integrations.​github[].​titlestringrequired

GitHub issue title

Example: "Login page returns 403"
integrations.​devopsArray of objectsrequired
integrations.​devops[].​idnumberrequired

Azure DevOps work item ID

Example: 789
integrations.​devops[].​urlstringrequired

URL to the work item

Example: "https://dev.azure.com/org/project/_workitems/edit/789"
integrations.​devops[].​projectIdstringrequired

Azure DevOps project ID

Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
integrations.​devops[].​projectNamestringrequired

Azure DevOps project name

Example: "My Project"
integrations.​devops[].​titlestringrequired

Work item title

Example: "Implement SSO"
integrations.​hubspotArray of objectsrequired
integrations.​hubspot[].​objectIdnumberrequired

HubSpot object ID

Example: 12345
integrations.​hubspot[].​typestringrequired

HubSpot object type

Enum"TICKET""DEAL""CONTACT"
Example: "DEAL"
integrations.​hubspot[].​dealAmountnumber or nullrequired

Deal amount (for DEAL type)

Example: 5000
integrations.​hubspot[].​dealClosedboolean or nullrequired

Whether the deal is closed (for DEAL type)

Example: false
Response
application/json
{ "object": "ticket", "id": "507f1f77bcf86cd799439011", "ticketNumber": 42, "title": "Cannot login to dashboard", "content": "<p>I get a 403 error when logging in.</p>", "ticketCategoryId": "507f1f77bcf86cd799439011", "categoryType": "customer", "ticketUrl": "https://feedback.example.com/p/cannot-login", "author": { "id": "507f1f77bcf86cd799439011", "name": "John Doe", "email": "john@example.com", "profilePicture": "https://cdn.example.com/avatars/john.png", "type": "customer" }, "status": { "object": "post_status", "id": "507f1f77bcf86cd799439011", "name": "In Progress", "color": "Blue", "type": "active", "isDefault": false }, "customFields": { "priority": "high", "507f1f77bcf86cd799439099": "{\"key\":\"org/pending/file.pdf\",\"name\":\"document.pdf\",\"url\":\"https://...\"}" }, "companyId": "507f1f77bcf86cd799439015", "assigneeId": "507f1f77bcf86cd799439013", "teamAssigneeId": "507f1f77bcf86cd799439014", "open": true, "snoozedUntil": "2025-01-16T09:00:00.000Z", "linkedConversations": [ {} ], "conversationParts": [ {} ], "createdAt": "2025-01-15T10:30:00.000Z", "updatedAt": "2025-01-15T12:30:00.000Z", "integrations": { "linear": [], "jira": [], "clickup": [], "github": [], "devops": [], "hubspot": [] } }

Webhooks

Webhooks allow you to receive real-time HTTP callbacks when events occur in your Featurebase organization. Configure webhook endpoints to subscribe to specific event types.

Operations