---
metadata:
  - name: generator
    content: Diplodoc Platform v5.55.0
alternate:
  - https://yandex.com/dev/market/partner-api/doc/en/reference/promos/updatePromoOffers.md
  - https://yandex.com/dev/market/partner-api/doc/ru/reference/promos/updatePromoOffers.md
  - https://yandex.com/dev/market/partner-api/doc/zh/reference/promos/updatePromoOffers.md
  - href: en/reference/promos/updatePromoOffers.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/market/partner-api/doc/en/llms.txt

<!-- source: en/api/promos/updatePromoOffers.md -->
<div class="openapi">

# Adding products to a promotion or changing their prices

<!-- markdownlint-disable-file -->

{% list tabs %}

- Info

  
  <!-- source: en/_auto/method_scopes/updatePromoOffers.md -->
  **The method is available for models: [FBY, FBS, Express and DBS](https://yandex.com/dev/market/partner-api/doc/en/overview/business.md).**

  Not yet available for Market Yandex Go sellers.

  {% cut "**If you are using an API Key token, one of the accesses in the list is required to call the method**" %}

  * pricing — [Manage prices](https://yandex.com/dev/market/partner-api/doc/en/_auto/scopes_summary/pages/pricing.md)
  * promotion — [Product promotion](https://yandex.com/dev/market/partner-api/doc/en/_auto/scopes_summary/pages/promotion.md)
  * all-methods — Full account management

  {% endcut %}
  <!-- endsource: en/_auto/method_scopes/updatePromoOffers.md -->
  
  
  Adds products to the promotion or changes the prices of the products that participate in the promotion.
  
  The changes begin to take effect within 4-6 hours. To find out if they have been applied, use the parameter `processing` in the method's response [POST v2/businesses/{businessId}/promos](https://yandex.com/dev/market/partner-api/doc/en/reference/promos/getPromos.md).
  
  
  <!-- source: en/_auto/method_limits/updatePromoOffers.md -->
  |<div style="text-align: left;">**⚙️ Limit:** 5 000 requests per hour</div>|
  |-|
  <!-- endsource: en/_auto/method_limits/updatePromoOffers.md -->
  
  
  
  ## Request
  
  <div class="openapi__requests">
  
  <div class="openapi__request__wrapper" style="--method: var(--dc-openapi-methods-post);margin-bottom: 12px">
  
  <div class="openapi__request">
  
  POST {.openapi__method}
  ```text translate=no
  https://api.partner.market.yandex.ru/v2/businesses/{businessId}/promos/offers/update
  ```
  
  </div>
  
  </div>
  
  </div>
  
  ### Path parameters
  
  #|
  || **Name** | **Description** ||
  ||
  
  _businessId_{.json-schema-reset .json-schema-property .json-schema-required}
  {.table-cell}|
  **Type**: integer
  
  Cabinet ID.
  
  
  
  
  To find out, use the request [GET v2/campaigns](https://yandex.com/dev/market/partner-api/doc/en/reference/campaigns/getCampaigns.md).
  
  ℹ️ [What is a cabinet and a store on the Market?](https://yandex.ru/support/marketplace/account/introduction.html)
  
  
  
  
  
  _Min value:_{.json-schema-reset .json-schema-assertion} `1`
  {.table-cell}
  ||
  |#{.json-schema-properties}
  
  <div class="openapi-entity">
  
  ### Body
  
  {% cut "application/json" %}
  
  ```json translate=no
  {
    "promoId": "example",
    "offers": [
      {
        "offerId": "example",
        "params": {
          "discountParams": {
            "price": 1,
            "promoPrice": 1
          }
        }
      }
    ]
  }
  ```
  
  {% endcut %}
  
  #|
  || **Name** | **Description** ||
  ||
  
  _offers_{.json-schema-reset .json-schema-property .json-schema-required}
  {.table-cell}|
  {% cut "**Type**: object[]" %}
  
  #|
  ||
  
  _offerId_{.json-schema-reset .json-schema-property .json-schema-required}
  {.table-cell}|
  **Type**: string
  
  Your SKU — the product ID in your system.
  
  Usage rules SKU:
  
  * For each product SKU there must be one.
  
  * Already set SKU it cannot be released and reused for another product. Each product should receive a new identifier that has never been used in your catalog before.
  
  SKU The product can be changed in the seller's account on the Market. Read about how to do this. [in the Help of the Market for sellers](https://yandex.ru/support2/marketplace/ru/assortment/operations/edit-sku).
  
  
  {% note warning %}
  
  
  Spaces at the beginning and end of the value are automatically deleted. For example, `"  SKU123  "` and `"SKU123"` they will be treated as identical values.
  
  
  {% endnote %}
  
  
  [What is SKU and how to assign it](https://yandex.ru/support/marketplace/assortment/add/index.html#fields)
  
  
  _Min length:_{.json-schema-reset .json-schema-assertion} `1`
  
  _Max length:_{.json-schema-reset .json-schema-assertion} `255`
  
  _Pattern:_{.json-schema-reset .json-schema-assertion} `^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$`
  
  _Example:_{.json-schema-reset .json-schema-example} `example`
  {.table-cell}
  ||
  ||
  
  _params_{.json-schema-reset .json-schema-property}
  {.table-cell}|
  {% cut "**Type**: object" %}
  
  #|
  ||
  
  _discountParams_{.json-schema-reset .json-schema-property}
  {.table-cell}|
  {% cut "**Type**: object" %}
  
  #|
  ||
  
  _price_{.json-schema-reset .json-schema-property}
  {.table-cell}|
  **Type**: integer
  
  Crossed out price — the price at which the product was sold before the promotion.
  
  Indicated in rubles.
  
  The number must be an integer.
  
  
  _Min value:_{.json-schema-reset .json-schema-assertion} `1`
  {.table-cell}
  ||
  ||
  
  _promoPrice_{.json-schema-reset .json-schema-property}
  {.table-cell}|
  **Type**: integer
  
  Share price — the one you want to sell the product at.
  
  Indicated in rubles.
  
  The number must be an integer.
  
  
  _Min value:_{.json-schema-reset .json-schema-assertion} `1`
  {.table-cell}
  ||
  |#{.json-schema-properties}
  
  {% endcut %}
  
  Product parameters in the promotion with the type `DIRECT_DISCOUNT` or `BLUE_FLASH`.
  
  A required parameter for stocks with these types.
  
  
  {% cut "**Example**" %}{.json-schema-example}
  
  ```json translate=no
  {
    "price": 1,
    "promoPrice": 1
  }
  ```
  
  {% endcut %}
  {.table-cell}
  ||
  |#{.json-schema-properties}
  
  {% endcut %}
  
  Parameters of the product that participates in the promotion.
  
  {% cut "**Example**" %}{.json-schema-example}
  
  ```json translate=no
  {
    "discountParams": {
      "price": 1,
      "promoPrice": 1
    }
  }
  ```
  
  {% endcut %}
  {.table-cell}
  ||
  |#{.json-schema-properties}
  
  {% endcut %}
  
  Products that need to be added to the promotion or whose prices need to be changed.
  
  _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
  _Max items:_{.json-schema-reset .json-schema-assertion} `500`
  
  {% cut "**Example**" %}{.json-schema-example}
  
  ```json translate=no
  [
    {
      "offerId": "example",
      "params": {
        "discountParams": {
          "price": 1,
          "promoPrice": 1
        }
      }
    }
  ]
  ```
  
  {% endcut %}
  {.table-cell}
  ||
  ||
  
  _promoId_{.json-schema-reset .json-schema-property .json-schema-required}
  {.table-cell}|
  **Type**: string
  
  The ID of the promotion.
  
  _Example:_{.json-schema-reset .json-schema-example} `example`
  {.table-cell}
  ||
  |#{.json-schema-properties}
  
  </div>
  
  ## Responses
  
  <div class="openapi__response__code__200">
  
  ## 200 OK
  
  The result of adding products to the promotion or updating their prices.
  
  <div class="openapi-entity">
  
  ### Body
  
  {% cut "application/json" %}
  
  ```json translate=no
  {
    "status": "OK",
    "result": {
      "rejectedOffers": [
        {
          "offerId": "example",
          "reason": "OFFER_DOES_NOT_EXIST"
        }
      ],
      "warningOffers": [
        {
          "offerId": "example",
          "warnings": [
            null
          ]
        }
      ]
    }
  }
  ```
  
  {% endcut %}
  
  **Type**: object
  
  {% cut "**All of 2 types**" %}{.json-schema-combinators data-marker=and}
  
  - {% cut "**Type**: object" %}
  
    #|
    ||
  
    _status_{.json-schema-reset .json-schema-property .json-schema-required}
    {.table-cell}|
    **Type**: string
  
    The type of response.
    Possible values:
    * `OK` — There are no errors.
    * `ERROR` — an error occurred while processing the request.
  
  
    _Enum:_{.json-schema-reset .json-schema-value} `OK`, `ERROR`
    {.table-cell}
    ||
    |#{.json-schema-properties}
  
    {% endcut %}
  
    The standard wrapper for server responses.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "status": "OK"
    }
    ```
  
    {% endcut %}
  
  - {% cut "**Type**: object" %}
  
    #|
    ||
  
    _result_{.json-schema-reset .json-schema-property}
    {.table-cell}|
    {% cut "**Type**: object" %}
  
    #|
    ||
  
    _rejectedOffers_{.json-schema-reset .json-schema-property}
    {.table-cell}|
    {% cut "**Type**: object[]" %}
  
    #|
    ||
  
    _offerId_{.json-schema-reset .json-schema-property .json-schema-required}
    {.table-cell}|
    **Type**: string
  
    Your SKU — the product ID in your system.
  
    Usage rules SKU:
  
    * For each product SKU there must be one.
  
    * Already set SKU it cannot be released and reused for another product. Each product should receive a new identifier that has never been used in your catalog before.
  
    SKU The product can be changed in the seller's account on the Market. Read about how to do this. [in the Help of the Market for sellers](https://yandex.ru/support2/marketplace/ru/assortment/operations/edit-sku).
  
  
    {% note warning %}
  
  
    Spaces at the beginning and end of the value are automatically deleted. For example, `"  SKU123  "` and `"SKU123"` they will be treated as identical values.
  
  
    {% endnote %}
  
  
    [What is SKU and how to assign it](https://yandex.ru/support/marketplace/assortment/add/index.html#fields)
  
  
    _Min length:_{.json-schema-reset .json-schema-assertion} `1`
  
    _Max length:_{.json-schema-reset .json-schema-assertion} `255`
  
    _Pattern:_{.json-schema-reset .json-schema-assertion} `^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$`
  
    _Example:_{.json-schema-reset .json-schema-example} `example`
    {.table-cell}
    ||
    ||
  
    _reason_{.json-schema-reset .json-schema-property .json-schema-required}
    {.table-cell}|
    **Type**: string
  
    The reason for rejecting the change:
  
    * `OFFER_DOES_NOT_EXIST` — there is no product in the cabinet with this SKU.
  
    * `OFFER_DUPLICATION` — the same product has been transferred several times.
  
    * `OFFER_NOT_ELIGIBLE_FOR_PROMO` — The product does not meet the terms of the promotion.
  
    * `OFFER_PROMOS_MAX_BYTE_SIZE_EXCEEDED` — The product was not added to the promotion due to technical reasons.
  
    * `DEADLINE_FOR_FOCUS_PROMOS_EXCEEDED` — The deadline for adding products to the promotion has expired.
  
    * `EMPTY_OLD_PRICE` — the crossed-out price is not specified.
  
    * `EMPTY_PROMO_PRICE` — the price of the promotion is not specified.
  
    * `MAX_PROMO_PRICE_EXCEEDED` — the share price exceeds the maximum possible price for participation in the promotion.
  
    * `PROMO_PRICE_BIGGER_THAN_MAX` — the share price is more than 95% of the crossed-out price.
  
    * `PROMO_PRICE_SMALLER_THAN_MIN` — the share price is less than 1% of the crossed-out price.
  
    * `PRICE_TOO_BIG` — The stock price is too high.
  
    * `OLD_PRICE_TOO_BIG` — The crossed-out price is too large.
  
  
    _Enum:_{.json-schema-reset .json-schema-value} `OFFER_DOES_NOT_EXIST`, `OFFER_DUPLICATION`, `OFFER_NOT_ELIGIBLE_FOR_PROMO`, `OFFER_PROMOS_MAX_BYTE_SIZE_EXCEEDED`, `DEADLINE_FOR_FOCUS_PROMOS_EXCEEDED`, `EMPTY_OLD_PRICE`, `EMPTY_PROMO_PRICE`, `MAX_PROMO_PRICE_EXCEEDED`, `PROMO_PRICE_BIGGER_THAN_MAX`, `PROMO_PRICE_SMALLER_THAN_MIN`, `PRICE_TOO_BIG`, `OLD_PRICE_TOO_BIG`
    {.table-cell}
    ||
    |#{.json-schema-properties}
  
    {% endcut %}
  
    Changes that were rejected.
  
    It is returned only if there are rejected changes.
  
  
    _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    [
      {
        "offerId": "example",
        "reason": "OFFER_DOES_NOT_EXIST"
      }
    ]
    ```
  
    {% endcut %}
    {.table-cell}
    ||
    ||
  
    _warningOffers_{.json-schema-reset .json-schema-property}
    {.table-cell}|
    {% cut "**Type**: object[]" %}
  
    #|
    ||
  
    _offerId_{.json-schema-reset .json-schema-property .json-schema-required}
    {.table-cell}|
    **Type**: string
  
    Your SKU — the product ID in your system.
  
    Usage rules SKU:
  
    * For each product SKU there must be one.
  
    * Already set SKU it cannot be released and reused for another product. Each product should receive a new identifier that has never been used in your catalog before.
  
    SKU The product can be changed in the seller's account on the Market. Read about how to do this. [in the Help of the Market for sellers](https://yandex.ru/support2/marketplace/ru/assortment/operations/edit-sku).
  
  
    {% note warning %}
  
  
    Spaces at the beginning and end of the value are automatically deleted. For example, `"  SKU123  "` and `"SKU123"` they will be treated as identical values.
  
  
    {% endnote %}
  
  
    [What is SKU and how to assign it](https://yandex.ru/support/marketplace/assortment/add/index.html#fields)
  
  
    _Min length:_{.json-schema-reset .json-schema-assertion} `1`
  
    _Max length:_{.json-schema-reset .json-schema-assertion} `255`
  
    _Pattern:_{.json-schema-reset .json-schema-assertion} `^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$`
  
    _Example:_{.json-schema-reset .json-schema-example} `example`
    {.table-cell}
    ||
    ||
  
    _warnings_{.json-schema-reset .json-schema-property .json-schema-required}
    {.table-cell}|
    {% cut "**Type**: object[]" %}
  
    #|
    ||
  
    _code_{.json-schema-reset .json-schema-property .json-schema-required}
    {.table-cell}|
    **Type**: string
  
    The warning that appeared when adding the product:
  
    * `DEEP_DISCOUNT_OFFER` — there is a big difference with the price in the catalog. Check if there is an error.
  
    * `CATALOG_PRICE_IS_LOWER_THAN_PROMO` — the price, which is valid in all stores, is lower than the price of the promotion. The product price will not be displayed for the promotion.
  
    * `SHOP_PRICES_ARE_LOWER_THAN_PROMO` — the price in a separate store is lower than the price of the promotion. The product in the promotion will display the price in the store. The promotion price will apply to all other stores.
  
    * `SHOP_OFFER_NOT_ELIGIBLE_FOR_PROMO` — The product in a separate store does not meet the terms of the promotion.
  
  
    _Enum:_{.json-schema-reset .json-schema-value} `DEEP_DISCOUNT_OFFER`, `CATALOG_PRICE_IS_LOWER_THAN_PROMO`, `SHOP_PRICES_ARE_LOWER_THAN_PROMO`, `SHOP_OFFER_NOT_ELIGIBLE_FOR_PROMO`
    {.table-cell}
    ||
    ||
  
    _campaignIds_{.json-schema-reset .json-schema-property}
    {.table-cell}|
    **Type**: integer[] &#124; null
  
    The campaign IDs of those stores for which warnings were received.
  
    It is not refunded if the warnings are valid for all stores in the cabinet.
  
  
    _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
    _Unique items:_{.json-schema-reset .json-schema-assertion} `true`
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    [
      1
    ]
    ```
  
    {% endcut %}
    {.table-cell}
    ||
    |#{.json-schema-properties}
  
    {% endcut %}
  
    Warnings that appear when adding an item to a promotion or changing its prices.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    [
      {
        "code": "DEEP_DISCOUNT_OFFER",
        "campaignIds": [
          1
        ]
      }
    ]
    ```
  
    {% endcut %}
    {.table-cell}
    ||
    |#{.json-schema-properties}
  
    {% endcut %}
  
    Changes that have warnings. They inform you about possible problems. The product information will be updated.
  
    It is returned only if there are warnings.
  
  
    _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    [
      {
        "offerId": "example",
        "warnings": [
          {
            "code": "DEEP_DISCOUNT_OFFER",
            "campaignIds": [
              1
            ]
          }
        ]
      }
    ]
    ```
  
    {% endcut %}
    {.table-cell}
    ||
    |#{.json-schema-properties}
  
    {% endcut %}
  
    Errors and warnings that appeared when adding products to the promotion.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "rejectedOffers": [
        {
          "offerId": "example",
          "reason": "OFFER_DOES_NOT_EXIST"
        }
      ],
      "warningOffers": [
        {
          "offerId": "example",
          "warnings": [
            {
              "code": "DEEP_DISCOUNT_OFFER",
              "campaignIds": [
                null
              ]
            }
          ]
        }
      ]
    }
    ```
  
    {% endcut %}
    {.table-cell}
    ||
    |#{.json-schema-properties}
  
    {% endcut %}
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "result": {
        "rejectedOffers": [
          {
            "offerId": "example",
            "reason": "OFFER_DOES_NOT_EXIST"
          }
        ],
        "warningOffers": [
          {
            "offerId": "example",
            "warnings": [
              {}
            ]
          }
        ]
      }
    }
    ```
  
    {% endcut %}
  
  {% endcut %}
  
  </div>
  
  </div>
  
  <div class="openapi__response__code__400">
  
  ## 400 Bad Request
  
  The request contains incorrect data. [Learn more about errors when working with stocks](https://yandex.com/dev/market/partner-api/doc/en/concepts/error-codes.md#promos)
  
  
  <div class="openapi-entity">
  
  ### Body
  
  {% cut "application/json" %}
  
  ```json translate=no
  {
    "status": "OK",
    "errors": [
      {
        "code": "example",
        "message": "example"
      }
    ]
  }
  ```
  
  {% endcut %}
  
  **Type**: object
  
  {% cut "**All of 1 type**" %}{.json-schema-combinators data-marker=and}
  
  - **Type**: object
  
    {% cut "**All of 2 types**" %}{.json-schema-combinators data-marker=and}
  
    - **Type**: object
  
      #|
      ||
  
      _status_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The type of response.
      Possible values:
      * `OK` — There are no errors.
      * `ERROR` — an error occurred while processing the request.
  
  
      _Enum:_{.json-schema-reset .json-schema-value} `OK`, `ERROR`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      The standard wrapper for server responses.
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "status": "OK"
      }
      ```
  
      {% endcut %}
  
    - **Type**: object
  
      #|
      ||
  
      _errors_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      {% cut "**Type**: object[]" %}
  
      #|
      ||
  
      _code_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The error code.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      ||
  
      _message_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      **Type**: string
  
      Description of the error.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% endcut %}
  
      A list of errors.
  
      _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      [
        {
          "code": "example",
          "message": "example"
        }
      ]
      ```
  
      {% endcut %}
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "errors": [
          {
            "code": "example",
            "message": "example"
          }
        ]
      }
      ```
  
      {% endcut %}
  
    {% endcut %}
  
    A standard wrapper for server errors.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    ```
  
    {% endcut %}
  
  {% endcut %}
  
  </div>
  
  </div>
  
  <div class="openapi__response__code__401">
  
  ## 401 Unauthorized
  
  The authorization data is not specified in the request. [More information about the error](https://yandex.com/dev/market/partner-api/doc/en/concepts/error-codes.md#401)
  
  <div class="openapi-entity">
  
  ### Body
  
  {% cut "application/json" %}
  
  ```json translate=no
  {
    "status": "OK",
    "errors": [
      {
        "code": "example",
        "message": "example"
      }
    ]
  }
  ```
  
  {% endcut %}
  
  **Type**: object
  
  {% cut "**All of 1 type**" %}{.json-schema-combinators data-marker=and}
  
  - **Type**: object
  
    {% cut "**All of 2 types**" %}{.json-schema-combinators data-marker=and}
  
    - **Type**: object
  
      #|
      ||
  
      _status_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The type of response.
      Possible values:
      * `OK` — There are no errors.
      * `ERROR` — an error occurred while processing the request.
  
  
      _Enum:_{.json-schema-reset .json-schema-value} `OK`, `ERROR`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      The standard wrapper for server responses.
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "status": "OK"
      }
      ```
  
      {% endcut %}
  
    - **Type**: object
  
      #|
      ||
  
      _errors_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      {% cut "**Type**: object[]" %}
  
      #|
      ||
  
      _code_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The error code.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      ||
  
      _message_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      **Type**: string
  
      Description of the error.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% endcut %}
  
      A list of errors.
  
      _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      [
        {
          "code": "example",
          "message": "example"
        }
      ]
      ```
  
      {% endcut %}
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "errors": [
          {
            "code": "example",
            "message": "example"
          }
        ]
      }
      ```
  
      {% endcut %}
  
    {% endcut %}
  
    A standard wrapper for server errors.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    ```
  
    {% endcut %}
  
  {% endcut %}
  
  </div>
  
  </div>
  
  <div class="openapi__response__code__403">
  
  ## 403 Forbidden
  
  The authorization data is incorrect or access to the resource is prohibited. [More information about the error](https://yandex.com/dev/market/partner-api/doc/en/concepts/error-codes.md#403)
  
  <div class="openapi-entity">
  
  ### Body
  
  {% cut "application/json" %}
  
  ```json translate=no
  {
    "status": "OK",
    "errors": [
      {
        "code": "example",
        "message": "example"
      }
    ]
  }
  ```
  
  {% endcut %}
  
  **Type**: object
  
  {% cut "**All of 1 type**" %}{.json-schema-combinators data-marker=and}
  
  - **Type**: object
  
    {% cut "**All of 2 types**" %}{.json-schema-combinators data-marker=and}
  
    - **Type**: object
  
      #|
      ||
  
      _status_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The type of response.
      Possible values:
      * `OK` — There are no errors.
      * `ERROR` — an error occurred while processing the request.
  
  
      _Enum:_{.json-schema-reset .json-schema-value} `OK`, `ERROR`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      The standard wrapper for server responses.
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "status": "OK"
      }
      ```
  
      {% endcut %}
  
    - **Type**: object
  
      #|
      ||
  
      _errors_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      {% cut "**Type**: object[]" %}
  
      #|
      ||
  
      _code_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The error code.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      ||
  
      _message_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      **Type**: string
  
      Description of the error.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% endcut %}
  
      A list of errors.
  
      _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      [
        {
          "code": "example",
          "message": "example"
        }
      ]
      ```
  
      {% endcut %}
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "errors": [
          {
            "code": "example",
            "message": "example"
          }
        ]
      }
      ```
  
      {% endcut %}
  
    {% endcut %}
  
    A standard wrapper for server errors.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    ```
  
    {% endcut %}
  
  {% endcut %}
  
  </div>
  
  </div>
  
  <div class="openapi__response__code__404">
  
  ## 404 Not Found
  
  The requested resource was not found. [More information about the error](https://yandex.com/dev/market/partner-api/doc/en/concepts/error-codes.md#404)
  
  <div class="openapi-entity">
  
  ### Body
  
  {% cut "application/json" %}
  
  ```json translate=no
  {
    "status": "OK",
    "errors": [
      {
        "code": "example",
        "message": "example"
      }
    ]
  }
  ```
  
  {% endcut %}
  
  **Type**: object
  
  {% cut "**All of 1 type**" %}{.json-schema-combinators data-marker=and}
  
  - **Type**: object
  
    {% cut "**All of 2 types**" %}{.json-schema-combinators data-marker=and}
  
    - **Type**: object
  
      #|
      ||
  
      _status_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The type of response.
      Possible values:
      * `OK` — There are no errors.
      * `ERROR` — an error occurred while processing the request.
  
  
      _Enum:_{.json-schema-reset .json-schema-value} `OK`, `ERROR`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      The standard wrapper for server responses.
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "status": "OK"
      }
      ```
  
      {% endcut %}
  
    - **Type**: object
  
      #|
      ||
  
      _errors_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      {% cut "**Type**: object[]" %}
  
      #|
      ||
  
      _code_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The error code.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      ||
  
      _message_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      **Type**: string
  
      Description of the error.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% endcut %}
  
      A list of errors.
  
      _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      [
        {
          "code": "example",
          "message": "example"
        }
      ]
      ```
  
      {% endcut %}
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "errors": [
          {
            "code": "example",
            "message": "example"
          }
        ]
      }
      ```
  
      {% endcut %}
  
    {% endcut %}
  
    A standard wrapper for server errors.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    ```
  
    {% endcut %}
  
  {% endcut %}
  
  </div>
  
  </div>
  
  <div class="openapi__response__code__420">
  
  ## 420 Method Failure
  
  The resource access limit has been exceeded. [More information about the error](https://yandex.com/dev/market/partner-api/doc/en/concepts/error-codes.md#420)
  
  <div class="openapi-entity">
  
  ### Body
  
  {% cut "application/json" %}
  
  ```json translate=no
  {
    "status": "OK",
    "errors": [
      {
        "code": "example",
        "message": "example"
      }
    ]
  }
  ```
  
  {% endcut %}
  
  **Type**: object
  
  {% cut "**All of 1 type**" %}{.json-schema-combinators data-marker=and}
  
  - **Type**: object
  
    {% cut "**All of 2 types**" %}{.json-schema-combinators data-marker=and}
  
    - **Type**: object
  
      #|
      ||
  
      _status_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The type of response.
      Possible values:
      * `OK` — There are no errors.
      * `ERROR` — an error occurred while processing the request.
  
  
      _Enum:_{.json-schema-reset .json-schema-value} `OK`, `ERROR`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      The standard wrapper for server responses.
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "status": "OK"
      }
      ```
  
      {% endcut %}
  
    - **Type**: object
  
      #|
      ||
  
      _errors_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      {% cut "**Type**: object[]" %}
  
      #|
      ||
  
      _code_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The error code.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      ||
  
      _message_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      **Type**: string
  
      Description of the error.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% endcut %}
  
      A list of errors.
  
      _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      [
        {
          "code": "example",
          "message": "example"
        }
      ]
      ```
  
      {% endcut %}
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "errors": [
          {
            "code": "example",
            "message": "example"
          }
        ]
      }
      ```
  
      {% endcut %}
  
    {% endcut %}
  
    A standard wrapper for server errors.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    ```
  
    {% endcut %}
  
  {% endcut %}
  
  </div>
  
  </div>
  
  <div class="openapi__response__code__500">
  
  ## 500 Internal Server Error
  
  Internal error of Yandex. Market. [More information about the error](https://yandex.com/dev/market/partner-api/doc/en/concepts/error-codes.md#500)
  
  <div class="openapi-entity">
  
  ### Body
  
  {% cut "application/json" %}
  
  ```json translate=no
  {
    "status": "OK",
    "errors": [
      {
        "code": "example",
        "message": "example"
      }
    ]
  }
  ```
  
  {% endcut %}
  
  **Type**: object
  
  {% cut "**All of 1 type**" %}{.json-schema-combinators data-marker=and}
  
  - **Type**: object
  
    {% cut "**All of 2 types**" %}{.json-schema-combinators data-marker=and}
  
    - **Type**: object
  
      #|
      ||
  
      _status_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The type of response.
      Possible values:
      * `OK` — There are no errors.
      * `ERROR` — an error occurred while processing the request.
  
  
      _Enum:_{.json-schema-reset .json-schema-value} `OK`, `ERROR`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      The standard wrapper for server responses.
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "status": "OK"
      }
      ```
  
      {% endcut %}
  
    - **Type**: object
  
      #|
      ||
  
      _errors_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      {% cut "**Type**: object[]" %}
  
      #|
      ||
  
      _code_{.json-schema-reset .json-schema-property .json-schema-required}
      {.table-cell}|
      **Type**: string
  
      The error code.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      ||
  
      _message_{.json-schema-reset .json-schema-property}
      {.table-cell}|
      **Type**: string
  
      Description of the error.
  
      _Example:_{.json-schema-reset .json-schema-example} `example`
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% endcut %}
  
      A list of errors.
  
      _Min items:_{.json-schema-reset .json-schema-assertion} `1`
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      [
        {
          "code": "example",
          "message": "example"
        }
      ]
      ```
  
      {% endcut %}
      {.table-cell}
      ||
      |#{.json-schema-properties}
  
      {% cut "**Example**" %}{.json-schema-example}
  
      ```json translate=no
      {
        "errors": [
          {
            "code": "example",
            "message": "example"
          }
        ]
      }
      ```
  
      {% endcut %}
  
    {% endcut %}
  
    A standard wrapper for server errors.
  
    {% cut "**Example**" %}{.json-schema-example}
  
    ```json translate=no
    {
      "status": "OK",
      "errors": [
        {
          "code": "example",
          "message": "example"
        }
      ]
    }
    ```
  
    {% endcut %}
  
  {% endcut %}
  
  </div>
  
  </div>
        

- Console

  ```openapi-sandbox translate=no
  pathParams:
    - description: "Cabinet ID.\n\n\n:::no-translate\n{% if audience == \"partner\" %}\n:::\n\n\nTo find out, use the request [GET\_v2/campaigns](../../reference/campaigns/getCampaigns.md).\n\nℹ️ [What is a cabinet and a store on the Market?](https://yandex.ru/support/marketplace/account/introduction.html)\n\n\n:::no-translate\n{% endif %}\n:::\n\n"
      name: businessId
      in: path
      required: true
      schema:
        type: integer
        format: int64
        minimum: 1
  searchParams: []
  headers: []
  body: |-
    {
      "promoId": "example",
      "offers": [
        {
          "offerId": "example",
          "params": {
            "discountParams": {
              "price": 1,
              "promoPrice": 1
            }
          }
        }
      ]
    }
  schema:
    description: >
      Adding products to a promotion or updating their parameters.
  
  
      To add products to a promotion or update the parameters of some products,
      pass them in the parameter `offers`.
    type: object
    required:
      - promoId
      - offers
    properties:
      promoId:
        description: The ID of the promotion.
        type: string
      offers:
        description: >-
          Products that need to be added to the promotion or whose prices need to
          be changed.
        type: array
        minItems: 1
        maxItems: 500
        items:
          description: Description of the products that participate in the promotion.
          type: object
          required:
            - offerId
          properties:
            offerId:
              description: "Your SKU —\_the product ID in your system.\n\nUsage rules SKU:\n\n* For each product SKU there must be one.\n\n* Already set SKU it cannot be released and reused for another product. Each product should receive a new identifier that has never been used in your catalog before.\n\nSKU The product can be changed in the seller's account on the Market. Read about how to do this. [in the Help of the Market for sellers](https://yandex.ru/support2/marketplace/ru/assortment/operations/edit-sku).\n\n\n:::no-translate\n{% note warning %}\n:::\n\n\nSpaces at the beginning and end of the value are automatically deleted. For example, `\"  SKU123  \"` and `\"SKU123\"` they will be treated as identical values.\n\n\n:::no-translate\n{% endnote %}\n:::\n\n\n[What is SKU and how to assign it](https://yandex.ru/support/marketplace/assortment/add/index.html#fields)\n"
              type: string
              pattern: ^(?=.*\S.*)[^\x00-\x08\x0A-\x1f\x7f]{1,255}$
              x-transform: trim
              minLength: 1
              maxLength: 255
            params:
              description: Parameters of the product that participates in the promotion.
              type: object
              properties:
                discountParams:
                  description: >
                    Product parameters in the promotion with the type
                    `DIRECT_DISCOUNT` or
                    `BLUE_FLASH`.
  
  
                    A required parameter for stocks with these types.
                  type: object
                  properties:
                    price:
                      description: >
                        Crossed out price — the price at which the
                        product was sold before the promotion.
  
  
                        Indicated in rubles.
  
  
                        The number must be an integer.
                      type: integer
                      format: int64
                      minimum: 1
                    promoPrice:
                      description: >
                        Share price — the one you want to sell the
                        product at.
  
  
                        Indicated in rubles.
  
  
                        The number must be an integer.
                      type: integer
                      format: int64
                      minimum: 1
  bodyType: application/json
  method: post
  security:
    - type: apiKey
      name: 'Api-Key'
      in: header
    - type: oauth2
      x-inline: true
      flows:
        implicit:
          authorizationUrl: https://oauth.yandex.ru/authorize
          scopes:
            market:partner-api: API Яндекс.Маркета / Поиска по товарам для партнеров
  path: v2/businesses/{businessId}/promos/offers/update
  host: https://api.partner.market.yandex.ru
  
  ```
        

{% endlist %}


</div>
<!-- endsource: en/api/promos/updatePromoOffers.md -->

[*basic-price]: Цена, которая действует во всех магазинах.

[*Deprecated]: No longer supported, please use an alternative and newer version.