---
title: "Import products"
method: POST
path: "/ops/sellers/{seller_id}/catalog/import"
tags: ["ops", "ops-sellers"]
---

# Import products

`POST /ops/sellers/{seller_id}/catalog/import`

## Request

- Base URL: `https://api.topi-staging.eu`
- URL: `https://api.topi-staging.eu/ops/sellers/{seller_id}/catalog/import`
- Auth: OAuth 2
  - Authorization code: `/oauth2/authorize`
  - Token URL: `/oauth2/token` scopes: `catalog:edit`

Add a batch of products to the catalog

## Path parameters

- `seller_id` string, regexp, required: Seller ID

## Request body

- ImportProductsRequestBody
  - `products` AddProduct[], required: Product payload
    - `base_rental_price` MoneyAmount
      - `currency` string, required: Currency code, see ISO 4127 (https://www.iso.org/iso-4217-currency-codes.html) (supported: EUR, GBP, USD)
      - `gross` integer, required: Gross amount of money, expressed in the minor unit for the currency
      - `net` integer, required: Net amount of money, expressed in the minor unit for the currency
    - `description` string: Description of product
    - `extra_details` ExtraProductDetails[]: Extra details about the product such as CPU, Memory, storage...
      - `property` string, required: Name of the property
      - `value` string, required
    - `image` ProductImage
      - `url` string, uri: Url hosting the image
    - `is_active` boolean, required: If product is still active
    - `list_price` MoneyAmount
      - `currency` string, required: Currency code, see ISO 4127 (https://www.iso.org/iso-4217-currency-codes.html) (supported: EUR, GBP, USD)
      - `gross` integer, required: Gross amount of money, expressed in the minor unit for the currency
      - `net` integer, required: Net amount of money, expressed in the minor unit for the currency
    - `manufacturer` string: The product manufacturer
    - `origin_seller` string: the seller origin for central catalog
    - `origin_seller_references` SellerProductReference[]: the origin seller references for the central catalog
      - `reference` string, required: The ID related with the source. This value should be unique for that source.
      - `source` string, required: The seller internal source name for this reference type.
    - `pretty_id` string: The visual overriding id of the product
    - `pricing_category` string: The pricing category that should be assigned, an existing, non-deactivated pricing category identifier
    - `pricing_category_confidence` integer: Optional confidence of the category classification
    - `product_standard_identifiers` ProductStandardIdentifier[]: Standard identifiers for this product
      - `id` string: The product identifier value
      - `identifier_type` string: The kind of identifier standard
    - `publicized_price` MoneyAmount, required
      - `currency` string, required: Currency code, see ISO 4127 (https://www.iso.org/iso-4217-currency-codes.html) (supported: EUR, GBP, USD)
      - `gross` integer, required: Gross amount of money, expressed in the minor unit for the currency
      - `net` integer, required: Net amount of money, expressed in the minor unit for the currency
    - `seller_categories` ProductSellerCategory[]: Categories from the seller
      - `id` string, required
      - `name` string, required
      - `parent_category` string
    - `seller_product_references` SellerProductReference[], required: Partner's own reference for this product
      - `reference` string, required: The ID related with the source. This value should be unique for that source.
      - `source` string, required: The seller internal source name for this reference type.
    - `seller_product_type` 'hardware' | 'software' | 'service' | 'hardware_built_to_order'
    - `shop_product_description_url` string, uri
    - `subtitle` string: Subtitle of product
    - `title` string, required: Name for product

## Response `200`

OK response.

- ImportResult
  - `id` string, regexp, required: The id of the import processing
  - `status` 'created' | 'started' | 'completed' | 'failed', required: The current import status
  - `summary` SummaryInfo
    - `sample_products_rejected` SummaryProductRejected[], required: Array with articles failed. Max size 30 rows
      - `error_code` string, required: The error code
      - `error_description` string: The error description
      - `seller_product_reference` SellerProductReference, required
        - `reference` string, required: The ID related with the source. This value should be unique for that source.
        - `source` string, required: The seller internal source name for this reference type.
    - `total_products` integer, required: Total articles processed until the request
    - `total_products_imported` integer, required: Total articles processed in a correct way until the request
    - `total_products_rejected` integer, required: Total articles that we found an error processing it

## Other responses

- `400`: BadRequest: Bad Request response.
- `401`: Unauthorized: Unauthorized response.
- `403`: InvalidScopes: Forbidden response.
- `413`: TooManyProducts: Request Entity Too Large response.
- `422`: Unprocessable: Unprocessable Entity response.

## Changes

- **2026-10-28** `0802da91479f`: 4 warning
  - the `products/items/origin_seller_references/items/reference` request property's maxLength was set to `255`
  - the `products/items/origin_seller_references/items/source` request property's maxLength was set to `255`
  - the `products/items/seller_product_references/items/reference` request property's maxLength was set to `255`
  - the `products/items/seller_product_references/items/source` request property's maxLength was set to `255`
- **2026-10-27** `ac6979514123`: 1 info
  - api operation id `catalog.importProducts` removed and replaced with `catalog#importProducts`
- **2026-10-26** `7ff7ee94b30e`: 2 info
  - api operation id `catalog#importProducts` removed and replaced with `catalog.importProducts`
  - api tag `ops-sellers` added
- **2026-10-03** `dee0c2f9eb7a`: 101 breaking, 1 info
  - removed the enum value `` of the request property `products/items/pricing_category`
  - removed the enum value `accessory_airpods` of the request property `products/items/pricing_category`
  - removed the enum value `accessory_appletv` of the request property `products/items/pricing_category`
  - removed the enum value `accessory_gpu` of the request property `products/items/pricing_category`
  - …98 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/topi/apis/topi-public-api/changes/ops/sellers/:seller_id/catalog/import/post.md)

---

[API](https://skmtc.dev/topi/apis/topi-public-api.md) - [All operations](https://skmtc.dev/topi/apis/topi-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/topi/apis/topi-public-api/revisions/09f585e29aa8?raw)
