Перейти к содержимому

Стоимость

Стоимость считается по координатам точки забора и точек доставки с учётом размера груза, по тарифу города, в котором забор. Если точка забора вне всех городов Govza, — по тарифу города первой точки доставки, которая в нём.

Окно терминала
curl -X POST https://api.govza.app/v1/delivery/quotes \
-H "Authorization: Bearer $GOVZA_KEY" \
-H "Content-Type: application/json" \
-d '{
"pickup": { "latitude": 43.342439, "longitude": 45.693597 },
"dropoffs": [{ "latitude": 43.320872, "longitude": 45.691756 }],
"cargo_size": "M"
}'
{
"success": true,
"data": {
"quote_id": "…",
"price": 250,
"distance": 2400,
"duration": 600,
"expires_at": "2026-08-11T12:05:00.000Z",
"dropoffs": [
{
"route_id": "…",
"distance": 2400,
"duration": 600,
"cargo_size": "M",
"price": 250,
"cargo_surcharge": 50
}
]
}
}

distance указывается в метрах, duration — в секундах. price точки — это цена за расстояние плюс cargo_surcharge: здесь 200 за 2,4 км и 50 за размер M.

GET /pricing возвращает диапазоны расстояний, из которых складывается любая цена, — ту же таблицу, что показывает приложение Govza. Тариф у каждого города свой; /pricing отдаёт тариф города вашей компании.

Окно терминала
curl https://api.govza.app/v1/delivery/pricing \
-H "Authorization: Bearer $GOVZA_KEY"
{
"success": true,
"data": {
"base_price": 200,
"first_threshold_km": 3,
"band_width_km": 2,
"band_step": 50,
"max_threshold_km": 15,
"per_km_over": 35,
"cargo_size_step_fee": 50,
"bands": [
{ "min_km": 0, "max_km": 3, "price": 200, "per_km_over": null },
{ "min_km": 3, "max_km": 5, "price": 250, "per_km_over": null },
{ "min_km": 5, "max_km": 7, "price": 300, "per_km_over": null },
{ "min_km": 7, "max_km": 9, "price": 350, "per_km_over": null },
{ "min_km": 9, "max_km": 11, "price": 400, "per_km_over": null },
{ "min_km": 11, "max_km": 13, "price": 450, "per_km_over": null },
{ "min_km": 13, "max_km": 15, "price": 500, "per_km_over": null },
{ "min_km": 15, "max_km": null, "price": 550, "per_km_over": 35 }
]
}
}

Расстояние относится к диапазону, если оно не меньше min_km и меньше max_km. У последнего диапазона max_km равен null: за max_threshold_km цена равна price диапазона плюс per_km_over за каждый начатый километр. Показывайте таблицу в своём интерфейсе или сверяйте с ней расчёт, а цену конкретной поездки запрашивайте через POST /quotes: если забор в другом городе, поездка считается по его тарифу, а не по таблице вашей компании.

У каждой точки доставки есть размер груза, и каждый размер больше S добавляет к цене этой точки фиксированную надбавку:

Размер Что это Вес до
S Помещается в термосумку курьера: документы, еда, мелкие вещи; коробка, у которой ни одна сторона не длиннее 40 см 10 кг
M Термосумка и до двух пакетов; коробка до 60 см по длинной стороне 20 кг
L Термосумка и до четырёх пакетов 40 кг
XL Крупный или тяжёлый груз, по договорённости с курьером без ограничения

GET /cargo-sizes возвращает каждый размер с его надбавкой в городе вашей компании:

Окно терминала
curl https://api.govza.app/v1/delivery/cargo-sizes \
-H "Authorization: Bearer $GOVZA_KEY"
{
"success": true,
"data": {
"cargo_sizes": [
{ "cargo_size": "S", "surcharge": 0, "max_weight_kg": 10 },
{ "cargo_size": "M", "surcharge": 50, "max_weight_kg": 20 },
{ "cargo_size": "L", "surcharge": 100, "max_weight_kg": 40 },
{ "cargo_size": "XL", "surcharge": 150, "max_weight_kg": null }
]
}
}

По нему удобно сопоставить свои посылки с размерами и показать разницу в цене при оформлении заказа. Надбавка не зависит от расстояния, и скидки её не уменьшают: скидка применяется только к цене за расстояние.

В запросе:

  • cargo_size на верхнем уровне применяется ко всем точкам;
  • у отдельной точки можно указать свой cargo_size — он имеет приоритет;
  • значение по умолчанию — S.

Надбавка начисляется за каждую точку, а не за заказ: две точки размера M добавят её дважды. Каждая точка расчёта показывает свою надбавку в cargo_surcharge, в её price надбавка уже включена, а price расчёта — это сумма точек. Если забор в другом городе, надбавка берётся по его тарифу.

routing_mode определяет, как строится маршрут:

  • sequential (по умолчанию) — одна цепочка через все точки по порядку;
  • parallel — каждая точка считается независимо от точки забора.

Для sequential поле dropoff_order может выстроить точки в кратчайший маршрут, и расчёт стоимости идёт по нему. По умолчанию — given, в переданном порядке. dropoffs в ответе всё равно идут в вашем порядке, а порядок объезда приходит в visit_order. См. Порядок точек доставки.

Расчёт действует 5 минут. Передайте quote_id в POST /orders, чтобы зафиксировать цену.