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

# Product Importer API

## **Overview**

This document outlines the Criteo Product Catalog API, detailing the existing methods and their data representation of the request body.

## **Usage workflow**

Find below a simplified diagram with the workflow of API calls to post one or more products to Criteo’s database.

<Frame>
  <img src="https://mintcdn.com/criteo-e1682996/KL9i4BnMuq4R7Zhu/images/marketing-solutions/v2026-preview/docs/59b87cd-piv3.png?fit=max&auto=format&n=KL9i4BnMuq4R7Zhu&q=85&s=ae501c12c6c8190c3c444631ef9ff9b2" alt="piv3.png" width="638" height="282" data-path="images/marketing-solutions/v2026-preview/docs/59b87cd-piv3.png" />
</Frame>

* **Authenticate** your app by calling the **/oauth2/token** endpoint (please see the [dedicated guide for Authentication](/marketing-solutions/v2026-preview/docs/authentication) )
* Criteo API will authenticate and authorize your app, and return you an **access token** to be used in your following calls;
* **Post your products’ updates** in a JSON payload, calling the **POST /preview/catalog/products/batch** resource
* Criteo API will then perform the requested update in the indicated products, which may take up to an hour.
* **Get a report** on the status of your import **GET /preview/catalog/products/batch/report/\{operation-token}**

***

## **Best Practices**

* Avoid daily updates of all of your products. Instead, only update products whose data has actually changed, the API cannot be used as feed ingestion.
* To have up-to-date data, send updates of your products as soon as the products change, do not wait for several updates to group them.
* Do not send multiple updates of the same product in the same batch, the batch will be rejected and you will receive an error.
* Do not send updates for unchanged products. Be sure to only send requests for new, updated, or deleted products, unless the products are going to expire.
* Make sure to update the products before they expire, the lifespan of the products is **30 days** after their last update, if you want to change their lifespan, you can use the **expirationDate** field specifying a date expiry, this date may be up to one year in the future.
* Send a deleted batch as soon as the product is removed from your store, do not rely on its expiration date, otherwise, you risk displaying the product when it is no longer available in your store.
* Use the same value for the Item Group ID **itemGroupId** field to group all product variants. Product variants are similar products that differ from each other only in product details (***sizes***, ***color***, ***material***, ***pattern***, ***age range***, or ***gender***).
* The **id** and **itemGroupId** fields must be different, use the **id** field to uniquely identify a single product and use **itemGroupId** to group multiple products as variants.
* Don't mix up **itemGroupId** and **id** attributes, The **itemGroupId** must be chosen outside of the **id** range. If a product has the same **id** as an existing **itemGroupId** or vice versa, the behavior is undefined and updates on your products may be ignored.
* Make sure to provide **itemGroupId** information in addition to the **id** when deleting a product variant to avoid any inconsistencies.

***

## **List of Methods**

<table>
  <thead>
    <tr>
      <th>
        <p>
          Method
        </p>
      </th>

      <th>
        <p>
          HTTP Request
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <ul>
          <li>
            \_URLs relative to:
          </li>
        </ul>

        <p>
          AMERICAS:

          <a href="https://api.us.criteo.com">
            api.us.criteo.com
          </a>
        </p>

        <p>
          APAC:

          <a href="https://api.as.criteo.com">
            api.as.criteo.com
          </a>
        </p>

        <p>
          EMEA:

          <a href="https://api.eu.criteo.com">
            api.eu.criteo.com
          </a>

          \_\*
        </p>
      </td>

      <td />

      <td />
    </tr>

    <tr>
      <td>
        <p>
          Authenticate
        </p>
      </td>

      <td>
        <p>
          POST /oauth2/token
        </p>
      </td>

      <td>
        <p>
          Get the token necessary to perform any action through our API.
        </p>

        <p>
          Please see the

          <a href="/marketing-solutions/v2026-preview/docs/authentication">
            dedicated guide for Authentication
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Batch
        </p>
      </td>

      <td>
        <p>
          POST /preview/catalog/products/batch
        </p>
      </td>

      <td>
        <p>
          Request an asynchronous batch operation of insertions, updates, and deletes. Returns the location of the report of the operation
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Report
        </p>
      </td>

      <td>
        <p>
          GET /preview/catalog/products/batch/report/\{operation-token}
        </p>
      </td>

      <td>
        <p>
          Get the report of the batch processing
        </p>
      </td>
    </tr>
  </tbody>
