# Яндекс Маркет Partner API: Забирать новые заказы и подтверждать их

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

Обработка заказов FBS: получить новые заказы из всех магазинов кабинета и сообщить Маркету, что заказ собран.

1. Создай Api-Key-токен в кабинете продавца с доступом inventory-and-order-processing. Узнай businessId (кабинет) и campaignId (магазин): GET /v2/campaigns.
2. Забирай новые заказы: POST /v1/businesses/{businessId}/orders с statuses = ["PROCESSING"] и substatuses = ["STARTED"] — это заказы, которые ждут сборки. Листай страницы через pageToken из ответа. Старый GET /v2/campaigns/{campaignId}/orders отключается 12.04.2027 — сразу пиши на новом.
3. Собрал заказ — переведи его на следующий этап: PUT /v2/campaigns/{campaignId}/orders/{orderId}/status с order.status = PROCESSING и order.substatus = READY_TO_SHIP.
4. Если товара нет, отмени заказ тем же методом: status = CANCELLED с причиной в substatus, например SHOP_FAILED.
5. Тестовые заказы приходят с fake: true — не отправляй их в учётную систему.

```bash
H="Api-Key: $YM_TOKEN"

# Новые заказы во всех магазинах кабинета
curl -X POST "https://api.partner.market.yandex.ru/v1/businesses/<businessId>/orders?limit=50" \
  -H "$H" -H 'Content-Type: application/json' \
  -d '{"statuses": ["PROCESSING"], "substatuses": ["STARTED"]}'

# Заказ собран
curl -X PUT "https://api.partner.market.yandex.ru/v2/campaigns/<campaignId>/orders/<orderId>/status" \
  -H "$H" -H 'Content-Type: application/json' \
  -d '{"order": {"status": "PROCESSING", "substatus": "READY_TO_SHIP"}}'
```

## Базовые 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 | нет | Количество значений на странице |

### POST /v1/businesses/{businessId}/orders — Информация о заказах в кабинете

Заказы по всем магазинам кабинета; рекомендуемая замена `GET /v2/campaigns/{campaignId}/orders`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `businessId` | path | integer | да | Идентификатор кабинета |
| `pageToken` | query | string | нет | Страница результатов |
| `limit` | query | integer | нет | Количество значений на странице |
| `orderIds` | body | array | нет | ID заказов |
| `externalOrderIds` | body | array | нет | Внешние ID заказов |
| `campaignIds` | body | array | нет | ID магазинов |
| `statuses` | body | array | нет | Статусы заказов |
| `substatuses` | body | array | нет | Этапы обработки или причины отмены |
| `programTypes` | body | array | нет | Модели работы магазина |
| `dates` | body | object | нет | Фильтр по датам |
| `fake` | body | boolean | нет | true — тестовые заказы |
| `waitingForCancellationApprove` | body | boolean | нет | Только DBS: заказы с запросом на отмену |
| `sourcePlatforms` | body | array | нет | Площадки-источники заказов |

### GET /v2/campaigns/{campaignId}/orders — Информация о заказах в магазине

Устаревает: деградация с 18.01.2027, отключение 12.04.2027; замена — `POST /v1/businesses/{businessId}/orders`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `campaignId` | path | integer | да | Идентификатор магазина |
| `orderIds` | query | array | нет | ID заказов; не сочетать с другими фильтрами |
| `status` | query | array | нет | Статус: CANCELLED, DELIVERED, DELIVERY, PROCESSING и др. |
| `substatus` | query | array | нет | Этап обработки или причина отмены |
| `fromDate` | query | string | нет | Дата оформления от, ДД-ММ-ГГГГ |
| `toDate` | query | string | нет | Дата оформления до, ДД-ММ-ГГГГ |
| `updatedAtFrom` | query | string | нет | Дата обновления от, ISO 8601 |
| `updatedAtTo` | query | string | нет | Дата обновления до, ISO 8601 |
| `fake` | query | boolean | нет | Тестовые заказы |
| `pageToken` | query | string | нет | Страница результатов |
| `limit` | query | integer | нет | Количество значений на странице |

### PUT /v2/campaigns/{campaignId}/orders/{orderId}/status — Изменение статуса заказа

Возвращает обновлённую информацию о заказе. Для нескольких заказов — `POST /v2/campaigns/{campaignId}/orders/status-update`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `campaignId` | path | integer | да | Идентификатор магазина |
| `orderId` | path | integer | да | Идентификатор заказа |
| `order.status` | body | string | да | Новый статус заказа |
| `order.substatus` | body | string | нет | Этап обработки (PROCESSING) или причина отмены (CANCELLED) |
| `order.delivery` | body | object | нет | Информация о доставке |

## Нюансы

- Пагинация — по `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/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/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
