Popular

↑↓ move ↵ open All results →

Integration API · Catalog sync

Update part of a product

PATCHhttps://{store}/api/v1/integrations/catalog/products/{external_id}

Changes only the fields you send, for example stock and price from an ERP. The product must already exist for this key (create it with PUT first). For a product with variants send the whole variants list.

To take a product off sale send status draft: products are hidden, never deleted, because orders keep referring to them.

Integration key with the catalog:write ability: Authorization: Bearer {key}.

Path parameters

external_idstringrequired
Your product id.

Request body application/json

namestring
Product name.
skustring
SKU of the product’s variant.
priceinteger
Price in minor units (599900 = 5 999.00).
quantityinteger
Stock.
descriptionstring
Plain-text description.
statusstring
draft or published.
draftpublished
image_urlstring
Public https URL of the main image.
category_external_idsarray of strings
Your category ids; replaces the links.
tag_external_idsarray of strings
Your tag ids; replaces the links.
attributesobject
Characteristics by name, such as {"Матеріал": ["Бавовна", "Льон"], "Вага": "180 г", "Водонепроникний": true}; null removes one, names not sent stay. For a store on the one attribute model; elsewhere tags carry characteristics.
variantsarray of objects
Up to 100 variants: sku (required), price, quantity and options, an object of option name → value such as {"Колір": "Чорний", "Розмір": "M"}. When present, the top-level sku, price and quantity are not used.

Example

{
    "price": 549900,
    "quantity": 18
}

Responses

200The updated product.
{
    "external_id": "erp-10045",
    "data": {
        "id": 12,
        "name": "Навушники Sonar ANC повнорозмірні",
        "description": "Активне шумозаглушення, 40 годин роботи.",
        "sku": "SONAR-ANC-BLK",
        "thumbnail_url": "https://your-store.storeforma.shop/media/12/sonar-anc.webp",
        "quantity": 24,
        "currency_code": "UAH",
        "min_price": 599900,
        "max_price": 599900,
        "weight": 0.32,
        "length": null,
        "height": null,
        "width": null,
        "has_offers": false,
        "is_archived": false,
        "category_id": 7,
        "attributes": [
            {
                "handle": "kolir",
                "name": "Колір",
                "type": "swatch",
                "unit": null,
                "group": null,
                "variant_axis": false,
                "values": [
                    "Чорний"
                ]
            },
            {
                "handle": "vaga",
                "name": "Вага",
                "type": "number",
                "unit": "г",
                "group": "Загальні",
                "variant_axis": false,
                "values": [
                    "320 г"
                ]
            }
        ],
        "input_options": [
            {
                "key": "hraviiuvannia",
                "label": "Гравіювання",
                "type": "text",
                "required": false,
                "price": 10000,
                "max": 30,
                "choices": []
            }
        ],
        "created_at": "2026-10-01 10:12:00",
        "updated_at": "2026-10-12 08:40:00"
    }
}
401Missing, unknown or revoked key.
{
    "code": "unauthenticated",
    "message": "Integration key is inactive.",
    "field": null
}
403The key lacks catalog:write, or the store’s plan has no API access.
{
    "code": "forbidden",
    "message": "Integration key cannot catalog:write.",
    "field": null
}
422A field is invalid; field names it.
{
    "code": "validation_error",
    "message": "name is required.",
    "field": "name"
}
429More than 60 requests a minute for this key. Wait Retry-After seconds.
{
    "code": "rate_limited",
    "message": "Too many integration requests.",
    "field": null
}