commercetools Inventory API
Manage inventory entries tracking stock levels per channel and SKU.
Manage inventory entries tracking stock levels per channel and SKU.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/commercetools-inventory-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Commercetools Inventory API
version: '1.0'
contact:
name: commercetools Support
url: https://support.commercetools.com
termsOfService: https://commercetools.com/terms-conditions
description: 'Operations tagged Inventory across 2 of this provider''s published API definitions: commercetools-http-api-openapi.yml, commercetools-import-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.{region}.commercetools.com
description: Production Server
variables:
region:
default: us-central1.gcp
enum:
- us-central1.gcp
- us-east-2.aws
- europe-west1.gcp
- eu-central-1.aws
- australia-southeast1.gcp
description: The deployment region for the commercetools API.
- url: https://import.{region}.commercetools.com
description: Production Import Server
variables:
region:
default: us-central1.gcp
enum:
- us-central1.gcp
- us-east-2.aws
- europe-west1.gcp
- eu-central-1.aws
- australia-southeast1.gcp
description: The deployment region.
security:
- bearerAuth: []
tags:
- name: Inventory
description: Manage inventory entries tracking stock levels per channel and SKU.
paths:
/{projectKey}/inventory:
get:
operationId: listInventoryEntries
summary: List inventory entries
description: Returns a paginated list of inventory entries. Each entry tracks the available quantity and restockable quantity for a specific SKU, optionally scoped to a supply channel. Supports filtering and sorting.
tags:
- Inventory
parameters:
- $ref: '#/components/parameters/projectKey'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/where'
- $ref: '#/components/parameters/expand'
responses:
'200':
description: A paged list of inventory entries.
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryPagedQueryResponse'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createInventoryEntry
summary: Create an inventory entry
description: Creates a new inventory entry for a given SKU. The entry can be scoped to a supply channel for multi-warehouse tracking. Optionally set expected delivery dates and restockable quantities.
tags:
- Inventory
parameters:
- $ref: '#/components/parameters/projectKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryEntryDraft'
responses:
'201':
description: The created inventory entry.
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryEntry'
'400':
$ref: '#/components/responses/BadRequest'
servers:
- url: https://api.{region}.commercetools.com
description: Production Server
variables:
region:
default: us-central1.gcp
enum:
- us-central1.gcp
- us-east-2.aws
- europe-west1.gcp
- eu-central-1.aws
- australia-southeast1.gcp
description: The deployment region for the commercetools API.
/{projectKey}/inventories/import-containers/{importContainerKey}:
post:
operationId: importInventoryEntries
summary: Import inventory entries
description: Submits a batch of inventory entry import requests for asynchronous processing. Inventory entries are matched by SKU and supply channel for upsert behavior.
tags:
- Inventory
parameters:
- $ref: '#/components/parameters/projectKey_2'
- $ref: '#/components/parameters/importContainerKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryImportRequest'
responses:
'201':
description: The import request was accepted for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/ImportResponse'
'400':
$ref: '#/components/responses/BadRequest_2'
servers:
- url: https://import.{region}.commercetools.com
description: Production Import Server
variables:
region:
default: us-central1.gcp
enum:
- us-central1.gcp
- us-east-2.aws
- europe-west1.gcp
- eu-central-1.aws
- australia-southeast1.gcp
description: The deployment region.
components:
responses:
BadRequest:
description: The request was malformed or contained invalid parameters.
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
message:
type: string
errors:
type: array
items:
type: object
Unauthorized:
description: The request lacked valid authentication credentials.
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
message:
type: string
BadRequest_2:
description: The request was malformed or contained invalid parameters.
content:
application/json:
schema:
type: object
properties:
statusCode:
type: integer
message:
type: string
schemas:
InventoryEntryDraft:
type: object
description: Request body for creating a new inventory entry.
required:
- sku
- quantityOnStock
properties:
key:
type: string
description: User-defined unique identifier.
sku:
type: string
description: SKU of the product variant to track.
supplyChannel:
$ref: '#/components/schemas/Reference'
quantityOnStock:
type: integer
description: Initial quantity on stock.
restockableInDays:
type: integer
description: Expected restocking time in days.
expectedDelivery:
type: string
format: date-time
description: Expected delivery date for restocking.
Reference:
type: object
description: A reference to another resource by its typeId and id.
required:
- typeId
- id
properties:
typeId:
type: string
description: The type identifier of the referenced resource (e.g., 'product', 'category').
id:
type: string
description: The system-generated unique identifier of the referenced resource.
InventoryPagedQueryResponse:
type: object
description: Paginated response containing a list of inventory entries.
required:
- limit
- offset
- count
- total
- results
properties:
limit:
type: integer
offset:
type: integer
count:
type: integer
total:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/InventoryEntry'
InventoryEntry:
type: object
description: An inventory entry tracking available quantity for a specific SKU, optionally scoped to a supply channel.
required:
- id
- version
- sku
- quantityOnStock
- availableQuantity
properties:
id:
type: string
description: System-generated unique identifier.
version:
type: integer
description: Current version for optimistic concurrency control.
key:
type: string
description: User-defined unique identifier.
sku:
type: string
description: SKU of the product variant this inventory entry tracks.
supplyChannel:
$ref: '#/components/schemas/Reference'
quantityOnStock:
type: integer
description: Total quantity physically in stock.
availableQuantity:
type: integer
description: Quantity available for ordering (stock minus reservations).
restockableInDays:
type: integer
description: Expected days until out-of-stock items are restocked.
expectedDelivery:
type: string
format: date-time
description: Expected delivery date for restocking.
InventoryImportRequest:
type: object
description: A batch of inventory entry resources to import.
required:
- type
- resources
properties:
type:
type: string
enum:
- inventory
description: The resource type identifier.
resources:
type: array
maxItems: 20
items:
$ref: '#/components/schemas/InventoryImport'
description: Up to 20 inventory entry resources.
InventoryImport:
type: object
description: A single inventory entry resource for import.
required:
- key
- sku
- quantityOnStock
properties:
key:
type: string
description: User-defined key for matching against existing inventory entries.
sku:
type: string
description: SKU of the product variant.
quantityOnStock:
type: integer
description: Quantity on stock to set.
supplyChannel:
type: object
description: Reference to the supply channel by key.
restockableInDays:
type: integer
description: Expected restocking time in days.
ImportResponse:
type: object
description: The response returned after submitting an import request batch.
required:
- operationStatus
properties:
operationStatus:
type: array
items:
$ref: '#/components/schemas/ImportOperationStatus'
description: Status records for each resource in the submitted batch.
ErrorObject:
type: object
description: An error object describing a validation or processing failure.
required:
- code
- message
properties:
code:
type: string
description: Machine-readable error code.
message:
type: string
description: Human-readable description of the error.
ImportOperationStatus:
type: object
description: The initial status of a single resource submission in an import batch.
required:
- resourceKey
- state
properties:
resourceKey:
type: string
description: User-defined key of the resource submitted.
state:
type: string
enum:
- Accepted
- ValidationFailed
description: Initial state of the operation after submission.
errors:
type: array
items:
$ref: '#/components/schemas/ErrorObject'
description: Immediate validation errors if the resource failed submission.
parameters:
expand:
name: expand
in: query
required: false
schema:
type: string
description: Reference expansion path to inline referenced resources in the response (e.g., 'productType', 'categories[*]').
projectKey:
name: projectKey
in: path
required: true
schema:
type: string
description: The unique key identifying the commercetools project.
offset:
name: offset
in: query
required: false
schema:
type: integer
minimum: 0
maximum: 10000
default: 0
description: Number of results to skip for pagination. Maximum 10000.
limit:
name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 500
default: 20
description: Maximum number of results to return. Defaults to 20, maximum 500.
where:
name: where
in: query
required: false
schema:
type: string
description: Query predicate string for filtering results. Uses commercetools predicate syntax (e.g., 'customerEmail = "user@example.com"').
importContainerKey:
name: importContainerKey
in: path
required: true
schema:
type: string
description: The user-defined key of the import container.
projectKey_2:
name: projectKey
in: path
required: true
schema:
type: string
description: The unique key of the commercetools project.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: OAuth 2.0 Bearer token obtained from the commercetools authentication service at https://auth.{region}.commercetools.com/oauth/token using client credentials flow.
x-refined-from:
- commercetools-http-api-openapi.yml
- commercetools-import-api-openapi.yml