L'invio delle notizie e la flotta NakBus sono ora nella dashboard partner
Usi le stesse credenziali di accesso (e-mail e password) del suo account sviluppatore per accedere al pannello Nakordoni Partners e gestire lì le notizie e la flotta di autobus (NakDriver / NakManager), con ruoli di team. Le chiavi API, gli endpoint e le app restano invariati e le pagine qui presenti continuano a funzionare. Apri Nakordoni Partners

← Tutti gli endpoint

API Bus Sun Side Online

Quale lato di un pullman riceve il sole o l'ombra durante un viaggio, e quali posti sono i migliori per l'ombra o per la vista. Il viaggio viene percorso a passi di 5 minuti: posizione e direzione dal percorso, posizione del sole in quel luogo e in quell'ora, poi una stima per ogni posto per la disposizione di autobus scelta. Usa un percorso dal nostro registro delle linee autorizzate (route_id), due punti (from/to) o invia con POST il tuo percorso (fermate o polyline) per ottenere anche una mappa dei posti, una mappa del percorso e una timeline come immagini. I risultati sono una stima basata sulla geometria e sulla posizione del sole; l'ombra reale dipende anche da tende, edifici, terreno e meteo.

GET https://nakordoni.eu/api/v2/data/bus-sun-side — classe di quota: heavy

