Sign up at console.footstep.ai and create an API key. Your key will look like sk_live_abc123.... Keep it safe, as it’s used to authenticate every request.
API keys are for server-side use only. Never expose them in frontend code, mobile apps, or anywhere a user could inspect network traffic.
Every routing request needs at least two locations: a start and an end. Each location is a lat/lon pair. Here’s a route from King’s Cross to Tower Bridge in London:
Overall classification: flat, rolling, hilly, or mountainous
legs[].steps[]
Turn-by-turn directions with distance and time per manoeuvre
All field names include their unit. distance_meters is always meters, duration_seconds is always seconds, grade_percent is always a percentage. This is true regardless of the units parameter you send in the request.
Walking and hiking. Factors in terrain, avoids motorways
bicycle
Cycling. Considers surface type and hill gradients
bus
Bus routing
truck
Truck routing. Respects vehicle dimensions and weight limits
Each travel type produces different routes and terrain analytics. A pedestrian route through hilly terrain will show significantly different difficulty and grade profiles compared to the same coordinates with auto.
By default, responses use the footstep format, which is compact JSON with encoded polyline geometry. If you’re working with mapping libraries or GIS tools, you can request GeoJSON instead:
This returns a standard GeoJSON FeatureCollection with decoded coordinate arrays. You can paste the response directly into geojson.io to visualise it, or load it into Leaflet, Mapbox GL, deck.gl, or QGIS without any transformation.
Use focus.point to bias results towards a location (e.g. the user’s city) and boundary.country to restrict to specific countries. See the geocoding guide for the full set of parameters and endpoints.