---
slug: "dostavista"
name: "Достависта Business API"
vendor: "Достависта"
industry: "logistics"
docsUrl: "https://apitest.dostavista.ru/business-api/doc"
version: 2
updatedAt: "2026-10-24"
---

# Достависта Business 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 той же структуры, что и запрос.

```bash
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 — что не хватает денег на балансе.

```bash
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 в сутки, поэтому опирайся на уведомления, а не на частый опрос.

```python
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 — статус должен смениться на отменённый.

```bash
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

- Боевой: `https://robot.dostavista.ru/api/business/1.5`
- Тестовый: `https://robotapitest.dostavista.ru/api/business/1.5`

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

Тип: 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 — Курьер заказа

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

## Нюансы

- Успешный ответ — HTTP 200 и `is_successful: true`; ошибка — HTTP 400, `is_successful: false`, список `errors` и при `invalid_parameters` — объект `parameter_errors` той же структуры, что запрос.
- Неизвестные ключи в запросе дают предупреждение `invalid_schema` в `schema_warnings`; неизвестные поля в ответах нужно игнорировать.
- Даты — ISO 8601 (`YYYY-MM-DDThh:mm:ss±hh:mm` или с `Z`); в GET-запросах дату нужно url-кодировать (`+` → `%2B`).
- Callback-уведомления о заказах (`order_created`, `order_changed`), доставках и местоположении курьера приходят POST с JSON на URL из личного кабинета. Подпись — заголовок `X-DV-Signature`: HMAC-SHA256 от тела с ключом Callback Secret Key из кабинета.
- Новые поля и методы добавляются без смены версии; версия меняется только при несовместимых изменениях.

## Ошибки

| Код | Описание |
|---|---|
| `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` | Неизвестная ошибка |

## Ограничения

- 100 запросов в минуту, но не больше 5 000 запросов в сутки.
- `GET /orders` — до 50 заказов за запрос.
- В заказе до 11 грузчиков.

## Источники

- [Достависта Business API 1.5](https://apitest.dostavista.ru/business-api/doc)
- [Интеграция по API](https://dostavista.ru/integrations)

---

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