ParametroDescrizione
route_idId del percorso dal nostro registro delle linee di autobus (gli stessi id delle pagine autobus su nakordoni.eu). Usa route_id oppure from+to.
dirdirect (predefinito) o return.
dateData del viaggio YYYY-MM-DD (predefinito oggi). La posizione del sole dipende dalla data.
depOrario di partenza HH:MM, ora locale del percorso (predefinito: l'orario del registro).
fromPercorso libero: punto di partenza lat,lon (con to).
toPercorso libero: punto di arrivo lat,lon (con from).
departPercorso libero: partenza YYYY-MM-DDTHH:MM, ora locale del punto di partenza.
langLingua dei nomi dei luoghi e dei testi, 25 lingue (en, uk, pl, de, …). Predefinito en.
bus_modelId del modello di autobus da bus-sun-catalog (predefinito standard_coach). Ogni campo qui sotto sovrascrive il modello.
rowsSeat rows, 8-20.
layoutDisposizione dei posti: 2+2, 2+1 o 1+2 (sinistra+destra del corridoio).
door_sideright (Europa continentale) o left.
windshieldlarge o normal — quanto sole ricevono le prime file attraverso il parabrezza.
rear_windownone, small o large — sole sulle ultime file.
window_heightstandard o panoramic (finestrini laterali alti).
decksingle, upper o lower (pullman a due piani).
mid_door1 o 0 — porta centrale presente (rimuove i posti in quel punto).
timeline0 = esclude la timeline (righe di 15 minuti).
track0 = esclude i punti della traccia con orario.
weather1 (predefinito) o 0. Con 1 viene usata una previsione meteo lungo il viaggio quando il viaggio è entro i prossimi 3 giorni (72 h); i viaggi successivi e weather=0 usano cielo sereno.
animation1 (default) or 0. With 0, the animation block (sun and coach position every 5 minutes) is left out. POST body: animation true|false.

Campi della risposta — all’interno dell’oggetto data della busta. [] indica una lista, quindi data.items[].name è il campo name di ogni elemento. Un campo è null, assente o una lista vuota quando non abbiamo un valore — mai un segnaposto.

CampoDescrizione
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.

Provalo senza codice: il pianificatore del lato al sole esegue questa API su qualsiasi linea o sul tuo viaggio e mostra mappa dei posti, mappa, cronologia, immagini e il codice della chiamata. Apri il pianificatore →

Your route (POST)

Invia il tuo percorso come corpo JSON con POST allo stesso URL. La risposta ha gli stessi campi di GET più input (come è stato letto il percorso), images (mappa dei posti, mappa del percorso e timeline) ed embed_html.

Le fermate senza geometria vengono collegate dal nostro router stradale; una tratta che non può essere calcolata viene disegnata come linea retta e conteggiata in input.legs_straight. Orari: almeno due fermate con orario, oppure route.depart con route.duration_min o route.speed_kmh. Un viaggio può durare fino a 72 h.

Body fieldDescrizione
route.stops2-200 fermate in ordine: {lat, lon, name?, arr?, dep?, day?}. arr / dep sono ora locale HH:MM; day = giorni dopo route.date (gli orari che superano la mezzanotte vengono riportati automaticamente).
route.geometryIl tuo percorso: un GeoJSON LineString, MultiLineString, Feature o FeatureCollection (ordine [lon, lat]), oppure una stringa polyline codificata. Fino a 5000 punti. Con stops, le fermate danno gli orari e la geometria dà il percorso.
route.polyline_precision5 (predefinito) o 6, per una polyline codificata.
route.dateYYYY-MM-DD dell'orario della prima fermata (predefinito oggi).
route.departPartenza YYYY-MM-DDTHH:MM, quando le fermate non hanno orari o si invia solo la geometria.
route.duration_minDurata del viaggio in minuti, insieme a depart (altrimenti l'orario deriva da speed_kmh).
route.speed_kmhVelocità media insieme a depart, predefinita 65.
route.timezoneFuso orario IANA degli orari inviati (predefinito: il fuso del paese del primo punto).
busL'autobus: bus_model dal catalogo e/o seats, rows, layout, door_side, windshield, rear_window, window_height, deck, mid_door — gli stessi campi dei parametri GET. Predefinito standard_coach.
imagesQuali immagini creare: qualsiasi tra seat_map, route_map, timeline (predefinite tutte e tre); [] = nessuna.
formatpng (predefinito), webp o jpg: il tipo di file di ogni URL immagine. svg: file PNG, e la mappa dei posti viene restituita anche inline come SVG (seat_map.svg).
themelight (default) or dark.
langLingua delle etichette delle immagini e dei testi, 25 lingue (predefinito en).
widthLarghezza dell'immagine in px, 240-1600 (predefinito: dimensione naturale).
embed_htmltrue (predefinito) = restituisce anche embed_html; false = null.
timeline / trackfalse = esclude quell'elenco dalla risposta.
weathertrue (predefinito) o false: usa la previsione meteo lungo il viaggio (prossimi 3 giorni); false = solo cielo sereno. Sono accettati anche 1 e 0.

Un campo errato o mancante restituisce HTTP 400 con error.field impostato sul suo percorso, per esempio route.stops[2].lat o 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

Ogni immagine ha il proprio URL con un nome file casuale (.png, .webp o .jpg). Gli URL non richiedono chiave e restano validi per 12 ore (expires_at); copia i file se ti servono più a lungo. embed_html è un figure autonomo con la mappa dei posti come SVG inline e una riga di credito nakordoni.eu; mantieni il credito quando lo mostri.

Sotto: le immagini per il corpo di esempio qui sopra (minibus, da Poznań a Varsavia, 21 giugno).

Mappa dei posti: ombra e sole per ogni posto
seat_map
Mappa del percorso colorata in base al lato del sole
route_map
Timeline: quando il sole è su quale lato
timeline

Bus catalogue

bus_model accetta una di queste classi di veicoli generiche (non marche specifiche). Ogni campo dell'autobus inviato sovrascrive il modello; seats viene convertito in rows in base al layout. Lo stesso elenco è disponibile in JSON da 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

Con weather=1 (predefinito; in un corpo POST "weather": true) la risposta usa una previsione meteo oraria lungo il viaggio per i prossimi 3 giorni (72 h); le parti successive del viaggio usano cielo sereno. summary.sun_*_min sono quindi ponderati in base alla previsione, ogni riga di timeline riceve wx {code, f, temp, precip} e weather {used, window_h, covered_pct, sunny_min, cloudy_min, rain_min, max_temp, note_key} indica quanta parte del viaggio è stata coperta dalla previsione. recommend_clear è la risposta con cielo sereno; weather_changes_answer è true quando la previsione cambia il lato in ombra. Quando la previsione è per lo più nuvolosa o piovosa, recommend.reason_key è mostly_cloudy e shade_side è any. recommend.tip_key hot_sun_side significa che per il lato al sole sono previsti 28 °C o più.

Quota and accuracy

GET, e POST con "images": [], contano 1 unità della classe pesante; un POST che crea immagini conta 2. bus-sun-catalog è una chiamata economica. Lo stesso corpo POST restituisce la risposta memorizzata fino a 6 ore (1 ora se è stata usata una previsione meteo).

Il risultato è una stima basata sulla geometria del percorso e sulla posizione del sole. Tende, vetri oscurati, edifici, alberi, terreno e un percorso modificato non ci sono noti. Nuvole e pioggia provengono da una previsione meteo solo per i viaggi nei prossimi 3 giorni; i viaggi successivi presuppongono cielo sereno. confidence è più bassa quando il sole è basso, il viaggio è breve, il percorso svolta spesso o la previsione è per lo più nuvolosa.

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"
🔑 Accedi come sviluppatore per provare questo endpoint dal vivo nella sandbox — 10 chiamate di test gratuite per prodotto al giorno. Accedi

Aggiornato