Подача новин і флот NakBus тепер у партнерській панелі
Використовуйте ті самі дані для входу (адресу електронної пошти та пароль), що й для облікового запису розробника, щоб увійти в панель Nakordoni Partners і керувати там новинами та автобусним парком (NakDriver / NakManager) з командними ролями. Ваші API-ключі, ендпоінти та застосунки залишаються без змін, а сторінки тут і далі працюють. Відкрити Nakordoni Partners

← Усі ендпоінти

API Bus Sun Side Online

Який бік автобуса отримує сонце чи тінь у поїздці та які місця найкращі для тіні або для краєвиду. Поїздка проходиться кроками по 5 хвилин: положення й напрямок руху з маршруту, положення сонця в цьому місці й у цей час, потім оцінка для кожного місця за вибраним розташуванням місць. Використовуйте маршрут із нашого реєстру ліцензованих маршрутів (route_id), дві точки (from/to) або надішліть власний маршрут через POST (зупинки чи polyline), щоб також отримати схему місць, карту маршруту й часову шкалу як зображення. Результати — оцінка на основі геометрії й положення сонця; реальна тінь також залежить від штор, будівель, рельєфу й погоди.

GET https://nakordoni.eu/api/v2/data/bus-sun-side — клас квоти: heavy

ПараметрОпис
route_idId маршруту з нашого реєстру автобусних маршрутів (ті самі id, що й на автобусних сторінках nakordoni.eu). Використовуйте route_id або from+to.
dirdirect (за замовчуванням) або return.
dateДата поїздки YYYY-MM-DD (за замовчуванням сьогодні). Положення сонця залежить від дати.
depЧас відправлення HH:MM за місцевим часом маршруту (за замовчуванням: розклад із реєстру).
fromДовільний маршрут: початкова точка lat,lon (разом із to).
toДовільний маршрут: кінцева точка lat,lon (разом із from).
departДовільний маршрут: відправлення YYYY-MM-DDTHH:MM, місцевий час початкової точки.
langМова назв місць і текстів, 25 мов (en, uk, pl, de, …). За замовчуванням en.
bus_modelId моделі автобуса з bus-sun-catalog (за замовчуванням standard_coach). Будь-яке поле нижче перевизначає модель.
rowsSeat rows, 8-20.
layoutРозташування місць: 2+2, 2+1 або 1+2 (ліворуч+праворуч від проходу).
door_sideright (континентальна Європа) або left.
windshieldlarge або normal — скільки сонця перші ряди отримують крізь лобове скло.
rear_windownone, small або large — сонце на останніх рядах.
window_heightstandard або panoramic (високі бокові вікна).
decksingle, upper або lower (двоповерхові автобуси).
mid_door1 або 0 — є середні двері (місця там прибираються).
timeline0 = не включати часову шкалу (рядки по 15 хвилин).
track0 = не включати точки треку з часом.
weather1 (за замовчуванням) або 0. З 1 використовується прогноз погоди вздовж поїздки, якщо поїздка в межах найближчих 3 днів (72 h); для пізніших поїздок і weather=0 береться ясне небо.
animation1 (default) or 0. With 0, the animation block (sun and coach position every 5 minutes) is left out. POST body: animation true|false.

Поля відповіді — усередині об’єкта data у конверті відповіді. [] позначає список, тож data.items[].name — це поле name кожного елемента. Поле буває null, відсутнє або порожній список, коли значення в нас немає, — заглушок ми не підставляємо.

ПолеОпис
data.date / data.tzTravel date and the time zone of the times in the answer.
data.routeid, num, from, to, dir, dep, arr, km (registry route) — or the stops you sent (POST).
data.basisHow the timed path was built: timetable (registry or your stop times), router (our road route between points) or geometry (your polyline).
data.busThe bus profile used: model, layout, rows, door_side, windshield, rear_window, window_height, deck, mid_door.
data.summarytrip_min, daylight_min, night_min and minutes with the sun on the left, right, ahead and behind (weather-weighted when a forecast was used).
data.recommendshade_side, sun_side, shade_pct, best_shade_seats[], best_sun_seats[], confidence (high | medium | low), reason_key; tip_key hot_sun_side when the sunny side is forecast at 28 °C or more. reason_key mostly_cloudy (shade_side any) when the forecast is mostly cloud or rain.
data.recommend_clearThe same recommendation for a clear sky (no weather).
data.weather_changes_answertrue when the forecast changes the shade side compared with recommend_clear.
data.weatherused, window_h (72), covered_pct, sunny_min, cloudy_min, rain_min, max_temp, note_key (forecast_used | partly_forecast | mostly_cloudy | rain_expected | clear_sky_only).
data.zonesfront / middle / back: left and right sun exposure 0-100 and rows [first, last] of that part.
data.seatslayout, rows, cols[], grid[][]: every seat — id (e.g. 4C), side, pos (window | aisle), exp (sun exposure 0-100), door (true next to a door).
data.timeline[]One row per 15 min: t, lat, lon, hd (heading), az / el (sun azimuth / elevation), side (left | right | ahead | behind | none), w (sun strength); wx {code, f, temp, precip} when a forecast was used.
data.track[]Track points [lat, lon, sun side] for drawing the route (leave out with track=0).
data.inputPOST only: how your route was read — source, timed_by, stops, points, legs_routed, legs_straight, timezone.
data.imagesPOST only: seat_map, route_map, timeline — each {url, format, expires_at}; url = https://api.nakordoni.dev/images/<random name>.<png | webp | jpg> (body format, default png). Files are kept 12 hours. format svg: PNG files plus the seat map as inline SVG (seat_map.svg).
data.embed_htmlPOST only: a self-contained HTML figure with the seat map (inline SVG) to paste into a page; null with embed_html=false.

