---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.kz/routing/doc/en/vrp/error-handling.md
  - https://yandex.kz/routing/doc/kk/vrp/error-handling.md
  - https://yandex.kz/routing/doc/ru/vrp/error-handling.md
  - href: kk/vrp/error-handling.md
    type: text/markdown
    title: Markdown version
  - href: llms.txt
    type: text/markdown
    title: llms.txt
title: Яндекс Маршрутизация — интеграция с API — обработка ошибок
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.kz/routing/doc/kk/llms.txt


# Обработка ошибок

VRP API Яндекс&nbsp;Маршрутизации возвращает JSON в ответ на все запросы и использует стандартные коды ответов.

В случае редких проблем на серверах Яндекса API ответит сообщением с кодом 50х.

Все ошибки, связанные с валидацией данных или бизнес-логикой, описаны в [теле ответа](https://yandex.kz/routing/doc/kk/vrp/get-result.md) с кодом 200 и должны обрабатываться пользователем.


{% note info %}

Ниже перечислены не все возможные ошибки, а отдельные примеры.

{% endnote %}

## Ошибки сервиса {#service-unavailable}

В редких ситуациях могут возникнуть проблемы со связью между вашим приложением и серверами Яндекса, а также кратковременные перебои в работе серверов Яндекса.

На случай проблем со связью рекомендуется настроить время ожидания для запросов и ответов в вашем клиенте. 10 секунд должно быть достаточно для сглаживания большей части возможных проблем.

При возникновении проблем на стороне серверов Яндекса вы можете получить ошибку HTTP 5xx. Обычно проблемы на стороне сервера исправляются автоматически через несколько секунд. Чтобы ваше приложение работало, но не создавало повышенной нагрузки на серверы, мы рекомендуем отправлять повторные запросы с растущей задержкой, по принципу [экспоненциального затухания](https://en.wikipedia.org/wiki/Exponential_backoff) со случайной добавкой.

Общее правило:

`delay = initial_delay * backoff_multiplier <sup >retry-1</sup> * (1 + jitter * rand(1))`, где:

- `initial_delay` — начальный интервал повтора;
- `backoff_multiplier` — коэффициент экспоненциального затухания;
- `retry` — номер попытки;
- `jitter` — коэффициент при случайной добавке (рекомендуем значение от 0.1 до 0.3);
- `rand(1)` — равномерно распределенная случайная величина в диапазоне от 0 до 1.

Например, для `initial_delay` = `1s`, `backoff_multiplier` = 2, `jitter` = 0.1 получаем:

```bash
retry 1: 1s + 0.1 * rand(1)
retry 2: 2s + 0.1 * 2 * rand(1)
retry 3: 4s + 0.1 * 4 * rand(1)
retry 4: 8s + 0.1 * 8 * rand(1)
...
```

Когда интервал между запросами составит порядка 30–60 секунд, его можно больше не увеличивать. Количество повторных запросов не ограничено.


## Ошибки, связанные со схемой запроса {#errors-schema}

### Не указан обязательный параметр {#required-object}

Возможные ошибки:

#|
||**Текст ошибки** | **Рекомендации** ||
||Error parsing JSON: either 'vehicle' or 'vehicles' is required, see request schema. | Убедитесь, что в запросе определен обязательный параметр `vehicle`/`vehicles`.||
||The required option 'time_zone' is not specified in the task. | Убедитесь, что в запросе определено обязательное поле `time_zone`.||
||{subject}: maximal_stops={count}, but no penalties for extra stops. Please fill shift→penalty→stop_excess. | Убедитесь, что в запросе определены обязательные штрафы `penalty.stop_excess.per_stop` или `penalty.stop_excess.fixed` в дополнение к числу максимальных остановок.||
||{subject}: minimal_stops={count}, but no penalties for missing stops. Please fill shift→penalty→stop_lack. | Убедитесь, что в запросе определены обязательные штрафы `penalty.stop_lack.per_stop` или `penalty.stop_lack.fixed` в дополнение к числу минимальных остановок.||
|#

### Параметр принимает недопустимое значение {#invalid-format}

Возможные ошибки:

#|
||**Текст ошибки** | **Рекомендации** ||
||Invalid option 'time_zone' provided: '{timezone}'. | Убедитесь, что параметр `options.time_zone` принимает значение от -12 до 14 или является строкой, например, `Europe/Moscow`.||
||Invalid date format: {date}. | Убедитесь, что значение параметра `options.date` указано в формате `YYYY-MM-DD`.||
||{subject}: negative sequence_order value. | Убедитесь, что для всех заказов параметр `location.sequence_order` указан в виде целого неотрицательного числа.||
||{subject}: negative shipment volume. | Убедитесь, что для всех заказов значения параметров `shipment_size.volume_cbm`, `shipment_size.volume.width_m`, `shipment_size.volume.depth_m`, `shipment_size.volume.height_m` указаны в виде неотрицательного числа.||
||All vehicle IDs should be either integers or strings. Found {id1} and {id2}. | Убедитесь, что все значения `vehicles.id` имеют одинаковый тип данных: целое число или строка.||
|#


## Ошибки, связанные с логикой запроса {#errors-logic}

### Используется неуникальный идентификатор {#not-unique-id}

Возможные ошибки:

#|
||**Текст ошибки** | **Рекомендации** ||
||Balance_key='{key}' was used more than once in 'balanced_groups' option. | Убедитесь, что в запросе все идентификаторы групп `vehicles.shifts.balanced_group_id` уникальны.||
||At least two locations or depots have the same id: {id}. | Убедитесь, что в запросе идентификаторы `id` для складов и заказов не совпадают.||
||At least two locations have the same id: {location}. | Убедитесь, что все идентификаторы `id` в массиве `locations` уникальны.||
||At least two vehicles have the same ID {id}. | Убедитесь, что все идентификаторы `id` в массиве `vehicles` уникальны.||
|#

### Указан идентификатор, который не определен {#not-defined-id}

Возможные ошибки:

#|
||**Текст ошибки** | **Рекомендации** ||
||balanced route group id '{group_id}' is not defined in 'balanced_groups' option. | Убедитесь, что все идентификаторы групп, указанные в полях `vehicles.shifts.balanced_group_id`, определены в `options.balanced_groups`.||
||{subject}: cannot find shift id {shift_id}, specified in '{field}'. | Убедитесь, что в запросе описаны все идентификаторы смен `vehicle.shift_id`, на которые есть ссылки.||
||Cannot find location with id={id}. | Убедитесь, что в запросе описаны все идентификаторы заказов `vehicle.shift_id`, на которые есть ссылки.||
|#

### Указанные параметры несовместимы {#incompatible-params}

Возможные ошибки:

#|
||**Текст ошибки** | **Рекомендации** ||
||Options 'depot' or 'depots' are mutually exclusive, only one of them should be specified. | Объекты `depot` и `depots` — взаимоисключающие. Убедитесь, что в запросе используется только один из них.||
||{subject}: fields 'hard_window' and 'hard_time_window' are mutually exclusive, only one of them should be specified. | Поля `hard_window` и `hard_time_window` — взаимоисключающие. Убедитесь, что в запросе указано только одно из них.||
||{subject}: fields 'time_window' and 'time_windows' are mutually exclusive, only one of them should be specified. | Поля `time_window` и `time_windows` — взаимоисключающие. Убедитесь, что в запросе указано только одно из них.||
|#

### Указанные значения параметров несовместимы {#incompatible-values}

Возможные ошибки:

#|
||**Текст ошибки** | **Рекомендации** ||
||{subject}: 'delivery_deadline' field defined, but only pickups can have it.

{subject}: delivery_to_any field defined, but only pickups can have it.

{subject}: delivery_to field defined, but only pickups can have it. | Убедитесь, что параметры `delivery_deadline`, `delivery_to_any`, `delivery_to` указаны только для заказов типа `pickup`.||
||Location id {location} is used in more than one location group. Each location can be referenced by only one location group. | Убедитесь, что каждый заказ входит только в одну группу `options.location_groups`.||
||Time window starts before date from 'options'. | Убедитесь, что временные окна в запросе начинаются не раньше даты, указанной в `options`.||
||{subject}: hard time window {window1} doesn't contain {window2}. | Убедитесь, что все мягкие временные окна находятся в пределах жестких временных окон.||
|#

## Ошибки, связанные с решением {#errors-drops}

Примеры ошибок, связанных с решением, и рекомендации по их устранению см. в разделе [Возможные причины нераспределенных заказов](https://yandex.kz/routing/doc/kk/vrp/undelivered-orders.md).


<!-- source: kk/vrp/_includes/feedback.md -->
<a href="feedback">
  <span class="button">Написать в службу поддержки</span>
</a>




<!-- source: kk/_includes/neuroexpert.md -->



<!-- endsource: kk/_includes/neuroexpert.md -->
<!-- endsource: kk/vrp/_includes/feedback.md -->
