Set custom-field values on contacts (v2)
Changed onBatch-set per-contact custom-field VALUES (the contacts_custom_fields rows, not the field definitions). Body: { custom_fields: [{ contact_id, custom_field_id, text_value?, array_value?, date_value?, member_user_id?, number_value?, boolean_value?, linked_contact_ids?, mode?, separator? }] }. A workspace field of a workspace-only type takes exactly one key, replace-only: teammate member_user_id, multiselect array_value (the whole selection, de-duplicated, at most 100), number number_value (finite, |x| ≤ 1e15, null clears), boolean boolean_value (null clears), contact linked_contact_ids (the whole set, at most 50 non-archived contacts of the same workspace, never the holder; [] clears); any other key, mode or separator is a 400. mode is replace (default, overwrites), prepend or append — the latter two keep the stored value and add the new one before/after it atomically on the server (text joined by separator, default newline; arrays concatenated and de-duplicated; date_value only supports replace). Unknown contact or field IDs and IDs belonging to another user reject the batch identically with 404 record_not_found; archived owned contacts and same-creator contacts outside the resolved scope remain 400 validation_error. Requires Idempotency-Key. Returns { data: { affected } } (count of successful updates; per-row failures are skipped and logged).
Request
- Base URL: https://api.prod.getdex.com
- URL: https://api.prod.getdex.com/v2/custom-fields/contacts/values
- Auth: HTTP bearer
Headers
Required. UUID per logical operation, reused on every retry. See apps/rest-api/src/shared/idempotency.ts for the full contract. Missing → 400 BadRequest; same key + different body → 409 Conflict.
Request body
Response
Successful response
Changes
- info
added the new optional request property
// - info
added the new optional request property
// - info
added the new optional request property
//
- info
- info
added the new optional request property
//
- info