Поднесувањето вести и флотата NakBus сега се на партнерската табла
За да се најавите на панелот Nakordoni Partners, користете ги истите податоци за најава (е-пошта и лозинка) како за вашата сметка на програмер, и таму управувајте со вестите и со вашиот автобуски возен парк (NakDriver / NakManager), со тимски улоги. Вашите API-клучеви, крајни точки и апликации остануваат непроменети, а страниците овде продолжуваат да работат. Отвори Nakordoni Partners

← Сите крајни точки

Bus Sun Side API 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.timezoneIANA временска зона на времињата што ги праќате (стандардно: зоната на државата на првата точка).
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 во живо во sandbox — 10 бесплатни тест повици по производ дневно. Најава

Ажурирано