---
title: "Bulk upsert items masterdata.
Accepts a JSON array of items. Items are matched by `code` — existing items are updated, new ones are created.
Items missing `code` or `name` are silently skipped; validate your payload before sending.
Unit identifiers (`inventUnitId`, barcode `unit`) are normalised to lowercase and auto-created if they do not exist.
The server processes large arrays in internal batches of 5 000 items. Endpoint timeout is 5 minutes."
method: POST
path: "/v1/Items/bulk"
tags: ["Items"]
---

# Bulk upsert items masterdata.
Accepts a JSON array of items. Items are matched by `code` — existing items are updated, new ones are created.
Items missing `code` or `name` are silently skipped; validate your payload before sending.
Unit identifiers (`inventUnitId`, barcode `unit`) are normalised to lowercase and auto-created if they do not exist.
The server processes large arrays in internal batches of 5 000 items. Endpoint timeout is 5 minutes.

`POST /v1/Items/bulk`

NEVER call this endpoint concurrently for the same tenant.
Concurrent calls will interfere with each other and produce incorrect results.
All requests must be strictly sequential — wait for a 200 OK before sending the next batch.

## Query parameters

- `serviceId` string, uuid
- `forceOverwriteOwner` boolean
- `Account` unknown

## Response `200`

Success

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden

---

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