Sapa Moto

Расчёт, зоны и слоты

Цена и ETA до заказа, цена, которая держится 10 минут, зоны доставки и слоты времени.

Расчёт

POST /v1/quotes рассчитывает доставку, ничего не создавая:

Запрос
{
  "pickup": { "point_id": "0192e8a0-11aa-7b3c-9d4e-6f7a8b9c0d1e" },
  "dropoff": { "address": "Алматы, Жандосова 58", "latitude": 43.214, "longitude": 76.88 },
  "cargo": { "places": 1, "weight_kg": 2.5, "size": "M" },
  "type": "asap"
}
201 Created
{
  "quote_id": "0192f1b0-2a11-7c55-8e0d-3f6a9b7c1d20",
  "price": { "amount": 145000, "currency": "KZT" },
  "breakdown": [
    { "code": "base", "title": "Базовая цена", "amount": { "amount": 80000, "currency": "KZT" } },
    { "code": "distance", "title": "Расстояние 4.3 км", "amount": { "amount": 65000, "currency": "KZT" } }
  ],
  "eta_minutes": 38,
  "zone": "alm-center",
  "valid_until": "2026-10-24T09:20:00Z",
  "livemode": true
}
  • Цена держится 10 минут. Заказ с quote_id до valid_until получает ровно эту цену, даже если тариф изменился. Позже — 422 quote_expired, запросите новый расчёт.
  • breakdown в сумме даёт price; коды стабильны (base, distance, cod, size_l…), названия — для людей.
  • Наложенный платёж и размер L добавляют доплату — передайте cod и cargo, чтобы получить настоящую цену.
  • eta_minutes — оценка от текущего момента; eta заказа обновляется по ходу доставки.

Зоны

Доставка возможна внутри наших зон доставки в Алматы. Адрес забора или доставки вне зон отклоняется с 422 out_of_zone — и в расчёте, и в заказе. zone в расчёте — код зоны адреса доставки.

Передавайте координаты всегда, когда они есть. Адрес только текстом, который не удалось точно найти на карте, отклоняется с 422 address_ambiguous.

Типы доставки

typeЧто значитscheduled_at
asap (по умолчанию)как можно скорее—
scheduledко времениобязателен, время доставки
slotв слотобязателен, from слота

Нет scheduled_at, оно в прошлом или вне часов работы — 422 window_invalid.

Слоты

GET /v1/slots?point_id=…&date=2026-10-24 — слоты точки забора на местную дату:

200 OK
[
  { "from": "2026-10-24T10:00:00Z", "to": "2026-10-24T12:00:00Z", "available": false },
  { "from": "2026-10-24T12:00:00Z", "to": "2026-10-24T14:00:00Z", "available": true }
]

Создавайте заказ с type: "slot" и scheduled_at = from свободного слота. Если слот за это время заполнился — 409 slot_full. В песочнице у каждой точки двухчасовые слоты с 10:00 до 22:00.

Точки забора

GET /v1/pickup-points возвращает точки вашей организации (ведутся в кабинете): адрес, координаты, часы работы, норматив сборки. Используйте id как pickup.point_id — для боевых заказов он обязателен; песочница принимает и просто адрес с координатами.

Документация собирается из спецификации OpenAPI платформы. Скачать OpenAPI