Яндекс Еда Vendor API: Отдавать меню и стоп-лист

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

Меню и недоступные позиции в Яндекс Еде совпадают с кассой — без ручного редактирования в кабинете.

  1. Реализуй список заведений: GET /restaurants — ID ресторанов в твоей системе.
  2. Реализуй меню: GET /menu/{restaurantId}/composition с моделью application/vnd.eats.menu.composition.v2+json. Позиции с ошибками — слишком длинные названия, цена 0.00 — Яндекс Еда может пропустить, поэтому валидируй меню до отдачи.
  3. Реализуй стоп-лист: GET /menu/{restaurantId}/availability — позиции, недоступные прямо сейчас (application/vnd.eats.menu.availability.v2+json).
  4. Чтобы изменения применились сразу, а не при следующем плановом опросе, сам инициируй обновление. Получи токен на стороне Яндекс Еды: POST /oauth2/token на dc-partner.eda.yandex.net с client_id и client_secret. Затем вызови POST /menu/import/initiation с restaurantId и operationType = menu (меню) или menu_stop_list (стоп-лист), передав заголовки Authorization и Partner-Name.
EDA=https://dc-partner.eda.yandex.net

PUSH_TOKEN=$(curl -s -X POST "$EDA/oauth2/token" \
  -d client_id=<client_id> -d client_secret=<client_secret> | jq -r .access_token)

# Позиция закончилась на кухне — просим Яндекс Еду перечитать стоп-лист
curl -s -X POST "$EDA/menu/import/initiation" \
  -H "Authorization: Bearer $PUSH_TOKEN" -H 'Partner-Name: <partner_name>' \
  -H 'Content-Type: application/json' \
  -d '{"restaurantId": "msk-tverskaya-7", "operationType": "menu_stop_list"}'

Базовые URL

Авторизация

Тип: OAuth 2.0

На своей стороне партнёр реализует OAuth 2.0 client_credentials: метод POST /security/oauth/token выдаёт токен по client_id, client_secret, grant_type и scope (read, write). Яндекс Еда передаёт токен в каждом запросе как Authorization: Bearer token.

Для push-методов партнёр получает токен на стороне Яндекс Еды (POST /oauth2/token на dc-partner.eda.yandex.net) и передаёт заголовки Authorization и Partner-Name.

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

GET /restaurants — Список заведений партнёра (реализует партнёр)

Возвращает заведения партнёра.

GET /menu/{restaurantId}/composition — Актуальное меню ресторана (реализует партнёр)

Актуальная модель ответа — application/vnd.eats.menu.composition.v2+json. Позиции с несоответствиями (слишком длинная строка, цена 0.00) могут быть проигнорированы.

Параметр Где Тип Обяз. Описание
restaurantId path string да ID ресторана в системе партнёра

GET /menu/{restaurantId}/availability — Недоступные позиции меню (реализует партнёр)

Стоп-лист на текущий момент; модель ответа — application/vnd.eats.menu.availability.v2+json.

Параметр Где Тип Обяз. Описание
restaurantId path string да ID ресторана в системе партнёра

POST /oauth2/token — Токен для push-методов

Хост dc-partner.eda.yandex.net, тело application/x-www-form-urlencoded.

Параметр Где Тип Обяз. Описание
client_id body string да Идентификатор клиента
client_secret body string да Секретный ключ

POST /menu/import/initiation — Запуск обновления меню и стоп-листов

Хост dc-partner.eda.yandex.net.

Параметр Где Тип Обяз. Описание
Authorization header string нет Токен, полученный на стороне Яндекс Еды
Partner-Name header string нет Имя партнёра
restaurantId body string да ID ресторана в системе партнёра
operationType body string нет menu, menu_stop_list или promo

Нюансы

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


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