Docs Blog Sign in

Ticket Fields

Custom ticket fields let you capture additional structured data on every ticket. The API returns both system fields (e.g. status, priority) and custom fields you create.

The ticket field object

AttributeTypeDescription
idstringUnique identifier (system fields use system_* prefix)
titlestringDisplay name
fieldKeystringMachine-readable key (immutable after creation)
typestringField type (immutable after creation)
descriptionstring | nullField description
positionintegerDisplay order
activebooleanWhether the field is active
requiredForAgentsbooleanRequired when agents submit tickets
requiredForEndUsersbooleanRequired on end-user forms
visibleToEndUsersbooleanShown on end-user forms
editableByEndUsersbooleanEditable by end users
regexPatternstring | nullValidation regex
defaultValuestring | nullDefault value
optionsarray | nullFor dropdown/multiselect types
createdAtstringCreation time (ISO 8601 UTC)
updatedAtstringLast update time (ISO 8601 UTC)

Supported field types

text, textarea, number, decimal, checkbox, date, dropdown, multiselect, regex

List ticket fields

GET /helpdesk/api/v1/ticket_fields

Returns system fields (on the first page) followed by custom fields. Supports cursor pagination.

Query parameters

ParameterTypeRequiredDescription
activebooleannoFilter by active status
page_sizeintegernoResults per page
afterstringnoCursor for next page
sort_bystringnoposition, title, created_at (default: position)
sort_orderstringnoasc or desc

Response

{
  "ticketFields": [ ... ],
  "meta": { "pageSize": 25, "hasMore": false },
  "links": { "next": null }
}

Retrieve a ticket field

GET /helpdesk/api/v1/ticket_fields/:id

Works for both system and custom fields.

Create a ticket field

POST /helpdesk/api/v1/ticket_fields

Requires admin permission.

Request body

{
  "ticketField": {
    "title": "Region",
    "type": "dropdown",
    "fieldKey": "region",
    "description": "Customer region",
    "requiredForAgents": false,
    "options": [
      { "name": "North America", "value": "na", "default": true },
      { "name": "Europe", "value": "eu", "default": false }
    ]
  }
}

Update a ticket field

PUT /helpdesk/api/v1/ticket_fields/:id

Requires admin permission. The type and fieldKey attributes are immutable and cannot be changed after creation. System fields (system_*) cannot be modified.

Delete a ticket field

DELETE /helpdesk/api/v1/ticket_fields/:id

Requires admin permission. System fields cannot be deleted.


Ticket Field Options

Manage individual options for dropdown and multiselect fields without replacing the full list.

The option object

AttributeTypeDescription
idstringOption identifier (e.g. opt_000)
namestringDisplay label
valuestringMachine-readable value (must be unique per field)
defaultbooleanWhether this is the default option

List options

GET /helpdesk/api/v1/ticket_fields/:fieldId/options

Response

{
  "customFieldOptions": [ ... ]
}

Retrieve an option

GET /helpdesk/api/v1/ticket_fields/:fieldId/options/:optionId

Create an option

POST /helpdesk/api/v1/ticket_fields/:fieldId/options

Requires admin permission. Maximum of 2000 options per field.

Request body

{
  "customFieldOption": {
    "name": "Asia Pacific",
    "value": "apac",
    "default": false
  }
}

Update an option

PUT /helpdesk/api/v1/ticket_fields/:fieldId/options/:optionId

Requires admin permission.

Delete an option

DELETE /helpdesk/api/v1/ticket_fields/:fieldId/options/:optionId

Requires admin permission. Fails if the option is currently in use on tickets.

Error codes

CodeStatusDescription
BAD_REQUEST400Missing required request body
IMMUTABLE_FIELD422Cannot change type or fieldKey after creation
SYSTEM_FIELD422System fields cannot be modified or deleted
INVALID_FIELD_TYPE422Options only available for dropdown/multiselect fields
DUPLICATE_OPTION_VALUE409An option with this value already exists
TOO_MANY_OPTIONS422Maximum of 2000 options per field
OPTION_IN_USE422Cannot delete an option that is in use on tickets