---
slug: "yandex-go-business"
name: "API Яндекс Go для бизнеса"
vendor: "Яндекс"
industry: "travel"
docsUrl: "https://yandex.ru/dev/taxi/doc/business-api/concepts/about-docpage/"
version: 2
updatedAt: "2026-10-24"
---

# API Яндекс Go для бизнеса

Отрасль: Путешествия и транспорт. Актуально на 2026-10-24.

API для корпоративных клиентов Яндекс Go: управление сотрудниками, центрами затрат, лимитами, департаментами и районами, заказ корпоративного такси (оценка стоимости, создание, отслеживание, отмена), список заказов и отчёты, промокоды, а также данные по другим сервисам (Еда, Заправки, командировки). Версия API 2.0. Вопросы по интеграции — corptaxi-api@yandex-team.ru.

## Сценарии

### Заказать такси сотруднику

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

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.

```python
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"))
```

### Завести нового сотрудника

Онбординг: новый сотрудник из HR-системы сразу получает доступ к корпоративному такси с нужным центром затрат и лимитом.

1. Возьми ID центра затрат: GET /2.0/cost_centers/list (limit, offset).
2. Создай сотрудника: POST /2.0/users с fullname, phone в международном формате (+79001234567), is_active = true, cost_centers_id и nickname — ID сотрудника в твоей системе, чтобы потом сопоставлять записи.
3. Лимиты передай в limits: limit_id ранее созданного лимита и service (taxi, eats2, drive и т. д.).
4. Проверить и сверить список можно через GET /2.0/users: страницы листаются по next_cursor, total_amount — общее число сотрудников.

```bash
curl -X POST https://b2b-api.go.yandex.ru/integration/2.0/users \
  -H "Authorization: Bearer $YAGO_TOKEN" -H 'Content-Type: application/json' \
  -d '{
        "fullname": "Иван Петров",
        "phone": "+79001234567",
        "is_active": true,
        "email": "i.petrov@example.ru",
        "nickname": "EMP-1042",
        "cost_centers_id": "<cost_center_id>",
        "limits": [{"limit_id": "<limit_id>", "service": "taxi"}]
      }'
```

### Выгрузить поездки за месяц

Сверка расходов: все поездки за период — в бухгалтерию или отчёт по подразделениям.

1. Запроси заказы за период: GET /2.0/orders/list с since_datetime и till_datetime (формат YYYY-MM-DDThh:mm:ss±hh:mm), sorting_field = finished_date, limit и offset. Для одного сотрудника — user_id.
2. Листай страницы, пока offset не превысит total_amount из ответа.
3. Стоимость с НДС, водителя и маршрут по конкретной поездке отдаёт GET /2.0/orders/info с order_id — поля cost, cost_with_vat, performer, source, destination.

```python
import requests

API = "https://b2b-api.go.yandex.ru/integration/2.0"
H = {"Authorization": "Bearer <OAuth-токен>"}
params = {"since_datetime": "2026-10-01T00:00:00+03:00", "till_datetime": "2026-10-31T23:59:59+03:00",
          "sorting_field": "finished_date", "sorting_direction": 1, "limit": 100, "offset": 0}
orders = []
while True:
    page = requests.get(f"{API}/orders/list", headers=H, params=params).json()
    orders += page["items"]
    params["offset"] += params["limit"]
    if params["offset"] >= page["total_amount"]:
        break
print(len(orders))
```

### Отменить заказ такси

Сотрудник передумал ехать — отменяем заказ по правилам, которые сейчас действуют.

1. Узнай допустимые правила отмены: GET /2.0/orders/info с order_id — поле cancel_rules (free, paid или minimal).
2. Отмени: POST /2.0/orders/cancel с order_id в строке запроса и state из cancel_rules в теле. Ответ — {"status": "cancelled"}.
3. Если доступна только платная отмена, предупреди сотрудника до вызова: деньги спишутся с корпоративного счёта.

```bash
curl -X POST "https://b2b-api.go.yandex.ru/integration/2.0/orders/cancel?order_id=<order_id>" \
  -H "Authorization: Bearer $YAGO_TOKEN" -H 'Content-Type: application/json' \
  -d '{"state": "free"}'
```

## Базовые URL

- Боевой: `https://b2b-api.go.yandex.ru/integration`

## Авторизация

