Skip to content

Catalog Import API

Push your price list programmatically — same engine as the dashboard import wizard, applied in a single call. Typical use: a nightly job exporting from your inventory system.

This endpoint is optional. Merchants without an IT system use the dashboard wizard; both paths write to the same catalog.

POST /api/v1/catalog/import
X-API-Key: rsk_...
Content-Type: multipart/form-data

One form field: file — a CSV or XLSX, any column names, any of Uzbek/Russian/English headers.

curl -X POST "$BASE/api/v1/catalog/import" \
  -H "X-API-Key: $API_KEY" \
  -F "file=@prices.xlsx"

Success

{ "data": { "created": 3, "updated": 41, "total": 44 } }

The import is an upsert: rows matching an existing product (by SKU if present, else by name, case-insensitive) update it; new rows create products. Prices already quoted in past orders are never affected (they are snapshotted at order time).

How columns are resolved

  1. Saved mappings first — whatever was confirmed in the dashboard wizard for these header names is reused. Recommended setup: run your file through the wizard once, correct anything, and the API path inherits the mapping forever.
  2. Header heuristics — common names in en/ru/uz (price, цена, narx, …) are recognized automatically.
  3. Everything else becomes an attribute — extra columns are kept per product under your original header name.

Errors

Code Meaning
400 Unparseable file, row/size limit exceeded, invalid price value (row number included), or name/price column could not be resolved — the response's error.details.proposed_mappings shows what was inferred so you can rename headers or pre-save a mapping
401 Missing/invalid API key
413/400 File over 10 MB

Limits: 10 MB, 5,000 rows per call, IP rate-limited. Only name and price columns are mandatory; an empty price cell means "price on request".

Getting a template of your own catalog

The dashboard's Export CSV/XLSX button returns your current catalog in exactly the format this endpoint accepts — the easiest way to see the expected shape.