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

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

Завести новый товар: выбрать категорию Маркета, заполнить характеристики и отправить в каталог.

1. Найди категорию: POST /v2/categories/tree вернёт дерево категорий Маркета с id. Характеристики выбранной категории — в методе /v2/category/{categoryId}/parameters.
2. Отправь товар: POST /v2/businesses/{businessId}/offer-mappings/update — в offerMappings[].offer: offerId, name (тип + бренд + модель + особенности), marketCategoryId, pictures, vendor, barcodes, description, weightDimensions и parameterValues.
3. Ответ 200 ещё не значит, что товар принят: при ошибке хотя бы в одном товаре не уходит ни один товар из запроса. Смотри ошибки и предупреждения в теле ответа.
4. Проверь статус карточки: POST /v2/businesses/{businessId}/offer-mappings с offerIds — в ответе статус карточки и категория.
5. Не используй устаревшие offer.category и offer.params — они отключаются 12.10.2026; вместо них marketCategoryId и parameterValues.

```bash
curl -X POST "https://api.partner.market.yandex.ru/v2/businesses/<businessId>/offer-mappings/update" \
  -H "Api-Key: $YM_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
        "offerMappings": [{
          "offer": {
            "offerId": "MUG-WHITE-330",
            "name": "Кружка керамическая Моя марка 330 мл белая",
            "marketCategoryId": <id категории>,
            "vendor": "Моя марка",
            "pictures": ["https://example.ru/img/mug-white.jpg"],
            "barcodes": ["4601234567893"],
            "description": "Белая керамическая кружка объёмом 330 мл.",
            "weightDimensions": {"length": 12, "width": 9, "height": 10, "weight": 0.4}
          }
        }]
      }'
```

## Базовые 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-mappings — Информация о товарах в каталоге

Список товаров, их категории на Маркете и характеристики.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `businessId` | path | integer | да | Идентификатор кабинета |
| `pageToken` | query | string | нет | Страница результатов |
| `limit` | query | integer | нет | Количество значений на странице |
| `language` | query | string | нет | Язык name и description, по умолчанию RU |
| `offerIds` | body | array | нет | SKU товаров |
| `cardStatuses` | body | array | нет | Статусы карточек |
| `categoryIds` | body | array | нет | Категории на Маркете |
| `vendorNames` | body | array | нет | Бренды |
| `tags` | body | array | нет | Теги |
| `archived` | body | boolean | нет | true — товары в архиве |

### POST /v2/businesses/{businessId}/offer-mappings/update — Добавление и изменение товаров

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `businessId` | path | integer | да | Идентификатор кабинета |
| `offerMappings` | body | array | да | Товары для добавления или обновления |
| `offerMappings[].offer.offerId` | body | string | да | Ваш SKU |
| `offerMappings[].offer.name` | body | string | нет | Название: тип + бренд + модель + особенности |
| `offerMappings[].offer.marketCategoryId` | body | integer | нет | Категория на Маркете |
| `offerMappings[].offer.pictures` | body | array | нет | Ссылки на изображения; первое — основное |
| `offerMappings[].offer.vendor` | body | string | нет | Бренд |
| `offerMappings[].offer.barcodes` | body | array | нет | Штрихкоды (EAN-13, EAN-8, UPC-A, UPC-E) |
| `offerMappings[].offer.description` | body | string | нет | Описание |
| `offerMappings[].offer.weightDimensions` | body | object | нет | Габариты упаковки и вес |
| `offerMappings[].offer.parameterValues` | body | array | нет | Характеристики; передаются вместе с marketCategoryId |
| `offerMappings[].offer.basicPrice` | body | object | нет | Цена с указанием скидки |
| `offerMappings[].mapping` | body | object | нет | Подходящая карточка на Маркете |
| `onlyPartnerMediaContent` | body | boolean | нет | Использовать только ваши данные о товаре |

### POST /v2/categories/tree — Дерево категорий

Возвращает дерево категорий Маркета. Характеристики категории — `POST /v2/category/{categoryId}/parameters`.

## Нюансы

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