Отрасль: Маркетплейсы. Актуально на 2026-10-24.
API Яндекс Маркета для продавцов: управление каталогом товаров и карточками, цены и остатки, обработка заказов и возвратов, отгрузки, отчёты, чаты с покупателями, отзывы и вопросы, акции и буст продаж. Методы работают либо на уровне кабинета (businessId), либо на уровне магазина (campaignId). Официальная OpenAPI-спецификация опубликована на GitHub.
Обработка заказов FBS: получить новые заказы из всех магазинов кабинета и сообщить Маркету, что заказ собран.
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"}}'
Синхронизировать остатки из учётной системы, чтобы Маркет не продавал отсутствующий товар.
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}]}
]
}'
Установить единую цену товара сразу для всех магазинов кабинета — с зачёркнутой ценой для скидки.
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}}
]
}'
Завести новый товар: выбрать категорию Маркета, заполнить характеристики и отправить в каталог.
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}
}
}]
}'
Финансовая сверка и аналитика: отчёт по всем заказам кабинета за нужные даты.
REPORT=$(curl -s -X POST "https://api.partner.market.yandex.ru/v2/reports/united-orders/generate?format=FILE" \
-H "Api-Key: $YM_TOKEN" -H 'Content-Type: application/json' \
-d '{"businessId": <businessId>, "dateFrom": "2026-09-01", "dateTo": "2026-09-30"}' | jq -r .result.reportId)
curl "https://api.partner.market.yandex.ru/v2/reports/info/$REPORT" -H "Api-Key: $YM_TOKEN"
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>"
Для Api-Key-токена возвращает магазины кабинета, для которого выдан токен. Отсюда берут campaignId и businessId.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
pageToken |
query | string | нет | Идентификатор страницы результатов |
limit |
query | integer | нет | Количество значений на странице |
Возвращает сведения о текущем токене и его доступах.
Заказы по всем магазинам кабинета; рекомендуемая замена 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 | нет | Площадки-источники заказов |
Устаревает: деградация с 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 | нет | Количество значений на странице |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
campaignId |
path | integer | да | Идентификатор магазина |
orderId |
path | integer | да | Идентификатор заказа |
Возвращает обновлённую информацию о заказе. Для нескольких заказов — 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 | нет | Информация о доставке |
Список товаров, их категории на Маркете и характеристики.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
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 — товары в архиве |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
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 | нет | Использовать только ваши данные о товаре |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
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 | нет | Минимальная цена для акции «Бестселлеры Маркета» |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
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 | нет | Дата и время обновления остатков |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
campaignId |
path | integer | да | Идентификатор магазина |
Возвращает дерево категорий Маркета. Характеристики категории — POST /v2/category/{categoryId}/parameters.
Запускает асинхронную генерацию отчёта; результат забирают через GET /v2/reports/info/{reportId}.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
format |
query | string | нет | Формат отчёта |
language |
query | string | нет | Язык отчёта |
businessId |
body | integer | да | Идентификатор кабинета |
dateFrom |
body | string | да | Начало периода, ГГГГ-ММ-ДД |
dateTo |
body | string | да | Конец периода, максимум 1 год |
campaignIds |
body | array | нет | Магазины для отчёта |
promoId |
body | string | нет | Акция |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
reportId |
path | string | да | Идентификатор отчёта |
Сообщение покупателю в чате. Доступ communication.
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 параллельных запросов.| Код | Описание |
|---|---|
400 |
Запрос содержит неправильные данные |
401 |
В запросе не указаны данные для авторизации |
403 |
Данные для авторизации неверны или доступ к ресурсу запрещён |
404 |
Запрашиваемый ресурс не найден |
420 |
Превышено ограничение на доступ к ресурсу |
423 |
К ресурсу нельзя применить указанный метод |
500 |
Внутренняя ошибка Маркета |
Лимиты задаются для каждого метода отдельно, например:
GET /v2/campaigns/{campaignId}/orders, POST /v1/businesses/{businessId}/orders), смена статуса заказа — 10 000 запросов в час.offer-mappings (чтение) — 100 запросов в минуту; offer-mappings/update — 5 000 в минуту.offer-prices/updates — 10 000 в минуту.PUT .../offers/stocks — 100 000 в минуту; POST /v3/businesses/{businessId}/offers/stocks/update — 50 в минуту.Если этого недостаточно — официальная документация: https://yandex.ru/dev/market/partner-api/doc/ JSON: https://mcp-everything.ru/api/integrations/yandex-market. MCP: https://mcp-everything.ru/mcp