Skip to main content

CustomFields API

Tenant-defined fields attached to contacts and conversations Base path: /api/v1/custom-fields Endpoint count: 9

List custom field definitions

GET /api/v1/custom-fields/

Get a custom field definition

GET /api/v1/custom-fields/{id}
id
string
required

Scan dependents (segments / campaigns / flows / contacts)

GET /api/v1/custom-fields/{id}/dependencies
id
string
required

Schema-explorer payload: definition + usage counts + last-10 PII-redacted sample values

GET /api/v1/custom-fields/{id}/explorer
id
string
required

Create a custom field definition

POST /api/v1/custom-fields/
name
string
required
Human-readable display name for the field, shown in the dashboard and on the contact detail view (1–200 characters).
key
string
required
Immutable machine name used to read and write the value through the API. Must be snake_case — lowercase letters, digits, and underscores, starting with a letter or underscore — and at most 40 characters. Cannot be changed after creation.
type
string (enum: text|number|boolean|date|select|multiselect|user_ref)
required
Data type of the field. select and multiselect additionally require a non-empty options list.
description
string | null
Optional help text explaining what the field captures (up to 2000 characters). Send null to clear it.
options
string[]
Choice list for select / multiselect fields — required for those two types and ignored for the rest. Up to 100 values, each 1–200 characters.
default_value
string | null
Optional value applied to contacts that have no explicit value set (up to 2000 characters).
required
boolean
Whether a value must be present for the field. Defaults to false.
searchable
boolean
Whether the field is indexed for contact search and segmentation. Defaults to false.
validator_regex
string | null
Optional JavaScript regular expression (no flags) enforced on string-shaped values at write time (up to 200 characters). Send null to clear it.
min_len
integer | null
Optional inclusive lower bound — character length for text, numeric minimum for number, or selection count for multiselect (0–1000000). Send null to clear it.
max_len
integer | null
Optional inclusive upper bound, mirror of min_len. Must be greater than or equal to min_len (0–1000000). Send null to clear it.
enum_values
string[] | null
Optional allow-list of exact string values layered on top of the type — for text / select / multiselect / user_ref only. Up to 500 values, each 1–200 characters. Send null to clear it.

Reorder custom field definitions

POST /api/v1/custom-fields/reorder
ordered_ids
string[]
required
Custom-field definition ids in the desired top-to-bottom display order (1–500 ids). Unknown ids are ignored and any definitions omitted from the list keep their current order.

Set a custom-field value on a contact

PUT /api/v1/custom-fields/values
contact_id
string
required
Id of the contact whose custom-field value is being set (1–128 characters).
key
string
required
Machine key of the custom-field definition to write, in snake_case (up to 40 characters).
value
string | number | boolean | string[] | null
required
Value to store for this field. Its JSON type must match the field’s declared type — a string for text / select, a number for number, a boolean for boolean, an ISO-8601 string for date, or an array of strings for multiselect.

Update a custom field definition

PATCH /api/v1/custom-fields/{id}
id
string
required

Delete a custom field definition

DELETE /api/v1/custom-fields/{id}
id
string
required