Skip to main content
POST
Send a natural language query and get back structured geospatial results. The endpoint figures out what you’re asking for (directions, a location, reachability, etc.), resolves any text locations to coordinates, calls the appropriate backend, and returns the full result.

How intent is classified

The endpoint maps queries to the backend that best fits:

Using context

Pass context.location when your query uses relative terms like “nearest”, “nearby”, or “from here”. Without it, the endpoint can’t resolve those references. Pass context.country to disambiguate place names. “Springfield” with country: "GBR" resolves differently than with country: "USA".

Response structure

The response always includes: The result field contains the exact same response you’d get calling the backend endpoint directly. If the intent is route, result contains a RouteResponse. If geocode, it contains a GeocodingSearchResponse. No new schemas to learn.

Error handling

If the query is ambiguous or can’t be resolved:
If a location in the query can’t be geocoded, the response includes what was resolved and what failed:

Authorizations

x-api-key
string
header
required

Your Footstep API key

Body

application/json
query
string
required

Natural language query (e.g. 'Walking route from Kings Cross to Tower Bridge', 'Where is Buckingham Palace?', 'How far can I drive in 30 minutes from Liverpool Street?')

Maximum string length: 1000
context
object

Optional context to improve query understanding

Response

Structured result from the resolved query

intent
enum<string>
required

Classified intent of the query

Available options:
route,
optimize,
isochrone,
elevation,
matrix,
geocode,
reverse_geocode
parameters
object
required

Parameters inferred from the query and passed to the backend endpoint

result
object
required

Full response from the backend endpoint (RouteResponse, GeocodingSearchResponse, IsochroneResponse, etc.)

summary
string
required

Natural language summary of the result