API Яндекс Go для бизнеса: Заказать такси сотруднику

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

Заказ корпоративного такси из своей системы: офис-менеджер или бот вызывает машину на нужный адрес.

  1. Получи OAuth-токен в Кабинете Корпоративного Клиента («Профиль компании» → «Получить токен») и передавай его в заголовке Authorization: Bearer <токен>. Если по токену доступно несколько кабинетов, добавляй X-YaTaxi-Selected-Corp-Client-Id — список доступных даёт GET /2.0/auth/list.
  2. Узнай стоимость: POST /2.0/orders/routestats с route — точками [долгота, широта] (не меньше двух) — и user_id сотрудника. В ответе service_levels с ценой и временем подачи по тарифам и offer для заказа.
  3. Создай заказ: POST /2.0/orders/create с user_id, route (geopoint и fullname — адрес), class (тариф), offer и заголовком X-Idempotency-Token — новым UUID на каждый заказ. Для предзаказа — due_date.
  4. Ответ 406 значит, что оффер устарел: заново вызови routestats. При 500 заказ мог создаться — повтори запрос с тем же X-Idempotency-Token, дубля не будет.
  5. Следи за машиной: GET /2.0/orders/progress с order_id — status, time_left_raw (секунд до прибытия) и vehicle.location. Учти: в vehicle.location порядок [широта, долгота], обратный route.
import uuid, requests

API = "https://b2b-api.go.yandex.ru/integration/2.0"
H = {"Authorization": "Bearer <OAuth-токен>", "X-YaTaxi-Selected-Corp-Client-Id": "<client_id>"}
route = [[37.5880, 55.7340], [37.6173, 55.7558]]          # [долгота, широта]

est = requests.post(f"{API}/orders/routestats", headers=H,
                    json={"route": route, "user_id": "<user_id>"}).json()
level = next(l for l in est["service_levels"] if l["class"] == "business")

order = requests.post(f"{API}/orders/create",
                      headers={**H, "X-Idempotency-Token": str(uuid.uuid4())},
                      json={"user_id": "<user_id>", "class": "business", "offer": est["offer"],
                            "route": [{"geopoint": route[0], "fullname": "Москва, ул. Льва Толстого, 16"},
                                      {"geopoint": route[1], "fullname": "Москва, Красная площадь"}],
                            "comment": "Подъезд со двора"}).json()

progress = requests.get(f"{API}/orders/progress", headers=H,
                        params={"order_id": order["order_id"]}).json()
print(progress["status"], progress.get("time_left_raw"))

Базовые URL

Авторизация

Тип: OAuth 2.0

OAuth-токен получают в Кабинете Корпоративного Клиента: «Профиль компании» → «Получить токен» → вход на oauth.yandex.ru. Токен действует ограниченное время, затем его нужно получить заново.

Если по токену доступно несколько кабинетов, во всех запросах передаётся заголовок X-YaTaxi-Selected-Corp-Client-Id с ID клиента из профиля компании.

Authorization: Bearer <OAuth-токен>

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

GET /2.0/auth/list — Клиенты, доступные по токену

В ответе clients[]: client_id, name, role.

POST /2.0/orders/routestats — Стоимость и оффер на поездку

Если передан user_id и в route не меньше двух точек, возвращается offer для создания заказа. В ответе: offer, service_levels (class, price, is_fixed_price, estimated_waiting), toll_roads.

Параметр Где Тип Обяз. Описание
Accept-Language header string нет Язык: ru, en и др.
route body array да Точки маршрута [[долгота, широта], ...]
user_id body string нет ID сотрудника
requirements body object нет Требования к поездке (доступные — в GET /2.0/zoneinfo)
use_toll_roads body boolean нет Разрешить платные дороги, по умолчанию false

POST /2.0/orders/create — Создание заказа такси

Ответ 200 — order_id; 406 — оффер неактуален (code, message). При ответе 500 заказ мог быть создан — повторите запрос с тем же токеном идемпотентности.

Параметр Где Тип Обяз. Описание
X-Idempotency-Token header string да UUID; один токен — один заказ
user_id body string да ID сотрудника
route body array да Точки маршрута: geopoint ([долгота, широта]), fullname (адрес)
class body string да Тариф
offer body string нет ID оффера из routestats
due_date body string нет Время подачи YYYY-MM-DDThh:mm:ss±hh:mm
requirements body object нет Требования к заказу
cost_center_values body array нет Значения полей центров затрат: id, title, value
comment body string нет Комментарий водителю
order_tag body string нет Тег заказа

GET /2.0/orders/progress — Отслеживание заказа

В ответе: status, time_left_raw (секунд до прибытия или окончания), vehicle.location.

Параметр Где Тип Обяз. Описание
order_id query string да ID заказа

Нюансы

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


Если этого недостаточно — официальная документация: https://yandex.ru/dev/taxi/doc/business-api/concepts/about-docpage/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-go-business.md