# Яндекс Маркет Partner API: Обновить цены во всех магазинах

Сценарий из mcp-everything. Актуально на 2026-10-24.

Установить единую цену товара сразу для всех магазинов кабинета — с зачёркнутой ценой для скидки.

1. Нужен businessId и токен с доступом pricing.
2. Отправь цены: POST /v2/businesses/{businessId}/offer-prices/updates — в offers для каждого товара offerId (твой SKU) и price с value и currencyId = RUR.
3. Чтобы показать скидку, передай discountBase — зачёркнутую цену, целым числом и больше value.
4. offerId в одном запросе должны быть уникальны. Лимит — 10 000 запросов в минуту.

```bash
curl -X POST "https://api.partner.market.yandex.ru/v2/businesses/<businessId>/offer-prices/updates" \
  -H "Api-Key: $YM_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
        "offers": [
          {"offerId": "MUG-WHITE-330", "price": {"value": 790, "currencyId": "RUR", "discountBase": 990}}
        ]
      }'
```

## Базовые URL

- Боевой: `https://api.partner.market.yandex.ru`

## Авторизация

Тип: API-ключ

Основной способ — API-ключ (Api-Key-токен) из кабинета продавца в заголовке `Api-Key`. Также поддерживается OAuth-токен Яндекса со скоупом `market:partner-api` (авторизация через `https://oauth.yandex.ru/authorize`). Доступ к методам определяется доступами токена: `all-methods`, `all-methods:read-only`, `inventory-and-order-processing`, `offers-and-cards-management`, `pricing`, `communication`, `finance-and-accounting`, `settings-management`, `promotion` и их read-only вариантами.

```
curl https://api.partner.market.yandex.ru/v2/campaigns -H "Api-Key: <token>"
```

## Методы сценария

### POST /v2/businesses/{businessId}/offer-prices/updates — Установка цен для всех магазинов

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `businessId` | path | integer | да | Идентификатор кабинета |
| `offers` | body | array | да | Товары с ценами; offerId уникальны в запросе |
| `offers[].offerId` | body | string | да | Ваш SKU |
| `offers[].price.value` | body | number | да | Цена |
| `offers[].price.currencyId` | body | string | да | Валюта, например RUR |
| `offers[].price.discountBase` | body | number | нет | Зачёркнутая цена (целое число) |
| `offers[].price.minimumForBestseller` | body | number | нет | Минимальная цена для акции «Бестселлеры Маркета» |

## Нюансы

- Пагинация — по `pageToken` и `limit`; параметры `page` и `pageSize` устарели и отключаются с 05.10.2026.
- `GET /v2/campaigns/{campaignId}/orders` отключается 12.04.2027 — переходите на `POST /v1/businesses/{businessId}/orders`.
- Параметры `offer.category`, `offer.params`, `customsCommodityCode` устарели (отключение 12.10.2026); используйте `marketCategoryId`, `parameterValues`, `commodityCodes`.
- При ошибке хотя бы в одном товаре `offer-mappings/update` не отправляет в каталог ни один товар из запроса; ответ `200` сам по себе не означает, что товары прошли проверку.
- Отчёты генерируются асинхронно: сначала `.../generate`, потом опрос `GET /v2/reports/info/{reportId}`.
- Тестовые заказы отмечены `fake: true`.
- У метода `GET /v2/campaigns/{campaignId}/orders` ограничение — до 6 параллельных запросов.

## Другие сценарии

- [Забирать новые заказы и подтверждать их](https://mcp-everything.ru/integrations/yandex-market/scenarios/zabirat-novye-zakazy-i-podtverzhdat-ih.md)
- [Передать остатки со своего склада](https://mcp-everything.ru/integrations/yandex-market/scenarios/peredat-ostatki-so-svoego-sklada.md)
- [Добавить товар в каталог](https://mcp-everything.ru/integrations/yandex-market/scenarios/dobavit-tovar-v-katalog.md)
- [Выгрузить отчёт по заказам за период](https://mcp-everything.ru/integrations/yandex-market/scenarios/vygruzit-otchet-po-zakazam-za-period.md)

---

Если этого недостаточно — официальная документация: https://yandex.ru/dev/market/partner-api/doc/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-market.md
