---
title: "Bulk update subscriber custom field values"
method: POST
path: "/v4/bulk/custom_fields/subscribers"
tags: ["Custom Fields"]
---

# Bulk update subscriber custom field values

`POST /v4/bulk/custom_fields/subscribers`

Creates or updates custom field values for many subscribers in one request. Each entry in `custom_field_values` pairs a `subscriber_id` with a `subscriber_custom_field_id` and the `value` to set. Requires OAuth authentication.

Requests with 100 or fewer values are processed synchronously (`200`); larger requests are processed asynchronously (`202`) — provide a `callback_url` to be notified on completion, and see [Bulk & async processing](/api-reference/bulk-and-async-processing) for how async requests behave. Returns `413` when the request would exceed the account's data limit for enqueued bulk requests.

The custom fields must already exist — entries referencing an unknown `subscriber_custom_field_id` are rejected individually with a `Custom field does not exist` error in the response's failures list, while the rest of the batch is still processed. See [List custom fields](/api-reference/custom-fields/list-custom-fields) and [Bulk create custom fields](/api-reference/custom-fields/bulk-create-custom-fields).

## Request body

- object
  - `custom_field_values` object[], required
    - `subscriber_id` integer, nullable, required
    - `subscriber_custom_field_id` integer, required
    - `value` string, required
  - `callback_url` unknown, required

## Response `200`

Creates or updates custom field values synchronously when 100 or less values are requested

- object
  - `custom_field_values` object[], required
    - `subscriber_id` integer, required
    - `subscriber_custom_field_id` integer, required
    - `value` string, required
  - `failures` object[], required
    - `errors` string[], required
    - `custom_field_value` object, required
      - `subscriber_id` integer, nullable, required
      - `subscriber_custom_field_id` integer, required
      - `value` string, required

## Other responses

- `202` — Creates or updates custom field values asynchronously when more than 100 values are requested
- `401` — Returns a 401 if the token and/or account cannot be authenticated
- `413` — Returns a 413 when the size of the request would exceed the account's data limit for enqueued bulk requests
- `422` — Returns a 422 when `custom_field_values` is empty or not an array

---

[API](https://skmtc.net/kit/apis/kit-api.md) · [All operations](https://skmtc.net/kit/apis/kit-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kit/kit-api/revisions/0df0c90d12da/schema)
