बस सन साइड API Online
यात्रा में कोच की किस तरफ़ धूप या छाया पड़ती है, और छाया या नज़ारे के लिए कौन-सी सीटें सबसे अच्छी हैं। यात्रा को 5 मिनट के चरणों में देखा जाता है: रूट से स्थिति और दिशा, उस जगह और समय पर सूरज की स्थिति, फिर चुनी गई बस व्यवस्था के लिए हर सीट का अनुमान। हमारी लाइसेंस प्राप्त लाइनों की रजिस्ट्री से रूट (route_id), दो बिंदु (from/to) का उपयोग करें, या सीट मैप, रूट मैप और टाइमलाइन को इमेज के रूप में भी पाने के लिए अपना रूट POST करें (स्टॉप या polyline)। परिणाम ज्यामिति और सूरज की स्थिति से निकाला गया अनुमान हैं; वास्तविक छाया पर्दों, इमारतों, भूभाग और मौसम पर भी निर्भर करती है।
GET https://nakordoni.eu/api/v2/data/bus-sun-side
— कोटा श्रेणी: heavy
| पैरामीटर | विवरण |
|---|---|
route_id | हमारी बस रूट रजिस्ट्री से रूट id (nakordoni.eu के बस पेजों वाले ही id)। route_id या from+to का उपयोग करें। |
dir | direct (डिफ़ॉल्ट) या 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_model | bus-sun-catalog से बस मॉडल id (डिफ़ॉल्ट standard_coach)। नीचे का कोई भी फ़ील्ड मॉडल को ओवरराइड करता है। |
rows | Seat rows, 8-20. |
layout | सीट व्यवस्था: 2+2, 2+1 या 1+2 (गलियारे के बाएँ+दाएँ)। |
door_side | right (महाद्वीपीय यूरोप) या left। |
windshield | large या normal — आगे की पंक्तियों को विंडस्क्रीन से कितनी धूप मिलती है। |
rear_window | none, small या large — आख़िरी पंक्तियों पर धूप। |
window_height | standard या panoramic (ऊँची साइड खिड़कियाँ)। |
deck | single, upper या lower (डबल-डेक कोच)। |
mid_door | 1 या 0 — बीच का दरवाज़ा है (वहाँ की सीटें हटा देता है)। |
timeline | 0 = टाइमलाइन हटाएँ (15 मिनट की पंक्तियाँ)। |
track | 0 = समय वाले ट्रैक बिंदु हटाएँ। |
weather | 1 (डिफ़ॉल्ट) या 0। 1 के साथ, जब यात्रा अगले 3 दिनों (72 h) के भीतर हो, तो यात्रा के साथ मौसम पूर्वानुमान का उपयोग होता है; बाद की यात्राएँ और weather=0 साफ़ आसमान का उपयोग करते हैं। |
animation | 1 (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.tz | Travel date and the time zone of the times in the answer. |
data.route | id, num, from, to, dir, dep, arr, km (registry route) — or the stops you sent (POST). |
data.basis | How the timed path was built: timetable (registry or your stop times), router (our road route between points) or geometry (your polyline). |
data.bus | The bus profile used: model, layout, rows, door_side, windshield, rear_window, window_height, deck, mid_door. |
data.summary | trip_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.recommend | shade_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_clear | The same recommendation for a clear sky (no weather). |
data.weather_changes_answer | true when the forecast changes the shade side compared with recommend_clear. |
data.weather | used, 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.zones | front / middle / back: left and right sun exposure 0-100 and rows [first, last] of that part. |
data.seats | layout, 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.input | POST only: how your route was read — source, timed_by, stops, points, legs_routed, legs_straight, timezone. |
data.images | POST 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_html | POST 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.duration_min या route.speed_kmh के साथ route.depart। एक यात्रा 72 h तक हो सकती है।
| Body field | विवरण |
|---|---|
route.stops | क्रम में 2-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_precision | एन्कोडेड polyline के लिए 5 (डिफ़ॉल्ट) या 6। |
route.date | पहले स्टॉप के समय की YYYY-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 में से कोई भी (डिफ़ॉल्ट तीनों); [] = कोई नहीं। |
format | png (डिफ़ॉल्ट), webp या jpg: हर इमेज URL का फ़ाइल प्रकार। svg: PNG फ़ाइलें, और सीट मैप इनलाइन SVG के रूप में भी लौटाया जाता है (seat_map.svg)। |
theme | light (default) or dark. |
lang | इमेज लेबल और टेक्स्ट की भाषा, 25 भाषाएँ (डिफ़ॉल्ट en)। |
width | इमेज की चौड़ाई px में, 240-1600 (डिफ़ॉल्ट: प्राकृतिक आकार)। |
embed_html | true (डिफ़ॉल्ट) = embed_html भी लौटाएँ; false = null। |
timeline / track | false = वह सूची उत्तर से हटा दी जाती है। |
weather | true (डिफ़ॉल्ट) या 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 जून)।



Bus catalogue
bus_model इन सामान्य वाहन वर्गों में से एक लेता है (विशिष्ट ब्रांड नहीं)। आपका भेजा कोई भी बस फ़ील्ड मॉडल को ओवरराइड करता है; seats को layout के अनुसार rows में बदला जाता है। यही सूची bus-sun-catalog से JSON के रूप में उपलब्ध है।
| bus_model | layout | rows | door_side | windshield | rear_window | window_height | deck | mid_door | typical_seats |
|---|---|---|---|---|---|---|---|---|---|
standard_coachStandard touring coach (12-13 m, 2+2) |
2+2 | 13 | right | large | small | standard | single | true | 49-53 |
panoramic_coachCoach with panoramic (tall) side windows, 2+2 |
2+2 | 13 | right | large | small | panoramic | single | true | 49-53 |
midi_coachMidi coach (9-10 m, 2+2) |
2+2 | 9 | right | large | small | standard | single | false | 33-37 |
comfort_coach_2_1Comfort coach with 2+1 seating |
2+1 | 12 | right | large | small | standard | single | true | 33-36 |
minibusMinibus (7-8 m, 2+1) |
2+1 | 6 | right | normal | large | standard | single | false | 16-20 |
double_deck_upperDouble-deck coach, upper deck |
2+2 | 15 | right | large | small | panoramic | upper | false | 56-64 on the upper deck |
double_deck_lowerDouble-deck coach, lower deck |
2+2 | 5 | right | normal | none | standard | lower | true | 12-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, और "images": [] वाला POST, भारी वर्ग की 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"
अपडेट किया गया