---
title: "Update Concepts in Bulk"
method: PUT
path: "/v2/locations/concepts"
---

# Update Concepts in Bulk

`PUT /v2/locations/concepts`

Update up to 100 concepts in a single request.

## Query parameters

- `inheritLocale` boolean

## Request body

- object[]
  - `identifierName` 'ID' | 'CODE' | 'EXTERNAL_ID', required — How to identify the target concept. One of ID, CODE, EXTERNAL_ID (case-insensitive).
  - `identifierValue` string, required — The identifier value matching identifierName.
  - `name` string — Display name for the concept. Cannot be null or empty. Cannot equal ROOT (any case). Max 100 characters. Accepts letters, digits, underscores, and spaces.
  - `description` string, nullable — Free-text description. Set to null to clear.
  - `isAdmin` boolean — Whether the concept has admin access.
  - `isActive` boolean — Whether the concept is active. Deactivation fails if children are active. Activation fails if parent is inactive.
  - `isOrgUnit` boolean — Whether the concept functions as an organizational unit.
  - `groupParentCode` string — Code of the parent concept. Cannot be set to null. Provide a valid concept code to change the parent.
  - `externalIds` object, nullable — Key-value map of external identifiers. Omit to preserve. Pass null to clear all external identifiers. Pass {} to make no change. Set a key's value to null to remove that specific key. Maximum five entries. Keys and values must not exceed 200 characters each.
  - `customFields` object, nullable — Key-value map of custom field values. Omit to preserve. Pass null to clear all custom field values. Pass {} to make no change. Keys must match custom fields configured for the org.
  - `language` string — IETF BCP 47 language code (e.g. en-IN). Must be enabled for the org.
  - `currency` string — ISO 4217 currency code (e.g. INR). Must be enabled for the org.
  - `timezone` string — IANA timezone name (e.g. Asia/Kolkata). Must be enabled for the org.

## Response `200`

All concepts updated successfully.

- BulkResponseList
  - `response` object[]
    - `entityId` integer — System ID of the updated concept. Present when the concept was identified, regardless of whether the update succeeded. Absent when the concept could not be identified, or when an unexpected error occurs.
    - `result` object — Echo of the submitted request object for this concept.
    - `errors` object[]
      - `status` boolean
      - `code` integer
      - `message` string
    - `warnings` object[]
      - `status` boolean
      - `code` integer
      - `message` string
  - `totalCount` integer — Total number of concept records in the request.
  - `failureCount` integer — Number of concepts that failed to update.

## Other responses

- `207` — Partial success — some concepts updated, some failed.
- `400` — All items failed or request is invalid (e.g. more than 100 items, empty body).

---

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