---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.kz/routing/doc/en/vrp/interaction-with-api.md
  - https://yandex.kz/routing/doc/kk/vrp/interaction-with-api.md
  - https://yandex.kz/routing/doc/ru/vrp/interaction-with-api.md
  - href: kk/vrp/interaction-with-api.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


# Работа через API с редактированием решения через интерфейс

Мы рекомендуем следующий сценарий работы:

1. Решение отправляется по API из системы-источника.

1. Бизнес-пользователь заходит в интерфейс [Яндекс&nbsp;Маршрутизации](https://yandex.ru/courier), затем [просматривает и/или редактирует решение](https://yandex.kz/routing/doc/kk/vrp/interface-result.md#editing-a-solution).

1. Если решение редактировалось, то пользователь [экспортирует полученное решение](https://yandex.kz/routing/doc/kk/vrp/solution-export.md) во внутреннюю систему Маршрутизации. Связь отредактированного решения с исходным будет сохранена автоматически. Для получения скорректированного решения в дальнейшем можно использовать запрос [/children](https://yandex.ru/routing/doc/ru/vrp/redoc/index.html#operation/getChildTasks) с ID оригинальной задачи. Если решение не редактировалось, то пользователь на своей стороне подтверждает, что его устраивает полученное решение.

1. Итоговое решение скачивается обычным образом через API.


{% note info %}

Итоговое решение после ручных корректировок повторно оптимизируется, поэтому с ним нужно работать так же, как и с остальными задачами для API построения оптимальных маршрутов, то есть дождаться завершения этой задачи.

{% endnote %}

## Дочерние задачи  {#child-tasks}

Запуски планирования маршрутов можно связывать друг с другом по `task_id`. В результате на родительскую задачу будет ссылаться одна или несколько дочерних. Это позволяет перейти к списку связанных задач по идентификатору родительского решения, чтобы продолжить работу с любой из них.

Дочерняя задача может иметь множество своих дочерних задач, то есть также являться родительской задачей.

Дочерними задачами могут быть отредактированные версии первоначального результата. Помимо изменений, которые логист делает по своим соображениям, в решение вносятся корректировки при [допланировании](https://yandex.kz/routing/doc/kk/vrp/additional-planning.md). Если новые запуски оптимизации выполнять со ссылкой на исходную задачу, актуализированные маршруты можно загружать в систему-источник по родительскому идентификатору.

Другой сценарий — сравнение разных решений одной задачи. Можно запросить список дочерних `task_id` по идентификатору родительского планирования, чтобы сопоставить показатели разных версий и выбрать предпочтительный вариант. Метрики решения доступны в поле `result.metrics` [ответа API](https://yandex.ru/routing/doc/ru/vrp/redoc/index.html#operation/getMVRPTaskResult).


### Как это работает  {#how-it-works}


{% note alert %}

Родительская и дочерняя задачи должны быть получены с одного и того же [API-ключа](https://yandex.kz/routing/doc/kk/vrp/authorization.md#api-key).

{% endnote %}


Связь устанавливается через query-параметр `parent_task_id`, в котором передается ID родительского решения при добавлении задачи маршрутизации. (Этот идентификатор возвращается сервисом после постановки родительской задачи.)

[Список дочерних задач](https://yandex.ru/routing/doc/ru/vrp/redoc/index.html#operation/getChildTasks) включает `task_id` связанных решений и времена их запуска `added_at`. Получив этот массив по `parent_task_id`, можно перейти к скачиванию результатов, с которыми вы хотите работать дальше.

**Пример**

Выполнено построение маршрутов в первом планировании:

[Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/a90e1b1b-d1bf0c56-b6c5cb8a-76955c8c) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/a90e1b1b-d1bf0c56-b6c5cb8a-76955c8c)

Результат был скорректирован логистом (один заказ перекинут на менее загруженного курьера). Сформировано новое решение:

[Запрос API (JSON)](https://courier.yandex.ru/vrs/api/v1/log/request/bd593556-342668cc-db3bcdfe-c98d112c) ⋅ [Ответ API](https://courier.yandex.ru/vrs/api/v1/result/bd593556-342668cc-db3bcdfe-c98d112c)

При отправке запроса с отредактированным решением в query-параметре `parent_task_id` был указан идентификатор исходного планирования, чтобы вторая задача стала дочерней по отношению к первой.

В [списке дочерних задач](https://yandex.ru/routing/doc/ru/vrp/redoc/index.html#operation/getChildTasks) содержится информация об отредактированном решении:

```bash
[
   {
      "task_id": "bd593556-342668cc-db3bcdfe-c98d112c",
      "added_at": 1632906716.03281
   }
]
```

<!-- 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 -->
