Яндекс Доставка API (Доставка по России) API

Отрасль: Логистика и доставка. Актуально на 2026-10-24.

API логистической платформы Яндекс Доставки для доставки заказов в другой день по России: забор с вашего склада или самопривоз в точку отгрузки, доставка до двери или в ПВЗ и постаматы. Сценарий: рассчитать стоимость, получить варианты доставки (офферы), подтвердить оффер — заявка создана, затем отслеживать статус, печатать ярлыки и акты. Отдельный API есть для экспресс-доставки в течение дня — в этот файл он не вошёл.

Сценарии

Рассчитать стоимость доставки

Показать покупателю цену доставки Яндекса до двери или до пункта выдачи.

  1. Получи Bearer-токен в личном кабинете (раздел «Профиль») и ID своего склада отгрузки platform_station_id — его выдаёт менеджер. Для отладки есть тестовый контур https://b2b.taxi.tst.yandex.net с тестовым токеном и складом из документации.
  2. Посчитай стоимость: POST /api/b2b/platform/pricing-calculator с source.platform_station_id, destination (platform_station_id пункта выдачи или address для доставки до двери), tariff (time_interval — до двери, self_pickup — до ПВЗ), total_weight и places.
  3. Вес передавай в граммах, габариты dx, dy, dz — в сантиметрах. total_assessed_price — оценочная стоимость посылки.
  4. Это предварительная оценка: точную цену и сроки покажут офферы при создании заявки.
curl -X POST https://b2b-authproxy.taxi.yandex.net/api/b2b/platform/pricing-calculator \
  -H "Authorization: Bearer $YD_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
        "source": {"platform_station_id": "<ID склада отгрузки>"},
        "destination": {"address": "Санкт-Петербург, Большая Монетная улица, 1к1А"},
        "tariff": "time_interval",
        "total_weight": 1500,
        "total_assessed_price": 1500,
        "client_price": 0,
        "payment_method": "already_paid",
        "places": [{"physical_dims": {"weight_gross": 1500, "dx": 20, "dy": 15, "dz": 10}}]
      }'

Показать пункты выдачи и постаматы в городе

Список ПВЗ Яндекса для выбора при оформлении заказа.

  1. Определи населённый пункт: POST /api/b2b/platform/location/detect с адресом или его фрагментом (например, названием города). В ответе — geo_id.
  2. Запроси точки: POST /api/b2b/platform/pickup-points/list с geo_id и type = pickup_point. Для поиска на карте вместо geo_id передай диапазоны latitude и longitude видимой области.
  3. Если нужны примерка или частичный выкуп, отфильтруй по pickup_services. С пустым телом метод вернёт вообще все доступные точки.
  4. Сохрани ID выбранной точки — он пойдёт в destination.platform_station при создании заявки.
curl -X POST https://b2b-authproxy.taxi.yandex.net/api/b2b/platform/location/detect \
  -H "Authorization: Bearer $YD_TOKEN" -H 'Content-Type: application/json' \
  -d '{"location": "Казань"}'

curl -X POST https://b2b-authproxy.taxi.yandex.net/api/b2b/platform/pickup-points/list \
  -H "Authorization: Bearer $YD_TOKEN" -H 'Content-Type: application/json' \
  -d '{"geo_id": <geo_id>, "type": "pickup_point"}'

Создать заказ: выбрать вариант доставки и подтвердить

Основной поток: получить варианты доставки (офферы) для заказа и забронировать подходящий.

  1. Запроси офферы: POST /api/b2b/platform/offers/create с info.operator_request_id (уникальный номер заказа у тебя), source.platform_station.platform_id, destination (type = platform_station и ID пункта — или custom_location с адресом для доставки до двери), items, places, billing_info, recipient_info и last_mile_policy.
  2. Цены товаров передавай в копейках, вес — в граммах, габариты — в сантиметрах. Одинаковые товары — одной позицией с count, иначе запишется количество 1.
  3. В ответе — офферы с интервалом доставки, ценой и expires_at. Выбери подходящий и успей подтвердить до истечения срока.
  4. Подтверди: POST /api/b2b/platform/offers/confirm с offer_id. В ответе request_id созданной заявки — сохрани его в заказе.
  5. Если выбирать не нужно, заявку на ближайшее время можно создать одним вызовом: POST /api/b2b/platform/request/create.
curl -X POST https://b2b-authproxy.taxi.yandex.net/api/b2b/platform/offers/confirm \
  -H "Authorization: Bearer $YD_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"offer_id": "c1b139dbd76b4ee3b39b19180b516119"}'
# → {"request_id": "77241d8009bb46d0bff5c65a73077bcd-udp"}

Отследить заказ и при необходимости отменить

