Create a ticket
Creates a new ticket.
Required Fields
| Field | Type | Description |
|---|---|---|
ticketCategoryId | string | Ticket category ID |
title | string | Ticket title (min 2 characters) |
author | object | Author/contact info (id, userId, email, name, profilePicture) |
Optional Fields
| Field | Type | Description |
|---|---|---|
content | string | Ticket description (HTML) |
customFields | object | Custom field values |
companyId | string | Company to associate |
linkedConversationId | string | Conversation to link |
assigneeId | string | Admin to assign |
statusId | string | Initial status |
createdAt | string | ISO 8601 timestamp for backdating |
skipNotifications | boolean | Skip 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.
Body ParametersJSON
Create a ticket
curl https://do.featurebase.app/v2/tickets \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $FEATUREBASE_API_KEY" \
-d '{
"author": {},
"ticketCategoryId": "507f1f77bcf86cd799439011",
"title": "Cannot login to dashboard",
"assigneeId": "507f1f77bcf86cd799439013",
"companyId": "507f1f77bcf86cd799439015",
"content": "<p>I get a 403 error when logging in.</p>",
"createdAt": "2025-01-15T10:30:00.000Z",
"linkedConversationId": "507f1f77bcf86cd799439012",
"statusId": "507f1f77bcf86cd799439016"
}'{
"id": "507f1f77bcf86cd799439011",
"assigneeId": "507f1f77bcf86cd799439013",
"author": {
"id": "507f1f77bcf86cd799439011",
"email": "john@example.com",
"name": "John Doe",
"profilePicture": "https://cdn.example.com/avatars/john.png",
"type": "customer"
},
"categoryType": "customer",
"companyId": "507f1f77bcf86cd799439015",
"content": "<p>I get a 403 error when logging in.</p>",
"createdAt": "2025-01-15T10:30:00.000Z",
"customFields": {
"priority": "bar",
"507f1f77bcf86cd799439099": "bar"
},
"integrations": {
"clickup": [
{
"id": "86a1b2c3d",
"title": "Fix login bug",
"url": "https://app.clickup.com/t/86a1b2c3d"
}
],
"devops": [
{
"id": 789,
"projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"projectName": "My Project",
"title": "Implement SSO",
"url": "https://dev.azure.com/org/project/_workitems/edit/789"
}
],
"github": [
{
"id": "1234567890",
"number": "42",
"repositoryFullName": "acme/frontend",
"repositoryName": "frontend",
"title": "Login page returns 403",
"url": "https://github.com/acme/frontend/issues/42"
}
],
"hubspot": [
{
"dealAmount": 5000,
"dealClosed": false,
"objectId": 12345,
"type": "DEAL"
}
],
"jira": [
{
"issueId": "PROJ-456",
"issueUrl": "https://company.atlassian.net/browse/PROJ-456"
}
],
"linear": [
{
"issueId": "LIN-123",
"issueUrl": "https://linear.app/team/issue/LIN-123"
}
]
},
"linkedConversations": [
{
"id": "507f1f77bcf86cd799439011",
"role": "customer"
}
],
"object": "ticket",
"open": true,
"snoozedUntil": "2025-01-16T09:00:00.000Z",
"status": {
"id": "507f1f77bcf86cd799439011",
"color": "Blue",
"isDefault": false,
"name": "In Progress",
"object": "post_status",
"type": "active"
},
"teamAssigneeId": "507f1f77bcf86cd799439014",
"ticketCategoryId": "507f1f77bcf86cd799439011",
"ticketNumber": 42,
"ticketUrl": "https://feedback.example.com/p/cannot-login",
"title": "Cannot login to dashboard",
"updatedAt": "2025-01-15T12:30:00.000Z",
"conversationParts": [
{
"id": "1",
"bodyHtml": "<p>Hello, I have a question about your product.</p>",
"bodyMarkdown": "Hello, I have a question about your product.",
"channel": "desktop",
"createdAt": "2025-01-15T10:30:00.000Z",
"object": "conversation_part",
"partType": "user_msg",
"updatedAt": "2025-01-15T10:30:00.000Z",
"author": {
"id": "676f0f6765bdaa7d7d760f88",
"type": "customer",
"email": "john@example.com",
"name": "John Doe",
"profilePicture": "https://cdn.example.com/avatars/user.png"
},
"redacted": false,
"tagApplications": [
{
"appliedAt": "2025-01-15T10:30:00.000Z",
"tagId": "67ec1234abcd5678ef901234",
"appliedBy": {
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"name": "John Doe"
},
"removedAt": "2025-01-15T11:00:00.000Z",
"removedBy": {
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"name": "John Doe"
},
"tag": {
"id": "67ec1234abcd5678ef901234",
"name": "Churn",
"type": "tag"
}
}
]
}
]
}Returns Examples
{
"id": "507f1f77bcf86cd799439011",
"assigneeId": "507f1f77bcf86cd799439013",
"author": {
"id": "507f1f77bcf86cd799439011",
"email": "john@example.com",
"name": "John Doe",
"profilePicture": "https://cdn.example.com/avatars/john.png",
"type": "customer"
},
"categoryType": "customer",
"companyId": "507f1f77bcf86cd799439015",
"content": "<p>I get a 403 error when logging in.</p>",
"createdAt": "2025-01-15T10:30:00.000Z",
"customFields": {
"priority": "bar",
"507f1f77bcf86cd799439099": "bar"
},
"integrations": {
"clickup": [
{
"id": "86a1b2c3d",
"title": "Fix login bug",
"url": "https://app.clickup.com/t/86a1b2c3d"
}
],
"devops": [
{
"id": 789,
"projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"projectName": "My Project",
"title": "Implement SSO",
"url": "https://dev.azure.com/org/project/_workitems/edit/789"
}
],
"github": [
{
"id": "1234567890",
"number": "42",
"repositoryFullName": "acme/frontend",
"repositoryName": "frontend",
"title": "Login page returns 403",
"url": "https://github.com/acme/frontend/issues/42"
}
],
"hubspot": [
{
"dealAmount": 5000,
"dealClosed": false,
"objectId": 12345,
"type": "DEAL"
}
],
"jira": [
{
"issueId": "PROJ-456",
"issueUrl": "https://company.atlassian.net/browse/PROJ-456"
}
],
"linear": [
{
"issueId": "LIN-123",
"issueUrl": "https://linear.app/team/issue/LIN-123"
}
]
},
"linkedConversations": [
{
"id": "507f1f77bcf86cd799439011",
"role": "customer"
}
],
"object": "ticket",
"open": true,
"snoozedUntil": "2025-01-16T09:00:00.000Z",
"status": {
"id": "507f1f77bcf86cd799439011",
"color": "Blue",
"isDefault": false,
"name": "In Progress",
"object": "post_status",
"type": "active"
},
"teamAssigneeId": "507f1f77bcf86cd799439014",
"ticketCategoryId": "507f1f77bcf86cd799439011",
"ticketNumber": 42,
"ticketUrl": "https://feedback.example.com/p/cannot-login",
"title": "Cannot login to dashboard",
"updatedAt": "2025-01-15T12:30:00.000Z",
"conversationParts": [
{
"id": "1",
"bodyHtml": "<p>Hello, I have a question about your product.</p>",
"bodyMarkdown": "Hello, I have a question about your product.",
"channel": "desktop",
"createdAt": "2025-01-15T10:30:00.000Z",
"object": "conversation_part",
"partType": "user_msg",
"updatedAt": "2025-01-15T10:30:00.000Z",
"author": {
"id": "676f0f6765bdaa7d7d760f88",
"type": "customer",
"email": "john@example.com",
"name": "John Doe",
"profilePicture": "https://cdn.example.com/avatars/user.png"
},
"redacted": false,
"tagApplications": [
{
"appliedAt": "2025-01-15T10:30:00.000Z",
"tagId": "67ec1234abcd5678ef901234",
"appliedBy": {
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"name": "John Doe"
},
"removedAt": "2025-01-15T11:00:00.000Z",
"removedBy": {
"type": "admin",
"id": "507f1f77bcf86cd799439011",
"name": "John Doe"
},
"tag": {
"id": "67ec1234abcd5678ef901234",
"name": "Churn",
"type": "tag"
}
}
]
}
]
}