---
title: "Add Concepts in Bulk"
method: POST
path: "/v2/locations/concepts"
---

# Add Concepts in Bulk

`POST /v2/locations/concepts`

Create up to 100 concepts in a single request.

## Query parameters

- `inheritLocale` boolean

## Headers

- `Authorization` string
- `X-CAP-API-OAUTH-TOKEN` string

## Request body

- CreateConceptRequest[]
  - `code` string, required — Unique code for the concept in the org. Accepts lowercase letters, digits, periods (`.`), underscores (`_`), and hyphens (`-`). Must start with a lowercase letter or digit. Max 50 characters.
  - `name` string, required — Display name for the concept. Accepts letters, digits, underscores, and spaces. Cannot equal `root` (any case). Max 100 characters.
  - `groupParentCode` string — Code of the parent concept this concept belongs to. When provided, must be an existing active concept in the org. Omit to create a root-level concept.
  - `language` string — IETF BCP 47 language code for the concept (for example, `en-IN`). Required when `inheritLocale` is `false`. Must be enabled for the org.
  - `currency` string — ISO 4217 currency code for the concept (for example, `INR`). Required when `inheritLocale` is `false`. Must be enabled for the org.
  - `timezone` string — IANA timezone name for the concept (for example, `Asia/Kolkata`). Required when `inheritLocale` is `false`. Must be enabled for the org.
  - `description` string — Free-text description of the concept.
  - `isActive` boolean — Whether the concept is active. Defaults to `true` when omitted.
  - `isOrgUnit` boolean — Whether this concept acts as an organizational unit. When omitted, the field is not set.
  - `externalIds` object — Object containing key-value pairs of external identifiers for the concept. Maximum five entries. Keys and values must be non-blank and no longer than 200 characters each. Values must be unique within the request and not already assigned to another entity in the org.
  - `customFields` object — Object containing custom field key-value pairs for the concept. Keys must match custom fields configured for the org (matched case-insensitively).

## Response `201`

All concepts created 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 created, some failed.
- `400` — All items failed, batch contains more than 100 items, or empty request 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)