Спробуйте без коду: планувальник сонячного боку автобуса запускає цей API для будь-якого маршруту чи вашої власної поїздки й показує схему місць, карту, хронологію, зображення та код виклику. Відкрити планувальник →

Your route (POST)

Надішліть власний маршрут як тіло JSON методом POST на той самий URL. Відповідь містить ті самі поля, що й GET, а також input (як прочитано ваш маршрут), images (схема місць, карта маршруту й часова шкала) та embed_html.

Зупинки без геометрії з’єднуються нашим дорожнім маршрутизатором; відрізок, який неможливо прокласти, малюється прямою лінією й враховується в input.legs_straight. Час: щонайменше дві зупинки з часом або route.depart разом із route.duration_min чи route.speed_kmh. Поїздка може тривати до 72 h.

Body fieldОпис
route.stops2-200 зупинок по порядку: {lat, lon, name?, arr?, dep?, day?}. arr / dep — місцевий час HH:MM; day = кількість днів після route.date (час, що переходить через північ, переноситься автоматично).
route.geometryВаш шлях: GeoJSON LineString, MultiLineString, Feature або FeatureCollection (порядок [lon, lat]) чи закодований рядок polyline. До 5000 точок. Разом зі stops зупинки задають час, а геометрія — шлях.
route.polyline_precision5 (за замовчуванням) або 6, для закодованої polyline.
route.dateYYYY-MM-DD часу першої зупинки (за замовчуванням сьогодні).
route.departВідправлення YYYY-MM-DDTHH:MM, коли зупинки не мають часу або ви надсилаєте лише геометрію.
route.duration_minТривалість поїздки в хвилинах, разом із depart (інакше час обчислюється з speed_kmh).
route.speed_kmhСередня швидкість разом із depart, за замовчуванням 65.
route.timezoneЧасовий пояс IANA для часу, який ви надсилаєте (за замовчуванням: пояс країни першої точки).
busАвтобус: bus_model з каталогу та/або seats, rows, layout, door_side, windshield, rear_window, window_height, deck, mid_door — ті самі поля, що й параметри GET. За замовчуванням standard_coach.
imagesЯкі зображення створити: будь-які з seat_map, route_map, timeline (за замовчуванням усі три); [] = жодного.
formatpng (за замовчуванням), webp або jpg: тип файлу кожного URL зображення. svg: файли PNG, а схема місць додатково повертається вбудованим SVG (seat_map.svg).
themelight (default) or dark.
langМова підписів на зображеннях і текстів, 25 мов (за замовчуванням en).
widthШирина зображення в px, 240-1600 (за замовчуванням: природний розмір).
embed_htmltrue (за замовчуванням) = також повернути embed_html; false = null.
timeline / trackfalse = не включати цей список у відповідь.
weathertrue (за замовчуванням) або false: використовувати прогноз погоди вздовж поїздки (найближчі 3 дні); false = лише ясне небо. Також приймаються 1 і 0.

Неправильне або відсутнє поле дає HTTP 400, де error.field містить його шлях, наприклад route.stops[2].lat або bus.seats.

curl -X POST "https://nakordoni.eu/api/v2/data/bus-sun-side" \
  -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "route": {
        "stops": [
            {
                "name": "Poznań Dworzec Autobusowy",
                "lat": 52.4011,
                "lon": 16.911,
                "dep": "08:00"
            },
            {
                "name": "Konin",
                "lat": 52.223,
                "lon": 18.2511,
                "arr": "09:20",
                "dep": "09:25"
            },
            {
                "name": "Łódź Kaliska",
                "lat": 51.7573,
                "lon": 19.4306,
                "arr": "10:55",
                "dep": "11:05"
            },
            {
                "name": "Warszawa Zachodnia",
                "lat": 52.219,
                "lon": 20.965,
                "arr": "13:10"
            }
        ],
        "date": "2026-06-21",
        "timezone": "Europe/Warsaw"
    },
    "bus": {
        "bus_model": "minibus"
    },
    "images": [
        "seat_map",
        "route_map",
        "timeline"
    ],
    "format": "png",
    "theme": "light",
    "lang": "en",
    "weather": true
}'
const res = await fetch('https://nakordoni.eu/api/v2/data/bus-sun-side', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer NKD-DEV-XXXX-XXXX-XXXX', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    route: { stops: [
      { name: 'Poznań', lat: 52.4011, lon: 16.911, dep: '08:00' },
      { name: 'Warszawa', lat: 52.219, lon: 20.965, arr: '11:30' } ],
      date: '2026-06-21', timezone: 'Europe/Warsaw' },
    bus: { bus_model: 'comfort_coach_2_1' },
    images: ['seat_map'], format: 'svg', lang: 'pl'
  })
});
const { data } = await res.json();
console.log(data.recommend.shade_side, data.recommend.best_shade_seats);
document.querySelector('#seats').innerHTML = data.embed_html;   // or <img src="data.images.seat_map.url">

