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}
string
required

Scan dependents (segments / campaigns / flows / contacts)

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

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

GET /api/v1/custom-fields/{id}/explorer
string
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/reorder
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
string
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