Online solution kit to extend existing product with E-Mobility features. We are providing mapping, routing and navigation solutions with more than 15 years of E-Bike navigation software experience. Detailed customizable maps, including large list of POIs, optimal route detection, precise turn-by-turn navigation, and much more.

API Functions

Call this api endpoint to get an access token. With this token you can call further api functions.
It is designed to plan a route for electric bikes (E-Bikes) between two geographical points, considering several optional waypoints, and based on various route planning and vehicle parameters.
It calculates the potential range of an E-Bike based on the provided parameters and returns a polygon shape that represents this range.
It allows you to define a route by drawing a shape on the map, then attempts to plan the optimal route for an E-Bike within the shape you've drawn.
Hourly forecast for 4 days.

Member Documentation

Get Token

Call this api endpoint to get an access token. With this token you can call further api functions.

Method
GET
Parameter
client_id
Clientid
client_secret
Client secret
grant_type
Grant type
Response

{
    "access_token": "64bUO16JnaaFk1A6QkbQE9vTdoaKaYEXaoLdstRf",
    "token_type": "Bearer",
    "expires_in": 86400,
    "refresh_token": "pjXjgakfBduI6yaGfsn4BiHW2bBapZGQaG1PZuQV"
}
                    
Example
https://api.gpstuner.com/oauth/token?client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=GRANT_TYPE

Plan Route

It is designed to plan a route for electric bikes (E-Bikes) between two geographical points, considering several optional waypoints, and based on various route planning and vehicle parameters.

Headers
Authorization: Bearer <access_token>
Method
GET
Parameter
latstart
latitude of start point
lonstart
longitude of start point
latend
latitude of end point
lonend
longitude of end point
vehicletype

0 = BICYCLE

1 = MTB

2 = SPEED

3 = PEDESTRIAN

4 = KICKSCOOTER

routeplanmode

-1 = SUGGESTED, EASIEST and SHORTEST

0 = SUGGESTED

1 = EASIEST

2 = SHORTEST

Optional parameter, default is -1

majorroadweight

0 = TRYTOAVOID

1 = ROADTYPEWEIGHT_ALLOW

2 = ROADTYPEWEIGHT_PREFER

unpavedroadweight

0 = TRYTOAVOID

1 = ROADTYPEWEIGHT_ALLOW

2 = ROADTYPEWEIGHT_PREFER

cycleroadweight

0 = TRYTOAVOID

1 = ROADTYPEWEIGHT_ALLOW

2 = ROADTYPEWEIGHT_PREFER

ferriesweight

0 = TRYTOAVOID

1 = ROADTYPEWEIGHT_ALLOW

2 = ROADTYPEWEIGHT_PREFER

useoneway
If true, routeplanner will ignore oneway restriction in low level road classes
bearing
The angle of the user from north. If this is not zero, route planner will use your direction to start the route.
vendor
name of the manufacturer
vehiclemodel
name of the vehicle model
batterycapacity
Battery capacity in Ah
batteryvoltage
Battery voltage in V
maxmotorpower
max motor power in Watt
assistfactor
factor of the assist level in percent
avgcyclistpower
average cyclist power (set to 150 by default)
vehicleweight
Vehicle weight in kg
userweight
User weight in kg
soc
current SOC
deviceuniqueid
Uniqueid of the E-bike
Response

