> ## Documentation Index
> Fetch the complete documentation index at: https://api.basetools.cz/llms.txt
> Use this file to discover all available pages before exploring further.

# Updating prices and stock

> Reading and bulk-writing prices/stock, reservations, and product variants

## Reading product data

For routine syncing, don't always fetch full data for every product. Base offers lighter-weight methods depending on your need:

| I need                                               | Method                                                                                                 |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Basic product list                                   | [`getInventoryProductsList`](https://api.baselinker.com/index.php?method=getInventoryProductsList)     |
| Full product detail (descriptions, images, variants) | [`getInventoryProductsData`](https://api.baselinker.com/index.php?method=getInventoryProductsData)     |
| Prices only                                          | [`getInventoryProductsPrices`](https://api.baselinker.com/index.php?method=getInventoryProductsPrices) |
| Stock and reservations only                          | [`getInventoryProductsStock`](https://api.baselinker.com/index.php?method=getInventoryProductsStock)   |

## Bulk updates

Use the bulk methods for writing stock and prices, not one call per product:

* [`updateInventoryProductsStock`](https://api.baselinker.com/index.php?method=updateInventoryProductsStock) — up to 1000 products/variants per call.
* [`updateInventoryProductsPrices`](https://api.baselinker.com/index.php?method=updateInventoryProductsPrices) — up to 1000 products per call.

Price and stock updates typically run 4–5 times per hour.

<Tip>
  For high-frequency stock sync, only send products whose values actually changed — this preserves headroom under the 100 requests/minute limit.
</Tip>

## Stock reservations

If products come from a native Base inventory (not just a read-only feed), confirming an order automatically reduces/reserves the available quantity — even before your ERP has processed it. This reduces the risk of overselling even if your sync is slower. Current availability and reservations are returned by [`getInventoryProductsStock`](https://api.baselinker.com/index.php?method=getInventoryProductsStock). The connection to orders is covered in [Order basic principles](/en/objednavky/zakladni-principy).

## Product variants

Variants (size, color, etc.) aren't a separate entity with their own endpoints — they're part of the `getInventoryProductsData` response, and are written/updated with the same bulk methods as main products (`updateInventoryProductsStock`, `updateInventoryProductsPrices`), just with `variant_id` set.

## Multiple price groups via a CSV feed

If you need to sync several price groups from feeds at once, a dedicated **CSV feed** is more efficient than a separate XML file per group:

* first column: a clear product identifier (Base ID, SKU, or EAN),
* following columns: individual prices for each price group.

Base can import such a feed cyclically, usually once a day (up to three times a day for enterprise accounts).

<Note>
  Connecting an external warehouse (your store as a stock source/target) is a different scenario — see [Partnership & Shops API](/en/partnerstvi-shops-api/jak-se-napojit).
</Note>
