---
title: "Bulk update users"
method: PATCH
path: "/v3/users/bulk"
tags: ["Users"]
---

# Bulk update users

`PATCH /v3/users/bulk`

Update up to the bulk-endpoint cap of users in a single request. Pass an array of user payloads in `data`; each entry must include the target `id` plus the same patchable fields accepted by `PATCH /v3/users/{id}`. Each row is processed independently and the response reports per-row success or failure. Use for HRIS-driven backfills of `employee_id`, office/department reassignments, or job title updates across many users.

## Request body

- object
  - `callback_url` string — Optional HTTPS URL Greenhouse will POST to when every row in `data` has finished. Omit to poll `GET /v3/bulk_requests/{bulk_action_uuid}` instead.
  - `data` object[], required — Array of single-resource update payloads to process. Each item must include the integer `id` of the record to update and otherwise match the schema of the matching non-bulk PATCH endpoint; rows are validated and executed independently.
    - `first_name` string
    - `last_name` string
    - `primary_email` string, email — New primary email for the user. Must already be a verified email address on the user's account — call the V1/V2 endpoint to add and verify a new email address before promoting it here.
    - `job_title` string — New job title for the user's Greenhouse profile.
    - `employee_id` string — Partner-supplied external employee identifier (typically the user's HRIS or payroll id) to set on the user.
    - `office_ids` integer[] — Greenhouse office ids to pin the user to. Replaces the user's current office assignments. Mutually exclusive with `external_office_ids`.
    - `external_office_ids` string[] — External office identifiers (the offices' `external_id`) to pin the user to. Replaces the user's current office assignments. Mutually exclusive with `office_ids`.
    - `department_ids` integer[] — Greenhouse department ids to pin the user to. Replaces the user's current department assignments. Mutually exclusive with `external_department_ids`.
    - `external_department_ids` string[] — External department identifiers (the departments' `external_id`) to pin the user to. Replaces the user's current department assignments. Mutually exclusive with `department_ids`.
    - `interviewer_tag_ids` integer[] — Ids of interviewer tags to apply to the user. Replaces the user's current set of interviewer tags.
    - `custom_fields` union[]
      - union
        - object
          - `name_key` string, required — Required if custom_field_id is not provided. Exactly one of name_key or custom_field_id must be specified.
          - `custom_field_id` integer — Required if name_key is not provided. Exactly one of name_key or custom_field_id must be specified.
          - `value` union
            - boolean
            - number — User ID
            - union
              - …
        - object
          - `name_key` string — Required if custom_field_id is not provided. Exactly one of name_key or custom_field_id must be specified.
          - `custom_field_id` integer, required — Required if name_key is not provided. Exactly one of name_key or custom_field_id must be specified.
          - `value` union
            - boolean
            - number — User ID
            - union
              - …
    - `id` integer, required

## Response `202`

Accepted

- object
  - `bulk_action_uuid` string — UUID assigned to the new bulk request. Use this with `GET /v3/bulk_requests/{bulk_action_uuid}` to monitor progress and retrieve per-row results.
  - `status` string — Initial lifecycle state of the new bulk request, typically `building` immediately after creation. See the bulk request response schema for the full set of values.
  - `status_url` string — Relative path that returns the current status of the bulk request. Append this to your Harvest base URL to fetch the latest state.

## Other responses

- `401` — Unauthorized
- `413` — Payload is larger than 10MB
- `422` — Validation Error
- `429` — Client has more than 5 active jobs

---

[API](https://skmtc.net/greenhouse/apis/auth-api.md) · [All operations](https://skmtc.net/greenhouse/apis/auth-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/greenhouse/auth-api/versions/9517a2e54640/schema)
