Set Field Values Batch
PATCH /fields/values/batch
Write custom column values to one OR many rows in a single call.
The batch counterpart of PATCH /fields/{column_id}/values. Each row
carries its own record_id and a list of {column_id, value} pairs;
every row shares the top-level entity. A single-row update is just a
rows list of length one.
Partial success: each row is applied inside its own SAVEPOINT, so a bad row
(missing record, unknown column) is reported ok: false in results[]
while the remaining rows still commit. Pass value=null (or omit it) on a
pair to clear that column for the row.
Limits: 1-500 rows per call; a record_id may appear only once per call
(fold that record’s writes into one row) - duplicates 400.
Efficiency: all referenced column_ids are resolved in one query and all
record_ids are existence-checked in one query, then each row is written
with a single multi-column upsert (N+2 statements, not N*M).
Authorizations
Parameters
Header Parameters
Request Body required
Write custom column values to one OR many contact/company rows at once.
object
Target entity, SHARED across every row: ‘contacts’ or ‘companies’.
Rows to update (1-500). Each carries its own record_id + fields[].
One row (contact or company) plus the columns to set on it.
object
Contact ID (entity=‘contacts’) or company ID (entity=‘companies’).
Opt-in status-code semantics. Default false keeps the historical behaviour: always HTTP 200, per-row outcomes in results[]. When true, a batch where EVERY row failed returns 422 and a partially-failed batch returns 207 Multi-Status, so a client that only checks the status code cannot mistake a total failure for success. The response body is identical either way.
Responses
200
Successful Response
object
object
True when rows were requested and NONE were written.
Rows that could not be written (see results[].error).
422
Validation Error