Images and embed_html

Кожне зображення має власний URL із випадковою назвою файлу (.png, .webp або .jpg). URL не потребують ключа й дійсні 12 годин (expires_at); скопіюйте файли, якщо вони потрібні довше. embed_html — самодостатній figure зі схемою місць як вбудованим SVG і рядком атрибуції nakordoni.eu; зберігайте атрибуцію під час показу.

Нижче: зображення для прикладу тіла запиту вище (мікроавтобус, Познань — Варшава, 21 червня).

Схема місць: тінь і сонце для кожного місця
seat_map
Карта маршруту, розфарбована за боком сонця
route_map
Часова шкала: коли сонце з якого боку
timeline

Bus catalogue

bus_model приймає один із цих загальних класів транспортних засобів (не конкретні марки). Будь-яке надіслане поле автобуса перевизначає модель; seats перетворюється на rows відповідно до layout. Той самий список доступний у JSON через bus-sun-catalog.

bus_modellayoutrowsdoor_sidewindshieldrear_windowwindow_heightdeckmid_doortypical_seats
standard_coach
Standard touring coach (12-13 m, 2+2)
2+213rightlargesmallstandardsingletrue49-53
panoramic_coach
Coach with panoramic (tall) side windows, 2+2
2+213rightlargesmallpanoramicsingletrue49-53
midi_coach
Midi coach (9-10 m, 2+2)
2+29rightlargesmallstandardsinglefalse33-37
comfort_coach_2_1
Comfort coach with 2+1 seating
2+112rightlargesmallstandardsingletrue33-36
minibus
Minibus (7-8 m, 2+1)
2+16rightnormallargestandardsinglefalse16-20
double_deck_upper
Double-deck coach, upper deck
2+215rightlargesmallpanoramicupperfalse56-64 on the upper deck
double_deck_lower
Double-deck coach, lower deck
2+25rightnormalnonestandardlowertrue12-20 on the lower deck

Allowed values: layout 2+2 | 2+1 | 1+2 · rows {"min":4,"max":20,"custom_min":8} · door_side right | left · windshield large | normal · rear_window none | small | large · window_height standard | panoramic · deck single | upper | lower · mid_door true | false

Weather

З weather=1 (за замовчуванням; у тілі POST "weather": true) відповідь використовує погодинний прогноз погоди вздовж поїздки на найближчі 3 дні (72 h); для пізніших частин поїздки береться ясне небо. summary.sun_*_min тоді зважуються за прогнозом, кожен рядок timeline отримує wx {code, f, temp, precip}, а weather {used, window_h, covered_pct, sunny_min, cloudy_min, rain_min, max_temp, note_key} показує, яку частину поїздки покрив прогноз. recommend_clear — відповідь для ясного неба; weather_changes_answer дорівнює true, коли прогноз змінює бік тіні. Якщо прогноз переважно хмарний або дощовий, recommend.reason_key дорівнює mostly_cloudy, а shade_side — any. recommend.tip_key hot_sun_side означає, що на сонячному боці прогнозують 28 °C або більше.

Quota and accuracy

GET, а також POST з "images": [], рахуються як 1 одиниця важкого класу; POST, що створює зображення, рахується як 2. bus-sun-catalog — дешевий виклик. Те саме тіло POST повертає збережену відповідь до 6 годин (1 година, якщо використано прогноз погоди).

Результат — оцінка на основі геометрії маршруту й положення сонця. Штори, тоноване скло, будівлі, дерева, рельєф і змінений маршрут нам невідомі. Хмари й дощ беруться з прогнозу погоди лише для поїздок у найближчі 3 дні; для пізніших поїздок припускається ясне небо. confidence нижчий, коли сонце низько, поїздка коротка, маршрут часто повертає або прогноз переважно хмарний.

curl "https://nakordoni.eu/api/v2/data/bus-sun-side?route_id=521&dir=direct&date=2026-06-21&bus_model=standard_coach&lang=en" \
  -H "Authorization: Bearer NKD-DEV-XXXX-XXXX-XXXX"
🔑 Увійдіть як розробник, щоб спробувати цей endpoint наживо в пісочниці — 10 безкоштовних тестових викликів на продукт на день. Увійти

Оновлено