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"
}
                    

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.

Method
GET
Parameter
latstart
latitude of start point
lonstart
longitude of start point
latend
latitude of end point
lonend
longitude of end point
wps

lat1,lon1|lat2,lon2|...|latn,lonn

List of waypoints of route planning.

Use this in case of multiple destination.

example 49.467,11.082|49.597,11.104|49.597,11.004

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, routeplanner will use your direction to start the route.
access_token
Access token
deviceuniqueid
Uniqueid of the E-bike
vendorid
id of the manufacturer ( set to 0xF0 )
vehicleid
id of the vehicle ( set to 0x01 )
batterycapacity
Battery capacity in Ah
batteryvoltage
Battery voltage in V
vehicleweight
Vehicle weight in kg
userweight
User weight in kg
minassistlevel
minimum assist level
maxassistlevel
maximum assist level
currentassistlevel
Current assist level
currentbatterylevel
current SOC
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": [...]
        }
    ]
}
                    

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.

Method
GET
Parameter
lat
latitude of start point
lon
longitude of start point
vendorid
id of the manufacturer ( set to 0xF0 )
vehicleid
id of the vehicle ( set to 0x01 )
batterycapacity
Battery capacity in Ah
batteryvoltage
Battery voltage in V
vehicleweight
vehicle weight in kg
userweight
User weight in kg
minassistlevel
minimum assist level
maxassistlevel
maximum assist level
currentassistlevel
Current assist level
soc
current SOC
access_token
Access token
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
            ],
            [
                49.850464,
                10.939636
            ]
        ]
    ]
}
                    

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.

Method

GET/POST

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

Parameter
access_token
access token
deviceuniqueid
uniqueid of the E-Bike
POST DATA
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
}
                    
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
        ]...
    ],
    "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
Header
Authorization: Bearer access_token
Access token
Parameter
Lat
Latitude data
Lon
Longitude data
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
            }
        }, … ,
    ]
}
                    
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