---
title: "upsertProducts - Create or Update your Mirakl Connect Catalog"
method: POST
path: "/products"
tags: ["Catalog"]
---

# upsertProducts - Create or Update your Mirakl Connect Catalog

`POST /products`

## Request

- Base URL: `https://miraklconnect.com/api`
- URL: `https://miraklconnect.com/api/products`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/mirakl/apis/mirakl-connect-apis/docs/products/post.ts> (a function with typed inputs; its response is checked against the schema)

<div class="extension-title">Description</div>

Products are created if they do not already exist. The missing fields in the request remain unchanged on the Mirakl Connect catalog (behaves like a PATCH).

Omitted top-elements in the API will remain unchanged.

Any nullable field can be explicitly set to null in order to remove its value.


<div class="api-description-extension">
<div class="extension-title">Call Frequency</div>

<div class="recommended-call-frequency">Recommended usage: Asynchronous: every 5 minutes</div>
<div class="max-call-frequency">Maximum usage: Asynchronous: once per minute</div>
</div>

## Request body

- UpsertProductsRequest: Update any of the top-elements of all given products. Omitted top-elements in the API will remain unchanged. Any nullable field can be explicitly set to null in order to remove its value.
  - `products` Product[]: Products to create or to update
    - `attributes` Attribute[], nullable: Additional product attributes
      - `id` string, required: Attribute's id
      - `name` string, required: Attribute's name
      - `type` 'STRING' | 'NUMERIC' | 'BOOLEAN', required: The attribute's type
      - `value` object, required: The attribute's value
    - `brand` string, nullable: Brand
    - `category` Category: Category
      - `id` string, nullable: The id of the category
      - `labels` CategoryLabel[], required: Labels for the category with their associated locale
        - `locale` string, required: The language format can be ISO-639 or ISO-639_ISO-3166
        - `value` string, required: A label for the category
    - `descriptions` Description[], nullable: Descriptions with their associated locale
      - `locale` string, required: The language format can be ISO-639 or ISO-639_ISO-3166
      - `value` string, required: Description
    - `discount_prices` DiscountPrice[], nullable: Discount prices
      - `end_date` string, datetime, nullable: The end date of the discount interval in ISO 8601 format (UTC/Zulu time)
      - `price` Money, required
        - `amount` number, required: Price amount
        - `currency` string, iso-4217, required: Currency ISO code
      - `scope` string, nullable: Price scope
      - `start_date` string, datetime, nullable: The start date of the discount interval in ISO 8601 format (UTC/Zulu time)
    - `gtins` Gtin[]: GTIN (EAN, GENCOD, UPC, ISBN, etc.) used to map the product with one of the marketplace’s catalog
      - `value` string, required: GTIN value on 8, 12 or 13 digits
    - `id` string, required: Product identifier
    - `images` Image[], nullable: Images
      - `url` string, required: Image URL
    - `quantities` Quantity[]: Product quantities
      - `available_quantity` integer, required: Available quantity of a product
      - `warehouse_code` string: Warehouse code defined in your Mirakl account
    - `standard_prices` StandardPrice[]: Standard prices
      - `price` Money, required
        - `amount` number, required: Price amount
        - `currency` string, iso-4217, required: Currency ISO code
      - `scope` string, nullable: Price scope
    - `titles` Title[], nullable: Titles with their associated locale
      - `locale` string, required: The language format can be ISO-639 or ISO-639_ISO-3166
      - `value` string, required: Title

## Response `202`

The request has been accepted

## Changes

- **2026-10-14** `d12b10bceb6a`: 1 breaking, 3 info
  - request property `products/items/attributes/items/type` was restricted to a list of enum values
  - added the new `BOOLEAN` enum value to the request property `products/items/attributes/items/type`
  - added the new `NUMERIC` enum value to the request property `products/items/attributes/items/type`
  - added the new `STRING` enum value to the request property `products/items/attributes/items/type`
- **2026-08-18** `cc009fec5cdd`: 1 warning
  - removed the request property `products/items/partner_quantities`

[Operation history](https://skmtc.dev/mirakl/apis/mirakl-connect-apis/changes/products/post.md)

---

[API](https://skmtc.dev/mirakl/apis/mirakl-connect-apis.md) - [All operations](https://skmtc.dev/mirakl/apis/mirakl-connect-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/mirakl/apis/mirakl-connect-apis/revisions/c0527a972b89?raw)