{
    "result": [{
            "routeplanmode": 0,
            "points": [{
                    "lat": 49.467626,
                    "lon": 11.082157,
                    "alt": 322.108398,
                    "soc": 55.000000
                }, {
                    "lat": 49.467314,
                    "lon": 11.082157,
                    "alt": 322.560547,
                    "turn": "TURN_COMB_RIGHT_RIGHT",
                    "soc": 54.965351
                }, {
                    "lat": 49.467316,
                    "lon": 11.081618,
                    "alt": 321.775391,
                    "turn": "TURN_COMB_RIGHT_LEFT",
                    "soc": 54.965351
                }, {
                    "lat": 49.467642,
                    "lon": 11.081577,
                    "alt": 321.242188,
                    "turn": "TURN_COMB_LEFT_RIGHT",
                    "soc": 54.965351
                }, {
                    "lat": 49.467640,
                    "lon": 11.081438,
                    "alt": 321.041016,
                    "turn": "TURN_RIGHT",
                    "soc": 54.965351
                ....
            ]
        }, {
            "routeplanmode": 1,
            "points": [...]
        }, {
            "routeplanmode": 2,
            "points": [...]
        }
    ]
}
                    
Example
https://api.gpstuner.com/api/planroute?latstart=35.67435&lonstart=139.706885&latend=35.697955&lonend=139.698932&vehicletype=0&routeplanmode=0&majorroadweight=0&unpavedroadweight=0&cycleroadweight=0&ferriesweight=0&useoneway=false&bearing=0&deviceuniqueid=device0001&vendor=MANUFACTURER&vehiclemodel=MODEL_01&batterycapacity=9.6&batteryvoltage=48&vehicleweight=25&userweight=75&maxmotorpower=250&assistfactor=100&avgcyclistpower=150&soc=80

Calculate Range Polygon

It calculates the potential range of an E-Bike based on the provided parameters and returns a polygon shape that represents this range.

Headers
Authorization: Bearer <access_token>
Method
GET
Parameter
lat
latitude of start point
lon
longitude of start point
vendor
name of the manufacturer
vehiclemodel
name of the vehicle model
batterycapacity
Battery capacity in Ah
batteryvoltage
Battery voltage in V
maxmotorpower
max motor power in Watt
assistfactor
factor of the assist level in percent
avgcyclistpower
average cyclist power (set to 150 by default)
vehicleweight
vehicle weight in kg
userweight
User weight in kg
soc
current SOC
deviceuniqueid
uniqueid of the E-Bike
Response

{
    "outerline": [
        [
            [49.103394, 10.689697], [49.108887, 10.618286],
            [49.139099, 10.480957], [49.213257, 10.417786],
            [49.452209, 11.835022], [49.394531, 11.777344],
            [49.342346, 11.744385], [49.320374, 11.722412],
            ...,
            [49.106140, 10.708923], [49.106140, 10.692444]
        ]
    ],
    "innerline": [
        [
            [49.850464, 10.942383], [49.847717, 10.923157],
            [49.850464, 10.928650], [49.886169, 10.909424],
            [49.875183, 11.008301], [49.866943, 11.011047],
            ...,
            [49.828491, 10.953369], [49.831238, 10.964355]
        ]
    ]
}
                    
Example
https://api.gpstuner.com/api/calculaterange?lat=35.73962&lon=139.63748&deviceuniqueid=device0001&vendor=MANUFACTURER&vehiclemodel=MODEL_01&batterycapacity=9.6&batteryvoltage=48&vehicleweight=25&userweight=75&maxmotorpower=250&assistfactor=100&avgcyclistpower=150&soc=80

Draw and Plan

It allows you to define a route by drawing a shape on the map, then attempts to plan the optimal route for an E-Bike within the shape you've drawn.

Headers
Authorization: Bearer <access_token>
Method

POST

(See working example on https://rangecalculator.gpstuner.com/ )

Parameter
deviceuniqueid
uniqueid of the E-Bike
Body
Json data with routeplanning parameters, see below
Response

{
    "route": [
        [
            47.772340,
            9.331859
        ],
        [
            47.772494,
            9.332533
        ]...[
            47.835000,
            9.470020
        ],
        [
            47.835887,
            9.469875
        ]
    ],
    "sections": [
        0,
        208,
        363
    ],
    "routeNodes": [],
    "alternateRouteClickedCount": 0
}
                    
Example
https://api.gpstuner.com/api/draw_and_plan?deviceuniqueid=device0001
POST DATA

POST DATA - DRAW

{"route":[[47.77234,9.331859],...[47.797524,9.428655],[47.797713,9.428505]],

Previously planned route points. Set to empty array on init.

"sections":[0,209],

Previously planned route sections. Set to empty array on init.

"draw":[[848,400],[848,396]...[1083,69],[1084,67]],

Screen coordinates of drawn route.

"corners":[[47.84361438123927,9.283794350769881,0,0],[47.735317820710954,9.283794350769881,0,939],[47.84361438123927,9.572185464051131,1680,0]],

Corners in geo and screen coordinates. Upper left, Bottom left, Upper right

"alternateRouteClickedCount":0}

Count of alternate route option used.

POST DATA - POINT

{"route":[[47.77234,9.331859],...[47.797524,9.428655],[47.797713,9.428505]],

Previously planned route points. Set to empty array on init.

"sections":[0,209],

Previously planned route sections. Set to empty array on init.

"point":[47.81277017204049,9.712097481640626],"alternateRouteClickedCount":0}

Count of alternate route option used.

POST DATA – ALTERNATE ROUTE

{"route":[[47.77234,9.331859],...[47.797524,9.428655],[47.797713,9.428505]],

Previously planned route points. For alternate route calculation there must be point in the route.

"sections":[0,209],

Previously planned route sections.

"alternateRoute":1

Set to 1 to calculate alternate route for last segment

"alternateRouteClickedCount":0}

Count of alternate route option used.

POST DATA – FULL REQUEST


{
    "route": [
        [47.77234, 9.331859], [47.772494, 9.332533], [47.772613, 9.332506], [47.773285, 9.332147],
        [47.773809, 9.332119], [47.774379, 9.331703], [47.774677, 9.331291], [47.775169, 9.330084],
        [47.775771, 9.329672], [47.77605, 9.329241], [47.77605, 9.329241], [47.77605, 9.329241], 
        [47.77605, 9.329241], [47.77605, 9.329241], [47.77605, 9.329241], [47.77605, 9.329241],
        [47.77605, 9.329241], [47.77605, 9.329241], [47.77605, 9.329241], [47.77605, 9.329241]
    ],
    "sections": [0, 209],
    "draw": [
        [848, 400], [848, 396], [848, 394], [848, 391], [851, 385], [853, 374], [855, 363],
        [858, 346], [861, 326], [863, 310],
        [867, 292], [870, 266], [871, 251], [876, 236], [880, 225], [883, 214], [887, 205],
        [892, 197], [899, 188], [903, 179],
        [911, 170], [918, 162], [923, 156], [932, 149], [940, 145], [948, 142], [959, 138],
        [970, 133], [979, 129], [992, 123],
        [999, 122], [1003, 121], [1010, 120], [1013, 119], [1025, 116], [1030, 113], [1038, 111],
        [1042, 108], [1049, 106], [1054, 102],
        [1059, 99], [1064, 94], [1066, 91], [1071, 85], [1071, 84], [1071, 83], [1074, 80],
        [1075, 78], [1077, 76], [1079, 73],
        [1081, 71], [1083, 70], [1083, 69], [1084, 67],
    ],
    "corners": [
        [47.84361438123927, 9.283794350769881, 0, 0], [47.735317820710954, 9.283794350769881, 0, 939],
        [47.84361438123927, 9.572185464051131, 1680, 0]
    ],
    "alternateRouteClickedCount": 0
}

                    

Hourly weather forecast

Hourly forecast for 4 days.

Method
GET
Headers
Authorization: Bearer <access_token>
Parameter
lat
latitude data
lon
longitude data
deviceuniqueid
uniqueid of the E-bike
Response

{
    "cod": "200",
    "message": 0,
    "cnt": 96,
    "list": [
        {
            "dt_txt": "2021-02-15 18:00:00",
            "temp": 271.04000000000002,
            "weather": {
                "id": 601,
                "main": "Snow",
                "description": "snow",
                "icon": "weather_icon_snow"
            },
            "clouds": {
                "all": 100
            },
            "wind": {
                "speed": 2.3599999999999999,
                "deg": 146
            }
        }, … ,
    ]
}
                    
Example
https://api.gpstuner.com/api/hourly_forecast?lat=49.23&lon=12.32&deviceuniqueid=device0001
Measures

Temperature: Kelvin

Wind speed: meter/sec

Weather Conditions

Weather icons

How to get icon

https://api.gpstuner.com/assets/weather/[ICON]

Icon list
Day icon Night icon Description
weather_icon_clear_sky_day.svg weather_icon_clear_sky_night.svg clear sky
weather_icon_few_clouds_day.svg weather_icon_few_clouds_night.svg few clouds
weather_icon_scattered_clouds.svg weather_icon_scattered_clouds.svg scattered clouds
weather_icon_broken_clouds.svg weather_icon_broken_clouds.svg broken clouds
weather_icon_shower_rain.svg weather_icon_shower_rain.svg shower rain
weather_icon_rain.svg weather_icon_rain.svg rain
weather_icon_thunderstorm.svg weather_icon_thunderstorm.svg thunderstorm
weather_icon_snow.svg weather_icon_snow.svg snow
weather_icon_mist.svg weather_icon_mist.svg mist

Full url example: https://api.gpstuner.com/assets/weather/weather_icon_clear_sky_day.svg

Weather Condition codes

Group 2xx: Thunderstorm

ID Main Description Icon
200 Thunderstorm thunderstorm with light rain weather_icon_thunderstorm
201 Thunderstorm thunderstorm with rain weather_icon_thunderstorm
202 Thunderstorm thunderstorm with heavy rain weather_icon_thunderstorm
210 Thunderstorm light thunderstorm weather_icon_thunderstorm
211 Thunderstorm thunderstorm weather_icon_thunderstorm
212 Thunderstorm heavy thunderstorm weather_icon_thunderstorm
221 Thunderstorm ragged thunderstorm weather_icon_thunderstorm
230 Thunderstorm thunderstorm with light drizzle weather_icon_thunderstorm
231 Thunderstorm thunderstorm with drizzle weather_icon_thunderstorm
232 Thunderstorm thunderstorm with heavy drizzle weather_icon_thunderstorm

Group 3xx: Drizzle

ID Main Description Icon
300 Drizzle light intensity drizzle weather_icon_shower_rain
301 Drizzle drizzle weather_icon_shower_rain
302 Drizzle heavy intensity drizzle weather_icon_shower_rain
310 Drizzle light intensity drizzle rain weather_icon_shower_rain
311 Drizzle drizzle rain weather_icon_shower_rain
312 Drizzle heavy intensity drizzle rain weather_icon_shower_rain
313 Drizzle shower rain and drizzle weather_icon_shower_rain
314 Drizzle heavy shower rain and drizzle weather_icon_shower_rain
321 Drizzle shower drizzle weather_icon_shower_rain

Group 5xx: Rain

ID Main Description Icon
500 Rain light rain weather_icon_rain
501 Rain moderate rain weather_icon_rain
502 Rain heavy intensity rain weather_icon_rain
503 Rain very heavy rain weather_icon_rain
504 Rain extreme rain weather_icon_rain
511 Rain freezing rain weather_icon_snow
520 Rain light intensity shower rain weather_icon_rain
521 Rain shower rain weather_icon_rain
522 Rain heavy intensity shower rain weather_icon_rain
531 Rain ragged shower rain weather_icon_rain

Group 6xx: Snow

ID Main Description Icon
600 Snow light snow weather_icon_snow
601 Snow Snow weather_icon_snow
602 Snow Heavy snow weather_icon_snow
611 Snow Sleet weather_icon_snow
612 Snow Light shower sleet weather_icon_snow
613 Snow Shower sleet weather_icon_snow
615 Snow Light rain and snow weather_icon_snow
616 Snow Rain and snow weather_icon_snow
620 Snow Light shower snow weather_icon_snow
621 Snow Shower snow weather_icon_snow
622 Snow Heavy shower snow weather_icon_snow

Group 7xx: Atmosphere

ID Main Description Icon
701 Mist Mist weather_icon_mist
711 Smoke Smoke weather_icon_mist
721 Haze Haze weather_icon_mist
731 Dust sand/ dust whirls weather_icon_mist
741 Fog fog weather_icon_mist
751 Sand Sand weather_icon_mist
761 Dust Dust weather_icon_mist
762 Ash volcanic ash weather_icon_mist
771 Squall Squall weather_icon_mist
781 Tornado Tornado weather_icon_mist

Group 800: Clear

ID Main Description Icon
800 Clear clear sky
weather_icon_clear_sky_day
weather_icon_clear_sky_night

Group 80x: Clouds

ID Main Description Icon
801 Clouds few clouds: 11-25%
weather_icon_few_clouds_day
weather_icon_few_clouds_night
802 Clouds scattered clouds: 25-50%
weather_icon_scattered_clouds
803 Clouds broken clouds: 51-84%
weather_icon_broken_clouds
804 Clouds overcast clouds: 85-100%
weather_icon_broken_clouds