REST API

Geospatial endpoints, over plain HTTP.

Stable, documented HTTP endpoints for routing, geocoding, terrain analytics, address parsing, and spatial probability. Use it from web apps, backends, batch pipelines, or anywhere an MCP client doesn't fit.

Authenticate with an x-api-key header. Standard JSON. Per-call billing. REST returns the full response payload; the MCP variants ship trimmed shapes tuned for agent context windows.

api.footstep.ai

Your first call

Three lines of cURL, or whatever your stack speaks

Authentication is a single header. Body is JSON. There is no SDK to install. A `requests`-style helper or a generated TypeScript client would each be about ten lines if you want one.

shell
curl -X POST https://api.footstep.ai/v1/routing/route \
  -H "x-api-key: sk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "locations": [
      { "lat": 51.5322, "lon": -0.1240 },
      { "lat": 51.5055, "lon": -0.0754 }
    ]
  }'
Design principles

What to expect from every endpoint

Predictable HTTP

Standard POST and GET semantics. JSON in, JSON out. No SDK to install, no proprietary protocol, your existing HTTP client is enough. Errors come back with descriptive error fields and proper status codes (400 / 401 / 402 / 429 / 500).

Explicit units, every field

distance_meters is always meters. duration_seconds is always seconds. grade_percent is always a percentage. No global units parameter to set, the field name carries the unit. Unambiguous in code review and in LLM context.

Hoisted context, lean payloads

Shared admin fields (country, region, district) are hoisted into a top-level context block when every result shares them. include_geometry is opt-in for endpoints that have heavy geometries, so your bytes go to the data.

Open formats end-to-end

Pass format: "geojson" for RFC 7946 FeatureCollection responses. Encoded polylines for compact route geometry. H3 hex grids for predict. Drop responses straight into deck.gl, Mapbox GL, Leaflet, or QGIS without a transformation step.

Endpoints

The full surface area

Click any endpoint for the full reference: parameter tables, response shapes, and copy-pasteable code samples.

Predict1

A probabilistic spatial model. Returns a per-hex H3 surface scored by likelihood, conditioned on behavioural profile, terrain, and weather.

Predict access and use

Restricted access. Predict is not part of the standard plan. Access is granted by application only, to organisations with appropriate operational expertise. Apply for access.

Decision support only, never a replacement. Predict outputs are probability priors. They must never replace expert human judgment, established response protocols, or any duty-of-care obligation. Outputs may be incorrect, incomplete, or unsuitable for a given scenario. Final decisions sit with qualified human operators.

Routing9

Terrain-aware routing across five travel modes (car, walk, bike, bus, truck), with explicit units everywhere. Your model never has to guess whether the number is metres or feet.

Geocoding4

Forward, reverse, batch, and POI search backed by an open-data index refreshed weekly. Every result carries place type and confidence, so the agent can decide whether to ask the user or guess.

Natural Language1

An LLM pre-step for the messy reality of customer-typed addresses. Cleans typos, expands abbreviations, reformats components. Downstream geocoding actually hits.

Response shape

What you actually get back

A worked routing example, lightly trimmed. Explicit-unit field names, a structured terrain block, and turn-by-turn legs ready to deserialise.

200 OK · /v1/routing/route
{
  "route": {
    "distance_meters": 5765,
    "duration_seconds": 812,
    "terrain": {
      "total_ascent_meters": 12.4,
      "total_descent_meters": 8.1,
      "max_elevation_meters": 28,
      "min_elevation_meters": 5,
      "avg_grade_percent": 1.2,
      "max_grade_percent": 4.5,
      "difficulty": "flat"
    },
    "legs": [
      {
        "distance_meters": 5765,
        "duration_seconds": 812,
        "steps": [
          {
            "instruction": "Drive north on Midland Road.",
            "distance_meters": 120,
            "duration_seconds": 15
          }
        ]
      }
    ]
  }
}

Building an agent? You probably want MCP.

The same endpoints are exposed as MCP tools at mcp.footstep.ai. Better fit for tool-calling LLMs, same data underneath.