</table>

***

## **Rate limitations**

* 1000 products per batch
* One partner\_id per request
* Two updates or more of one product on the same batch is not allowed

***

## **Support**

For more information about this API reach out to your account technical contact in Criteo.

***

## **Authenticate**

Get detailed information on API authentication in [Authentication guide](/marketing-solutions/v2026-preview/docs/authentication)

### **Authentication**

<table>
  <thead>
    <tr>
      <th>
        <p>
          Type
        </p>
      </th>

      <th>
        <p>
          Endpoint
        </p>
      </th>

      <th>
        <p>
          Objective
        </p>
      </th>

      <th>
        <p>
          Parameters
        </p>
      </th>

      <th>
        <p>
          Remarks
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          POST
        </p>
      </td>

      <td>
        <p>
          /oauth2/token
        </p>
      </td>

      <td>
        <p>
          Get the token necessary to perform any action through our API
        </p>
      </td>

      <td>
        <p>
          client\_id (mandatory)
        </p>

        <p>
          client\_secret (mandatory)
        </p>

        <p>
          grant\_type (mandatory)
        </p>
      </td>

      <td>
        <p>
          The token will be valid for 900s
        </p>
      </td>
    </tr>
  </tbody>
</table>

<Warning>
  You will need this token as an authorization for every other endpoint, which is in the form of a bearer token.
</Warning>

***

## **Batch**

**POST /preview/catalog/products/batch**

### **Description**

Used to publish a batch of operations to insert, update and deletes products. The batch is processed asynchronously. The response provides an operationToken which can be used to track the status of the report of the operation.

### **Parameters**

<table>
  <thead>
    <tr>
      <th>
        <p>
          Type
        </p>
      </th>

      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Body
        </p>
      </td>

      <td>
        <p>
          <b>
            ProductsCustomBatchRequest
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Defines a batch of operations
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            ProductsCustomBatchRequest
          </a>
        </p>
      </td>
    </tr>
  </tbody>
</table>

### **Responses**

