Стоимость
Стоимость считается по координатам точки забора и точек доставки с учётом размера груза, по тарифу города, в котором забор. Если точка забора вне всех городов 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, чтобы
зафиксировать цену.