Показать покупателю статус доставки и отменить заявку, если заказ отменён.

  1. Узнай статус: GET /api/b2b/platform/request/info с request_id (или request_code — твоим номером заказа). История статусов — /api/b2b/platform/request/history, актуальная дата доставки — /api/b2b/platform/request/actual_info.
  2. Для синхронизации многих заказов используй выборку за период — /api/b2b/platform/requests/info, а не опрос по одному.
  3. Отмени заявку: POST /api/b2b/platform/request/cancel с request_id. Курьерскую заявку можно отменить до статуса DELIVERY_TRANSPORTATION_RECIPIENT. В ответе status, reason и description — проверь, что отмена прошла.
curl -G https://b2b-authproxy.taxi.yandex.net/api/b2b/platform/request/info \
  -H "Authorization: Bearer $YD_TOKEN" \
  -d request_id=77241d8009bb46d0bff5c65a73077bcd-udp

curl -X POST https://b2b-authproxy.taxi.yandex.net/api/b2b/platform/request/cancel \
  -H "Authorization: Bearer $YD_TOKEN" -H 'Content-Type: application/json' \
  -d '{"request_id": "77241d8009bb46d0bff5c65a73077bcd-udp"}'

Напечатать ярлыки на посылки

Подготовить отгрузку: ярлыки на каждое место и акт приёма-передачи для курьера.

  1. Получи ярлыки: POST /api/b2b/platform/request/generate-labels со списком request_ids. generate_type = one печатает по ярлыку на лист, many — несколько на лист; label_size_mm — размер под твой принтер (100x150 для термопринтера, 210x297 — лист A4).
  2. Наклей ярлык на каждое грузоместо.
  3. Для передачи курьеру сформируй акт методом /api/b2b/platform/request/get-handover-act.
curl -X POST https://b2b-authproxy.taxi.yandex.net/api/b2b/platform/request/generate-labels \
  -H "Authorization: Bearer $YD_TOKEN" -H 'Content-Type: application/json' \
  -o labels.pdf \
  -d '{"request_ids": ["77241d8009bb46d0bff5c65a73077bcd-udp"], "generate_type": "one", "label_size_mm": "100x150"}'

Базовые URL

Авторизация

Тип: Bearer-токен

Bearer-токен в заголовке Authorization: Bearer <token>. Для продакшена токен берут в личном кабинете в разделе «Профиль»; ID склада отгрузки (platform_station_id) выдаёт коммерческий менеджер.

Для тестового контура в документации даны:

Для корректной работы нужен TLS 1.2 и выше с шифрами по стандарту PCI DSS v4.

Методы

POST /api/b2b/platform/pricing-calculator — Предварительная оценка стоимости

Параметр Где Тип Обяз. Описание
is_oversized query boolean нет Флаг КГТ
source body object нет Точка отправления: platform_station_id
destination body object нет Точка получения: platform_station_id или address (одно из двух)
tariff body string нет time_interval (до двери в интервал) или self_pickup (до ПВЗ)
total_weight body integer нет Суммарный вес, граммы
total_assessed_price body integer нет Оценочная стоимость
client_price body integer нет Стоимость для клиента
payment_method body string нет Способ оплаты, например already_paid
places body array нет Места: physical_dims.weight_gross, dx, dy, dz

Пример запроса:

{
  "source": {
    "platform_station_id": "fbed3aa1-2cc6-4370-ab4d-59c5cc9bb924"
  },
  "destination": {
    "platform_station_id": "e1139f6d-e34f-47a9-a55f-31f032a861a6",
    "address": "Санкт-Петербург, Большая Монетная улица, 1к1А"
  },
  "tariff": "time_interval",
  "total_weight": 0,
  "total_assessed_price": 0,
  "client_price": 0,
  "payment_method": "already_paid",
  "places": [
    {
      "physical_dims": {
        "weight_gross": 100,
        "dx": 10,
        "dy": 10,
        "dz": 10
      }
    }
  ]
}

POST /api/b2b/platform/location/detect — Определение geo_id по адресу

Возвращает идентификатор населённого пункта (geo_id) по адресу или его фрагменту.

POST /api/b2b/platform/pickup-points/list — Точки самопривоза и ПВЗ

С пустым телом возвращает все доступные точки самопривоза, ПВЗ и постаматы.

Параметр Где Тип Обяз. Описание
geo_id body integer нет Населённый пункт
type body string нет Тип точки, например pickup_point
available_for_dropoff body boolean нет Возможность отгрузки в точку; для warehouse обязательно true
is_yandex_branded body boolean нет Только брендированные точки
is_not_branded_partner_station body boolean нет Добавить партнёрские ПВЗ
payment_method body string нет Способ оплаты
latitude body object нет Диапазон широт from/to
longitude body object нет Диапазон долгот from/to
pickup_services body object нет Услуги: примерка, частичный выкуп и др.