<table>
  <thead>
    <tr>
      <th>
        <p>
          HTTP code
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            202
          </b>
        </p>
      </td>

      <td>
        <p>
          Batch accepted. The status of the operation can be tracked using the report endpoint and the operationToken.
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            BatchAcceptedResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            400
          </b>
        </p>
      </td>

      <td>
        <p>
          Bad Request. Allowed error types and errors: \[(type="validation", code="required-field"),(type="validation", code="required-field"),(type="validation", code="json-format")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            401
          </b>
        </p>
      </td>

      <td>
        <p>
          Unauthorized. Allowed error types and errors: \[(type="authentication", code="not-authenticated")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            403
          </b>
        </p>
      </td>

      <td>
        <p>
          Forbidden. Allowed error types and errors: \[(type="authorization", code="not-authorized")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            413
          </b>
        </p>
      </td>

      <td>
        <p>
          Request too long
        </p>
      </td>

      <td>
        <p>
          No Content
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            429
          </b>
        </p>
      </td>

      <td>
        <p>
          Too Many Requests. Allowed error types and errors: \[(type="availability", code="too-many-requests")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            500
          </b>
        </p>
      </td>

      <td>
        <p>
          Internal Server Error. Allowed error types and errors: \[(type="availability", code="internal-error")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            503
          </b>
        </p>
      </td>

      <td>
        <p>
          Service Unavailable. Allowed error types and errors: \[(type="availability", code="service-unavailable")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>
  </tbody>
</table>

### **Produces**

* application/json

***

## **Report**

**GET /preview/catalog/products/batch/report/\{operation-token}**

### **Description**

Get the report of an asynchronous batch operation previously requested

### **Parameters**

<table>
  <thead>
    <tr>
      <th>
        <p>
          Type
        </p>
      </th>

      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Path
        </p>
      </td>

      <td>
        <p>
          <b>
            operation-token
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          The token returned by the batch endpoint
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>
  </tbody>
</table>

### **Responses**

<table>
  <thead>
    <tr>
      <th>
        <p>
          HTTP Code
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            200
          </b>
        </p>
      </td>

      <td>
        <p>
          The report object
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            ReportOkResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            400
          </b>
        </p>
      </td>

      <td>
        <p>
          Bad Request. Allowed error types and errors: \[(type="validation", code="catalog-operation-token-is-malformed"),(type="validation", code="catalog-operation-report-is-expired")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            401
          </b>
        </p>
      </td>

      <td>
        <p>
          Unauthorized. Allowed error types and errors: \[(type="authentication", code="not-authenticated")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            403
          </b>
        </p>
      </td>

      <td>
        <p>
          Forbidden. Allowed error types and errors: \[(type="authorization", code="not-authorized")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            404
          </b>
        </p>
      </td>

      <td>
        <p>
          Not Found. Allowed error types and errors: \[(type="validation", code="catalog-operation-not-found")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            429
          </b>
        </p>
      </td>

      <td>
        <p>
          Too Many Requests
        </p>
      </td>

      <td>
        <p>
          No Content
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            500
          </b>
        </p>
      </td>

      <td>
        <p>
          Internal Server Error. Allowed error types and errors: \[(type="availability", code="internal-error")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            503
          </b>
        </p>
      </td>

      <td>
        <p>
          Service Unavailable. Allowed error types and errors: \[(type="availability", code="service-unavailable")]
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            FailResponse
          </a>
        </p>
      </td>
    </tr>
  </tbody>
</table>

### **Produces**

* application/json

***

## **Definitions**

***BatchAcceptedResponse***\
A batch was accepted. The report can be accessed using the reporting endpoint.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            operationToken
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>
  </tbody>
</table>

***CustomAttribute***\
Defines a custom attribute of a product.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            name
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          The name of the attribute. Underscores will be replaced by spaces upon insertion.
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            value
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          The value of the attribute.
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>
  </tbody>
</table>

***Error***\
Error descriptor.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            code
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          A MACHINE-READABLE error code string in kebab-case. Unique across Criteo
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            detail
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          A HUMAN-READABLE detailed explanation specific to this occurrence of the problem.This should not be more that 1 paragraph
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            instance
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          A MACHINE-READABLE URI reference that identifies the specific occurrence of the problem. This could be useful when we want to the return the API Endpoint identifying the exact resource related to the error.
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            title
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          A short, HUMAN-READABLE summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization.
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            traceId
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          The MACHINE-READABLE correlation ID provided by the gateway
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            type
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          A MACHINE-READABLE code specifying error category. This information is used on client side to focus on certain type of error, to either retry some processing or display only certain type of errors.
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>
  </tbody>
</table>

***FailResponse***\
Error server response.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            errors
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          List of errors
        </p>
      </td>

      <td>
        <p>
          \&lt;

          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            Error
          </a>

          \> array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            warnings
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          List of warnings
        </p>
      </td>

      <td>
        <p>
          \&lt; Warning > array
        </p>
      </td>
    </tr>
  </tbody>
</table>

***Installment***\
Defines the installment of a product.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            amount
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The amount the buyer has to pay per month.
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            Price
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            months
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The number of installments the buyer has to pay.
        </p>
      </td>

      <td>
        <p>
          Object
        </p>
      </td>
    </tr>
  </tbody>
</table>

***LoyaltyPoints***\
Defines how a client earns loyalty points after buying this product.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            name
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or 24 Roman characters.
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            pointsValue
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The retailer’s loyalty points in absolute value.
        </p>
      </td>

      <td>
        <p>
          Object
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            ratio
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The ratio of a point when converted to currency. Google assumes currency based on Merchant Center settings. If ratio is left out, it defaults to 1.0.
        </p>
      </td>

      <td>
        <p>
          Number (double)
        </p>
      </td>
    </tr>
  </tbody>
</table>

***Price***\
Defines a price.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            currency
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The price represented as a number.
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            value
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The currency of the price.
        </p>
      </td>

      <td>
        <p>
          String
        </p>
      </td>
    </tr>
  </tbody>
</table>

***Product***\
Defines a product to be inserted or updated.

<table>
  <thead>
    <tr>
      <th>
        <p>
          name
        </p>
      </th>

      <th>
        <p>
          description
        </p>
      </th>

      <th>
        <p>
          schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            id
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          A unique identifier for the item. Aka Product ID.
        </p>

        <p>
          Case-insensitive, no quotation marks, ASCII characters, cannot match

          <code>
            item\_group\_id
          </code>

          ,

          <code>
            seller\_id
          </code>

          , (50 UTF8 characters max).
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            offerId
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Not used by Criteo.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            title
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          Title of the item. (max 500 UTF-8 chars).
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            description
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Description of the item. RECOMMENDED. (max 5000 UTF-8 chars).
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            link
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          URL directly linking to your item's page on your website. (2000 UTF8 characters max)
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            imageLink
          </b>
        </p>

        <p>
          *required*
        </p>
      </td>

      <td>
        <p>
          URL of an image of the item. Supported formats: PNG, JPEG, GIF. (max 2000 UTF-8 chars).
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            additionalImageLinks
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Additional URLs of images of the item.(2000 UTF8 characters max)
        </p>
      </td>

      <td>
        <p>
          string array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            contentLanguage
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The 2-letter ISO 639-1 language code for the item.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            targetCountry
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The CLDR territory code for the item.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            channel
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The item's channel (

          <code>
            online
          </code>

          only).
        </p>
      </td>

      <td>
        <p>
          enum (

          <code>
            online
          </code>

          )
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            expirationDate
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Date on which the item should expire, as specified upon insertion, in ISO 8601 format. By default the value of the expirationDate is 30 days.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            adult
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Set to true if the item is targeted towards adults. RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          boolean
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            kind
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Identifies what kind of resource this is.
        </p>
      </td>

      <td>
        <p>
          enum (content#product)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            brand
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Brand of the item. (70 UTF8 characters max). RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            color
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Color of the item.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            googleProductCategory
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Google's category of the item (see Google product taxonomy). RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            gtin
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Global Trade Item Number (GTIN) of the item. (14 digits max). RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            itemGroupId
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Shared identifier for all variants of the same product. Case-insensitive, no quotation marks, ASCII characters, cannot match

          <code>
            id
          </code>

          ,

          <code>
            seller\_id
          </code>

          , (50 UTF8 characters max). RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            material
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The material of which the item is made.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            mpn
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Manufacturer Part Number (MPN) of the item. (70 UTF8 characters max) RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            pattern
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The item's pattern (e.g. polka dots).
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            price
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Price of the item. (14 characters max). RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#price">
            Price
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            salePrice
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Advertised sale price of the item. RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#price">
            Price
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            salePriceEffectiveDate
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Date range during which the item is on sale.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            sizes
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Size of the item. RECOMMENDED. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same

          <code>
            itemGroupId
          </code>

          value.
        </p>
      </td>

      <td>
        <p>
          string array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            taxes
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Tax information.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#producttax">
            ProductTax
          </a>

          array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            customAttributes
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          A list of custom (merchant-provided) attributes. This is useful for submitting attributes not explicitly exposed by the API. Declaring attributes explicitly exposed by the API using is forbidden
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#customattribute">
            CustomAttribute
          </a>

          array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            identifierExists
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          False when the item does not have unique product identifiers appropriate to its category, such as GTIN, MPN, and brand. Required according to the Unique Product Identifier Rules for all target countries except for Canada.
        </p>
      </td>

      <td>
        <p>
          boolean
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            installment
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Number and amount of installments to pay for an item. Brazil only.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#installment">
            Installment
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            loyaltyPoints
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Loyalty points that users receive after purchasing the item. Japan only.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#loyaltypoints">
            LoyaltyPoints
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            multipack
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The number of identical products in a merchant-defined multipack. To avoid any overflow issue, pass it as a string.
        </p>
      </td>

      <td>
        <p>
          object
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            customLabel0
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Custom label 0 for custom grouping of items in a Shopping campaign.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            customLabel1
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Custom label 1 for custom grouping of items in a Shopping campaign.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            customLabel2
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Custom label 2 for custom grouping of items in a Shopping campaign.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            customLabel3
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Custom label 3 for custom grouping of items in a Shopping campaign.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            customLabel4
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Custom label 4 for custom grouping of items in a Shopping campaign.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            isBundle
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.
        </p>
      </td>

      <td>
        <p>
          boolean
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            mobileLink
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          accounts.link to a mobile-optimized version of the landing page.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            availabilityDate
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The day a pre-ordered product becomes available for delivery, in ISO 8601 format.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            unitPricingMeasure
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The measure and dimension of an item.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#productunitpricingmeasure">
            ProductUnitPricingMeasure
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            unitPricingBaseMeasure
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The preference of the denominator of the unit price.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#productunitpricingbasemeasure">
            ProductUnitPricingBaseMeasure
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            shipping
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Shipping rules.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#productshipping">
            ProductShipping
          </a>

          array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            shippingLabel
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The shipping label of the product, used to group product in account-level shipping rules.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            shippingLength
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Length of the item for shipping.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#productshippingdimension">
            ProductShippingDimension
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            shippingWidth
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Width of the item for shipping.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#productshippingdimension">
            ProductShippingDimension
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            shippingHeight
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Height of the item for shipping.
        </p>
      </td>

      <td>
        <p>
          <a href="#https://developers.criteo.com/retail-media/v2026-preview/docs/product-importer-api#productshippingdimension">
            ProductShippingDimension
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            shippingWeight
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Weight of the item for shipping.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#productshippingweight">
            ProductShippingWeight
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            displayAdsId
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          An identifier for an item for dynamic Retargeting campaigns.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            displayAdsSimilarIds
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Advertiser-specified recommendations.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            displayAdsTitle
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Title of an item for dynamic Retargeting campaigns.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            displayAdsLink
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          URL directly to your item's landing page for dynamic Retargeting campaigns.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            displayAdsValue
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Offer margin for dynamic Retargeting campaigns.
        </p>
      </td>

      <td>
        <p>
          number (double)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            sellOnGoogleQuantity
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The quantity of the product that is available for selling on Google. Supported only for online products.
        </p>
      </td>

      <td>
        <p>
          object
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            promotionIds
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The unique ID of a promotion.
        </p>
      </td>

      <td>
        <p>
          string array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            maxHandlingTime
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Maximal product handling time (in business days).
        </p>
      </td>

      <td>
        <p>
          object
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            minHandlingTime
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Minimal product handling time (in business days).
        </p>
      </td>

      <td>
        <p>
          object
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            costOfGoodsSold
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Cost of goods sold. Used for gross profit reporting.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#price">
            Price
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            source
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The source of the offer, i.e., how the offer was created.
        </p>
      </td>

      <td>
        <p>
          enum (

          <code>
            api
          </code>

          ,

          <code>
            crawl
          </code>

          ,

          <code>
            feed
          </code>

          )
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            includedDestinations
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in

          <code>
            excludedDestinations
          </code>

          .
        </p>
      </td>

      <td>
        <p>
          string array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            excludedDestinations
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).
        </p>
      </td>

      <td>
        <p>
          string array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            adsLabels
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Similar to

          <code>
            adsGrouping
          </code>

          , but only works on CPC.
        </p>
      </td>

      <td>
        <p>
          string array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            adsRedirect
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Allows advertisers to override the item URL when the product is shown within the context of Product Ads.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            productTypeKeys
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          Category keys of the item (formatted as in productTypes).
        </p>

        <p>
          This information is required by RetailMedia.
        </p>
      </td>

      <td>
        <p>
          string array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            productTypes
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Categories of the item (formatted as in products data specification).
        </p>
      </td>

      <td>
        <p>
          string array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            ageGroup
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Target age group of the item.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            availability
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Availability status of the item. RECOMMENDED.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            condition
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Condition or state of the item.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            gender
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Target gender of the item.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            sizeSystem
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          System in which the size is specified. Recommended for apparel items.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            sizeType
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The cut of the item. Recommended for apparel items.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            energyEfficiencyClass
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The energy efficiency class as defined in EU directive 2010/30/EU.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            minEnergyEfficiencyClass
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The energy efficiency class as defined in EU directive 2010/30/EU.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            maxEnergyEfficiencyClass
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The energy efficiency class as defined in EU directive 2010/30/EU.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            taxCategory
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The tax category of the product, used to configure detailed tax nexus in account-level tax settings.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            transitTimeLabel
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The transit time label of the product, used to group product in account-level transit time tables.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            sellerId
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          ⚠️

          <b>
            Deprecated Field, please use

            <code>
              externalSellerId
            </code>

            instead
          </b>
        </p>

        <p>
          The ID of the seller (case-sensitive and max 50 UTF-8 chars). This information is required by the Criteo Offsite Ads.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            externalSellerId
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          The external id of the seller (case-insensitive, no quotation marks, ASCII characters, cannot match

          <code>
            id
          </code>

          ,

          <code>
            itemGroupId
          </code>

          , 50 UTF8 characters max.
        </p>

        <p>
          This information is required by the Criteo Offsite Ads and RetailMedia.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            externalSellerName
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The external name of the seller (case sensitive and 200 UTF8 characters max). This information is required by the Criteo Offsite Ads and RetailMedia.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            adsGrouping
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            numberOfReviews
          </b>
        </p>
      </td>

      <td>
        <p>
          The number of customer reviews for the product
        </p>
      </td>

      <td>
        <p>
          integer (int32)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            productRating
          </b>
        </p>
      </td>

      <td>
        <p>
          The product rating for the product
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            badge
          </b>
        </p>
      </td>

      <td>
        <p>
          URL of a badge image to display on the product.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            Filters
          </b>
        </p>

        <p>
          *optional*
        </p>
      </td>

      <td>
        <p>
          Defines filtering criteria to apply when importing products. This object allows specifying conditions such as brand, category, or custom attributes to limit which products are processed.
        </p>
      </td>

      <td>
        <p>
          <a href="/retail-media/v2026-preview/docs/product-importer-api#filters">
            Filters
          </a>
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ProductShipping***\
Defines the shipping information of a product.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            country
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The   CLDR territory code of the country to which an item will ship.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            locationGroupName
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The location   where the shipping is applicable, represented by a location group name.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            locationId
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The numeric ID   of a location that the shipping rate applies to as defined in the AdWords   API.
        </p>
      </td>

      <td>
        <p>
          object
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            postalCode
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The postal code   range that the shipping rate applies to, represented by a postal code, a   postal code prefix followed by a \* wildcard, a range between two postal codes   or two postal code prefixes of equal length.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            price
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          Fixed shipping   price, represented as a number.
        </p>
      </td>

      <td>
        <p>
          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            Price
          </a>
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            region
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The geographic   region to which a shipping rate applies.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            service
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          A free-form   description of the service class or delivery speed.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ProductShippingDimension***\
Defines the shipping dimension of a product.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            unit
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The   unit of value.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            value
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The dimension   of the product used to calculate the shipping cost of the item.
        </p>
      </td>

      <td>
        <p>
          number   (double)
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ProductShippingWeight***\
Defines the shipping weight of a product.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            unit
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The   unit of value.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            value
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The weight of   the product used to calculate the shipping cost of the item.
        </p>
      </td>

      <td>
        <p>
          number   (double)
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ProductTax***\
Defines the tax information of a product.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            country
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The   country within which the item is taxed, specified as a CLDR territory code.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            locationId
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The numeric ID   of a location that the tax rate applies to as defined in the AdWords API.
        </p>
      </td>

      <td>
        <p>
          object
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            postalCode
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The postal code   range that the tax rate applies to, represented by a ZIP code, a ZIP code   prefix using *wildcard, a range between two ZIP codes or two ZIP code   prefixes of equal length. Examples: 94114, 94* , 94002-95460, 94\_-95\_.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            rate
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The percentage   of tax rate that applies to the item price.
        </p>
      </td>

      <td>
        <p>
          number (double)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            region
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The geographic   region to which the tax rate applies.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            taxShip
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          Set to true if   tax is charged on shipping.
        </p>
      </td>

      <td>
        <p>
          boolean
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ProductUnitPricingBaseMeasure***\
Defines a measurement.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            unit
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The   unit of the denominator.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            value
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The denominator   of the unit price.
        </p>
      </td>

      <td>
        <p>
          object
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ProductUnitPricingMeasure***\
Defines a measurement.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            unit
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The   unit of measure.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            value
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The measurement   of an item.
        </p>
      </td>

      <td>
        <p>
          number (double)
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ProductsCustomBatchRequest***

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            entries
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The   request entries to be processed in the batch.
        </p>
      </td>

      <td>
        <p>
          \&lt;

          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            ProductsCustomBatchRequestEntry
          </a>

          \>   array
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ProductsCustomBatchRequestEntry***\
A batch entry encoding a single non-batch products request.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            batchId
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          An   entry ID, unique within the batch request.
        </p>
      </td>

      <td>
        <p>
          integer   (int64)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            feedId
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          Not used by   Criteo.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            merchantId
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The ID of the   managing account. Criteo: the partnerId.
        </p>
      </td>

      <td>
        <p>
          integer (int32)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            method
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The method of   the batch entry.
        </p>
      </td>

      <td>
        <p>
          enum (delete,   insert)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            product
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The product to   insert. Only required if the method is insert.
        </p>
      </td>

      <td>
        <p>
          Product
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            productId
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          The Product ID   to delete. Only defined if the method is delete.
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ReportDetailError***\
An error on a batch operation.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            isServerRelated
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          boolean
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            message
          </b>

          *optional*
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            type
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          enum   (UnknownError, InvalidBigImageUrl, InvalidProductId, InvalidProductUrl,   InvalidSmallImageUrl, JsonParsingIssue, MissingID, MissingImages,   MissingName, MissingURL, NonAsciiId, OverlargeBigImage, OverlargeID,   OverlargeSmallImage, OverlargeURL, ConfigurationError)
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ReportDetailErrors***\
A list of errors on a batch operation.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            errors
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          \&lt;

          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            ReportDetailError
          </a>

          \> array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            productId
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          string
        </p>
      </td>
    </tr>
  </tbody>
</table>

***ReportOkResponse***\
The report on a given operationToken is ready.

<table>
  <thead>
    <tr>
      <th>
        <p>
          Name
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>

      <th>
        <p>
          Schema
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          <b>
            errorDetails
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The   list of errors with details.
        </p>
      </td>

      <td>
        <p>
          \&lt;

          <a href="/marketing-solutions/v2026-preview/docs/product-importer-api#definitions">
            ReportDetailErrors
          </a>

          \>   array
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            importRequestTimestamp
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The date when   the original batch request was sent.
        </p>
      </td>

      <td>
        <p>
          integer (int64)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            numberOfProductsDeleted
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The number of   products deleted.
        </p>
      </td>

      <td>
        <p>
          integer (int32)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            numberOfProductsInTheBatch
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The number of   products present in the batch.
        </p>
      </td>

      <td>
        <p>
          integer (int32)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            numberOfProductsUpserted
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The number of   products upserted.
        </p>
      </td>

      <td>
        <p>
          integer (int32)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            numberOfProductsWithErrors
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The number of   products with errors.
        </p>
      </td>

      <td>
        <p>
          integer (int32)
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          <b>
            status
          </b>

          *required*
        </p>
      </td>

      <td>
        <p>
          The status of   the operation. The operation is completed when the status is one of   (VALIDATED,VALIDATED\_WITH\_ERRORS,FAILED)
        </p>
      </td>

      <td>
        <p>
          enum (ACCEPTED,   IN\_PROGRESS, VALIDATED, VALIDATED\_WITH\_ERRORS, FAILED)
        </p>
      </td>
    </tr>
  </tbody>
</table>

For more information about the semantics of each field, please refer to Criteo Product Feed Specification.

For more information about this API reach out to your account technical contact in Criteo.
