# Яндекс Маркет Partner API: Передать остатки со своего склада

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

Синхронизировать остатки из учётной системы, чтобы Маркет не продавал отсутствующий товар.

1. Нужен campaignId магазина (из GET /v2/campaigns) и токен с доступом inventory-and-order-processing.
2. Отправь остатки: PUT /v2/campaigns/{campaignId}/offers/stocks — в skus для каждого товара твой SKU (sku) и items с count. SKU в одном запросе не должны повторяться.
3. Передавай остатки сразу после изменения, а не раз в сутки: лимит щедрый — 100 000 запросов в минуту.
4. Нулевой count снимает товар с продажи, пока его нет на складе.

```bash
curl -X PUT "https://api.partner.market.yandex.ru/v2/campaigns/<campaignId>/offers/stocks" \
  -H "Api-Key: $YM_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
        "skus": [
          {"sku": "MUG-WHITE-330", "items": [{"count": 25}]},
          {"sku": "MUG-BLACK-330", "items": [{"count": 0}]}
        ]
      }'
```

## Базовые 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>"
```

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

### GET /v2/campaigns — Список магазинов пользователя

Для Api-Key-токена возвращает магазины кабинета, для которого выдан токен. Отсюда берут `campaignId` и `businessId`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `pageToken` | query | string | нет | Идентификатор страницы результатов |
| `limit` | query | integer | нет | Количество значений на странице |

### PUT /v2/campaigns/{campaignId}/offers/stocks — Передача остатков

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `campaignId` | path | integer | да | Идентификатор магазина |
| `skus` | body | array | да | Остатки; sku уникальны в запросе |
| `skus[].sku` | body | string | да | Ваш SKU |
| `skus[].items` | body | array | да | Информация об остатках |
| `skus[].items[].count` | body | integer | да | Количество доступного товара |
| `skus[].items[].updatedAt` | body | string | нет | Дата и время обновления остатков |

## Нюансы

- Пагинация — по `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/obnovit-tseny-vo-vseh-magazinah.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