POST /api/b2b/platform/offers/create — Создание заявки (получение офферов)

Возвращает варианты доставки (офферы) для заказа. Одинаковые товары передавайте одной позицией с count, иначе будет записано количество 1.

Параметр Где Тип Обяз. Описание
send_unix query boolean нет Формат интервалов: true — unix, false — UTC
info.operator_request_id body string нет ID заказа у отправителя, уникальный
info.comment body string нет Комментарий
info.merchant_id body string нет ID мерчанта (если есть зарегистрированные)
source.platform_station.platform_id body string нет Склад или точка отгрузки
source.interval_utc body object нет Интервал отгрузки from/to
destination.type body string нет platform_station (ПВЗ) или custom_location (до двери)
destination.platform_station body object нет ПВЗ получения
destination.custom_location body object нет Адрес: latitude, longitude, details (full_address, locality, street, house, room и др.)
destination.interval_utc body object нет Интервал доставки
items body array да Товары: count, name, article, billing_details, physical_dims, place_barcode
items[].billing_details.unit_price body integer нет Цена за единицу, копейки
items[].billing_details.assessed_unit_price body integer нет Оценочная цена за единицу, копейки
items[].billing_details.nds body integer нет НДС: 0, 5, 7, 10, 22; без НДС — -1
places body array да Грузоместа: physical_dims (weight_gross, dx, dy, dz), barcode
billing_info body object нет Оплата: payment_method, delivery_cost
recipient_info body object нет Данные получателя
last_mile_policy body string нет time_interval или self_pickup
forbid_unboxing body boolean нет Запрет вскрытия упаковки
particular_items_refuse body boolean нет Разрешён частичный выкуп

Пример ответа:

{
  "offers": [
    {
      "offer_id": "c1b139dbd76b4ee3b39b19180b516119",
      "expires_at": "2021-10-25T15:00:00.000000Z",
      "offer_details": {
        "delivery_interval": {
          "min": "2021-10-25T15:00:00.000000Z",
          "max": "2021-10-25T15:00:00.000000Z",
          "policy": "time_interval"
        },
        "pickup_interval": {},
        "pricing": "192.15 RUB",
        "pricing_commission_on_delivery_payment": "2.2%",
        "pricing_commission_on_delivery_payment_amount": "9.43 RUB",
        "pricing_total": "1400.96 RUB"
      }
    }
  ]
}

POST /api/b2b/platform/offers/confirm — Подтверждение заявки

Бронирует выбранный оффер и создаёт заявку.

В ответе — request_id созданной заявки, например 77241d8009bb46d0bff5c65a73077bcd-udp.

Параметр Где Тип Обяз. Описание
offer_id body string да ID оффера

Пример запроса:

{
  "offer_id": "c1b139dbd76b4ee3b39b19180b516119"
}

POST /api/b2b/platform/request/create — Создание заказа на ближайшее время

Создаёт заказ сразу на ближайшее доступное время, без шага выбора оффера.

GET /api/b2b/platform/request/info — Информация о заявке

История статусов — GET /api/b2b/platform/request/history, актуальная дата доставки — GET /api/b2b/platform/request/actual_info, заявки за период — POST /api/b2b/platform/requests/info.

Параметр Где Тип Обяз. Описание
request_id query string нет ID заявки в платформе
request_code query string нет Номер заказа в системе заказчика

POST /api/b2b/platform/request/cancel — Отмена заявки

Курьерскую заявку можно отменить до статуса DELIVERY_TRANSPORTATION_RECIPIENT.

В ответе: status (CREATED, SUCCESS и др.), reason, description.

Параметр Где Тип Обяз. Описание
request_id body string да ID заявки в платформе

POST /api/b2b/platform/request/generate-labels — Получение ярлыков

Акты приёма-передачи — POST /api/b2b/platform/request/get-handover-act.

Параметр Где Тип Обяз. Описание
request_ids body array да ID заказов
generate_type body string нет one (по одному на лист, по умолчанию) или many
label_size_mm body string нет 210x297 (по умолчанию), 100x150, 75x120, 58x60, 58x40
language body string нет Язык надписей, по умолчанию ru

Нюансы

Ошибки

Код Описание
400 Ошибка в данных пользователя, например bad_request с сообщением Missing required field 'offer_id'
403 Доступ запрещён
404 Не найдено
500 Внутренняя ошибка сервера

Источники


Если этого недостаточно — официальная документация: https://yandex.ru/support/delivery-profile/ru/api/other-day/ JSON: https://mcp-everything.ru/api/integrations/yandex-delivery. MCP: https://mcp-everything.ru/mcp