Тип: 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/users — Создание сотрудника

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `X-YaTaxi-Selected-Corp-Client-Id` | header | string | нет | ID клиента (обязателен при нескольких клиентах) |
| `fullname` | body | string | да | Полное имя (может быть пустой строкой) |
| `phone` | body | string | да | Телефон в международном формате, например +79001234567 |
| `is_active` | body | boolean | да | Активен ли сотрудник |
| `email` | body | string | нет | Email |
| `cost_centers_id` | body | string | нет | ID центра затрат |
| `nickname` | body | string | нет | Краткое имя (ID во внешней системе) |
| `department_id` | body | string | нет | ID департамента |
| `limits` | body | array | нет | Месячные лимиты по сервисам |
| `limits[].limit_id` | body | string | да | ID ранее созданного лимита |
| `limits[].service` | body | string | да | taxi, eats2, grocery, drive, tanker, cargo, travel, scooters |
| `documents` | body | array | нет | Документы сотрудника (document_type обязателен) |

### GET /2.0/users — Список сотрудников

Сортировка по времени создания, по возрастанию. В ответе: `items`, `cursor`, `next_cursor`, `limit`, `total_amount`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `limit` | query | integer | нет | Число записей, по умолчанию 100 |
| `cursor` | query | string | нет | next_cursor из предыдущего ответа (для следующих страниц) |

### GET /2.0/cost_centers/list — Центры затрат

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `limit` | query | integer | нет | По умолчанию 100 |
| `offset` | query | integer | нет | Сколько записей пропустить |

### 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 заказа |

### GET /2.0/orders/info — Информация о заказе

В ответе: `id`, `user_id`, `class`, `status`, `due_date`, `finished_date`, `performer` (водитель и автомобиль), `source`, `destination`, `cancel_rules`, `cost`, `cost_with_vat`.

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

### POST /2.0/orders/cancel — Отмена заказа

Ответ: `{"status": "cancelled"}`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `order_id` | query | string | да | ID заказа |
| `state` | body | string | нет | Правило отмены из cancel_rules: free, paid, minimal |

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

```
POST http://b2b-api.go.yandex.ru/integration/2.0/orders/cancel?order_id=191...280
...
Authorization: Bearer <OAuth-token>
X-YaTaxi-Selected-Corp-Client-Id: <client-id>
 {
 "state": "free"
 }
```

### GET /2.0/orders/list — Список заказов клиента

В ответе: `items`, `limit`, `offset`, `total_amount`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `limit` | query | integer | нет | По умолчанию 100 |
| `offset` | query | integer | нет | Сколько записей пропустить |
| `user_id` | query | string | нет | Фильтр по сотруднику |
| `sorting_field` | query | string | нет | due_date (по умолчанию) или finished_date |
| `sorting_direction` | query | integer | нет | 1 — по возрастанию, -1 — по убыванию (по умолчанию) |
| `since_datetime` | query | string | нет | Начало периода YYYY-MM-DDThh:mm:ss±hh:mm |
| `till_datetime` | query | string | нет | Конец периода |

## Нюансы

- Порядок работы: получить токен → настроить центры затрат, роли и сотрудников → `routestats` → `orders/create` → `orders/progress`/`orders/info` → при необходимости `orders/cancel`.
- Координаты в `route` и `geopoint` — в порядке [долгота, широта]; в `vehicle.location` ответа — [широта, долгота] (см. примеры документации).
- Для отмены передайте `state` из `cancel_rules` метода `orders/info`.
- Также есть методы департаментов и их лимитов, районов (`geo_restrictions`), информации о зоне (`zoneinfo`), промокодов, автопарка, заказов Еды, операций Заправок и командировок.
- Для заказа доставки есть отдельный API доставки (cargo API).

## Ошибки

| Код | Описание |
|---|---|
| `400` | Неизвестный параметр или недопустимое значение |
| `401` | Неверный OAuth-токен |
| `403` | SELECT_CLIENT_HEADER_REQUIRED — не передан X-YaTaxi-Selected-Corp-Client-Id; SELECTED_CLIENT_ACCESS_DENIED — нет доступа к указанному клиенту |
| `404` | Заказ не найден |
| `406` | Оффер неактуален |
| `409` | Конфликт |
| `500` | Ошибка сервера (заказ мог быть создан) |

## Источники

- [API Яндекс Go для бизнеса](https://yandex.ru/dev/taxi/taxicorp/)
- [Введение](https://yandex.ru/dev/taxi/doc/business-api/concepts/about-docpage/)
- [Начало работы](https://taxi__business-api.docs-viewer.yandex.ru/ru/concepts/quickstart)
- [Запросы к сервису API 2.0](https://taxi__business-api.docs-viewer.yandex.ru/ru/concepts/request-index-api20)
- [Создание заказа](https://taxi__business-api.docs-viewer.yandex.ru/ru/concepts/api20/order-create)
- [Стоимость поездки](https://taxi__business-api.docs-viewer.yandex.ru/ru/concepts/api20/routestats)
- [Отмена заказа](https://taxi__business-api.docs-viewer.yandex.ru/ru/concepts/api20/order-cancel)
- [Создание сотрудника](https://taxi__business-api.docs-viewer.yandex.ru/ru/concepts/api20/user-create)

---

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