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}string
required
—
Scan dependents (segments / campaigns / flows / contacts)
GET /api/v1/custom-fields/{id}/dependenciesstring
required
—
Schema-explorer payload: definition + usage counts + last-10 PII-redacted sample values
GET /api/v1/custom-fields/{id}/explorerstring
required
—
Create a custom field definition
POST /api/v1/custom-fields/string
required
Human-readable display name for the field, shown in the dashboard and on the contact detail view (1–200 characters).
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.
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.string | null
Optional help text explaining what the field captures (up to 2000 characters). Send
null to clear it.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.string | null
Optional value applied to contacts that have no explicit value set (up to 2000 characters).
boolean
Whether a value must be present for the field. Defaults to false.
boolean
Whether the field is indexed for contact search and segmentation. Defaults to false.
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.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.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.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/reorderstring[]
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/valuesstring
required
Id of the contact whose custom-field value is being set (1–128 characters).
string
required
Machine
key of the custom-field definition to write, in snake_case (up to 40 characters).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}string
required
—
Delete a custom field definition
DELETE /api/v1/custom-fields/{id}string
required
—