Достависта Business API API

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

API срочной курьерской доставки Достависта для бизнеса: расчёт стоимости, создание, изменение и отмена заказов, список заказов, данные и местоположение курьера, черновики доставок и построение маршрутов, детализация стоимости. Об изменениях в заказах и доставках сервис сообщает callback-уведомлениями. Интеграцию сначала отлаживают на тестовом стенде, затем открывают доступ к рабочему через api@dostavista.ru.

Сценарии

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

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

  1. Возьми токен в личном кабинете и передавай его в заголовке X-DV-Auth-Token. Отлаживай интеграцию на тестовом стенде https://robotapitest.dostavista.ru/api/business/1.5, доступ к рабочему открывают через api@dostavista.ru.
  2. Посчитай: POST /calculate-order с теми же полями, что и для создания заказа: matter, points (адрес забора и адрес доставки), total_weight_kg, vehicle_type_id. Обязательных полей нет — но чем больше данных, тем точнее цена; без параметров вернётся минимальная стоимость.
  3. Успешный ответ — is_successful: true. При ошибке — HTTP 400 и список errors; при invalid_parameters подробности в parameter_errors той же структуры, что и запрос.
curl -X POST https://robot.dostavista.ru/api/business/1.5/calculate-order \
  -H 'X-DV-Auth-Token: <токен>' \
  -H 'Content-Type: application/json' \
  -d '{
        "matter": "Документы",
        "total_weight_kg": 1,
        "points": [
          {"address": "Москва, ул. Покровка, 11"},
          {"address": "Москва, ул. Солянка, 4"}
        ]
      }'

Создать заказ на курьерскую доставку

Вызвать курьера: забрать заказ со склада и доставить покупателю, с оплатой при получении или без.

  1. Создай заказ: POST /create-order с matter (что везём) и points — первая точка адрес забора, следующие — адреса доставки. Для каждой точки нужны address и contact_person.phone.
  2. В точке доставки укажи client_order_id (номер заказа в магазине), желаемое время прибытия required_start_datetime и required_finish_datetime, а если курьер берёт деньги — taking_amount. Даты — в ISO 8601 с часовым поясом.
  3. Тип транспорта задаёт vehicle_type_id (по умолчанию 6 — пеший курьер). Чтобы покупатель получил SMS со временем и телефоном курьера, включи is_contact_person_notification_enabled.
  4. В ответе — order с order_id и status. Сохрани order_id: по нему отслеживают и отменяют заказ.
  5. Ошибка order_is_duplicate значит, что такой заказ недавно уже создан, insufficient_balance — что не хватает денег на балансе.
curl -X POST https://robot.dostavista.ru/api/business/1.5/create-order \
  -H 'X-DV-Auth-Token: <токен>' \
  -H 'Content-Type: application/json' \
  -d '{
        "matter": "Цветы",
        "total_weight_kg": 2,
        "is_contact_person_notification_enabled": true,
        "points": [
          {"address": "Москва, ул. Покровка, 11", "contact_person": {"phone": "79030000001", "name": "Склад"}},
          {
            "address": "Москва, ул. Солянка, 4",
            "contact_person": {"phone": "79030000002", "name": "Анна"},
            "client_order_id": "1042",
            "required_start_datetime": "2026-10-25T14:00:00+03:00",
            "required_finish_datetime": "2026-10-25T16:00:00+03:00",
            "taking_amount": 0
          }
        ]
      }'

Следить за заказом и курьером

Обновлять статус заказа у себя и показывать покупателю, где курьер.

  1. Укажи в личном кабинете адрес для callback-уведомлений. Достависта пришлёт POST с JSON при создании и изменении заказа (order_created, order_changed), а также о доставках и местоположении курьера.
  2. Проверяй подпись каждого уведомления: заголовок X-DV-Signature — HMAC-SHA256 от тела запроса с ключом Callback Secret Key из кабинета.
  3. Для сверки запрашивай список: GET /orders с order_id или фильтром по status и датам (до 50 заказов за запрос, даты в строке запроса url-кодируй: + → %2B).
  4. Данные и местоположение назначенного курьера — GET /courier с order_id.
  5. Лимит — 100 запросов в минуту и не больше 5 000 в сутки, поэтому опирайся на уведомления, а не на частый опрос.
import hashlib, hmac

def is_valid(body: bytes, signature: str, callback_secret: str) -> bool:
    expected = hmac.new(callback_secret.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature)

# В обработчике: if not is_valid(request.body, request.headers["X-DV-Signature"], SECRET): вернуть 403

Отменить или изменить заказ

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

  1. Изменить параметры созданного заказа можно методом POST /edit-order. Если менять уже нельзя, придёт ошибка order_cannot_be_edited.
  2. Отменить заказ: POST /cancel-order с order_id. Отмена возможна в статусах new, available, active и delayed.
  3. Если курьер уже посетил хотя бы одну точку, отменить нельзя — придёт order_cannot_be_canceled; в этом случае свяжись с поддержкой.
  4. Проверь итог: GET /orders с order_id — статус должен смениться на отменённый.
curl -X POST https://robot.dostavista.ru/api/business/1.5/cancel-order \
  -H 'X-DV-Auth-Token: <токен>' \
  -H 'Content-Type: application/json' \
  -d '{"order_id": 123456}'

Базовые URL

Авторизация

Тип: API-ключ

Секретный токен из личного кабинета передаётся в заголовке X-DV-Auth-Token в каждом запросе. Используются только методы GET (параметры в строке запроса) и POST (JSON в UTF-8), только по HTTPS.

Ответ:

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' 'https://robotapitest.dostavista.ru/api/business/1.5'

Методы

POST /calculate-order — Расчёт стоимости доставки

Точная стоимость перед созданием заказа; чем больше параметров, тем точнее. Без параметров возвращает минимальную стоимость. Принимает те же параметры, что create-order, но без обязательных.

POST /create-order — Создание заказа

В ответе — объект order: order_id, order_name, status, status_description, points и др.

Параметр Где Тип Обяз. Описание
type body string нет Тип заказа, по умолчанию standard; также same_day
matter body string да Что везём (категория товара), до 5000 символов
vehicle_type_id body integer нет Тип транспорта; по умолчанию 6 (пеший курьер); для same_day не передаётся
total_weight_kg body integer нет Общий вес, кг; для same_day обязателен и больше 0
insurance_amount body money нет Сумма страховки
is_client_notification_enabled body boolean нет Уведомлять клиента о статусе
is_contact_person_notification_enabled body boolean нет SMS получателям с интервалом и телефоном курьера
is_route_optimizer_enabled body boolean нет Оптимизировать порядок адресов
loaders_count body integer нет Число грузчиков, до 11
payment_method body string нет Способ оплаты
bank_card_id body integer нет Привязанная карта (для bank_card)
promo_code body string нет Промокод
is_return_required body boolean нет Заказ с возвратом
points body list да Адреса (точки) заказа
points[].address body string да Полный адрес: город, улица, дом; до 350 символов
points[].contact_person.phone body string да Телефон контактного лица
points[].contact_person.name body string нет Имя контактного лица
points[].client_order_id body string нет Номер заказа в магазине, до 32 символов
points[].latitude body coordinate нет Широта
points[].longitude body coordinate нет Долгота
points[].required_start_datetime body datetime нет Ожидаемое прибытие курьера, от
points[].required_finish_datetime body datetime нет Ожидаемое прибытие курьера, до
points[].taking_amount body money нет Сумма к получению от клиента на точке
points[].buyout_amount body money нет Сумма выкупа на точке
points[].note body string нет Информация для курьера
points[].apartment_number body string нет Квартира/офис
points[].packages body list нет Товары на точке: ware_code, description, items_count, item_payment_amount

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

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"matter":"Документы","points":[{"address":"Москва, ул. Покровка, 11","contact_person":{"phone":"79030000001"}},{"address":"Москва, ул. Солянка, 4","contact_person":{"phone":"79030000001"}}]}' 'https://robotapitest.dostavista.ru/api/business/1.5/create-order'

POST /edit-order — Редактирование заказа

Изменение параметров созданного заказа.

POST /cancel-order — Отмена заказа

Отменить можно в статусах new, available, active или delayed; если курьер посетил хотя бы одну точку — нельзя.

Параметр Где Тип Обяз. Описание
order_id body integer да Полный номер заказа

GET /orders — Список заказов

Параметр Где Тип Обяз. Описание
order_id query integer нет Номер заказа или список номеров
status query string нет Статус заказов
created_datetime_from query datetime нет Создан от (в GET — url-кодировать)
created_datetime_to query datetime нет Создан до
offset query integer нет Смещение
count query integer нет Число заказов, максимум 50
next_page_id query integer нет ID заказа, с которого начинать страницу

GET /courier — Курьер заказа

Данные и местоположение курьера.

Нюансы

Ошибки

Код Описание
invalid_parameters Ошибки в параметрах, подробности в parameter_errors
invalid_schema Неизвестные ключи в параметрах
required_auth_token Не передан заголовок X-DV-Auth-Token
invalid_auth_token Некорректный токен
requests_limit_exceeded Превышен лимит запросов
invalid_api_version Неизвестная версия API
required_api_upgrade Устаревшая версия API
invalid_post_json Тело POST не в формате JSON
invalid_api_method Несуществующий метод
order_cannot_be_edited Заказ нельзя изменить
order_cannot_be_canceled Заказ нельзя отменить
insufficient_balance Недостаточно средств на балансе
order_is_duplicate Заказ — копия недавнего
route_not_found Маршрут не найден
unapproved_contract Договор ещё не одобрен
service_unavailable Сервис временно недоступен
unexpected_error Неизвестная ошибка

Ограничения

Источники


Если этого недостаточно — официальная документация: https://apitest.dostavista.ru/business-api/doc JSON: https://mcp-everything.ru/api/integrations/dostavista. MCP: https://mcp-everything.ru/mcp