A map and directions API that keeps the trip to itself.
Put a world map on your website and ask for walk, bike, drive and transit directions from your backend. The map files, the route engines and the key check all run on Carpathian's own map server, built on OpenStreetMap data, so no third-party map provider sees where your users are or where they are going.
curl https://maps.carpathian.ai/v1/route \ -H "Authorization: Bearer $MAPS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"origin":{"lat":41.5868,"lng":-93.625}, "destination":{"lat":41.6005,"lng":-93.6091}, "mode":"transit"}'
{
"route": {
"mode": "transit",
"duration_s": 1500,
"distance_m": 4551,
"path": [[41.5868, -93.625], [41.5871, -93.6249]],
"steps": [
{ "instruction": "Walk to 6th Ave & Keo Way", "travel": "walk" },
{ "instruction": "Take 6 to DART Central Station", "travel": "bus", "line": "6" }
]
}
}What you can build with it
The map and the directions work separately, so a store locator can use only the map and a delivery quote can use only the API.
A map on your site
The map is drawn in the browser by MapLibre GL JS from public map files, styled with the Protomaps basemap in light, dark, white, grayscale or black. It covers the whole planet, each tile is cached in the browser for a day, and the map files load nothing from another company. List your website on an app and the map draws on the next page load.
Directions
Send two points and a mode, and get back the time in seconds, the distance in meters, the path to draw and one step per instruction, with an arrow hint for each turn. Transit answers name the line and the departure time, and include the walk to and from the stops.
Travel-time areas
Send one point and up to four travel times, and get back the area someone can reach in each, as GeoJSON you can fill on the map. It is what you reach for when a page says within 15 minutes of you, or when a delivery zone should follow the roads instead of a circle.
Keys and websites, one app at a time
You create an app in Carpathian for each website or service that uses the map. Each app gets its own key, starting cmk_, shown once when you create it. Carpathian keeps only a hash of it, and the map server checks every request against a signed list of those hashes that it fetches every minute.
A browser may load the map files only from a website listed on one of your apps, so another site cannot embed your map and run up your usage. Directions need the key, which stays on your backend: your page asks your server, and your server asks Carpathian Maps.
Rotating a key or deleting an app takes two-factor authentication, and the old key stops working within a minute on every map server.
- A separate key, website list and limits for every app
- A request a minute and a request a day ceiling, answered with 429 past either
- A spend cap that pauses your keys instead of running past it
- Viewing, managing and deleting granted to different people
- ViewSee the organization's map apps, the websites each one lists, and their usage
- ManageCreate apps, change their websites and limits, and rotate their keys
- DeleteRemove an app, after which its key stops working within a minute
What the map server keeps
A directions request carries where someone is and where they are going. That is the part a hosted map provider would otherwise hold.
Coordinates travel in request bodies only. The map server logs the method, path, status and time of each request, never a body, a coordinate or a query string, and the route engines run beside it without being reachable from the network. Carpathian's platform sees how many requests each app made each day, by kind, for the usage page and the invoice.
Turn-by-turn navigation built on Carpathian Maps contributes anonymous traffic data: how long each stretch of road took, the travel mode and a 15-minute window of the week, with no account, key, device, start or destination. Section 24 of the Terms of Service covers it, and an app that offers navigation should say so in its own privacy notice.
What it does not do
There is no address search. Carpathian Maps answers coordinates with routes and areas, so an app where people type an address needs a geocoder in front of it.
Directions cover the areas and transit agencies in the coverage list on the documentation's overview page. A point outside them answers that no route was found, while the map itself still draws there.
Labels are in English, and the styles are the Protomaps basemap's own. You can restyle the map in your own MapLibre code, but that style is then yours to maintain.
- Travel times1 to 4 per area request, each from 1 to 120 minutes
- Modeswalk, bike, drive and transit
- Request bodyUp to 4 KB of JSON
- CreditThe OpenStreetMap credit stays visible on every map
Questions we get asked
What does Carpathian Maps include?
What does it cost?
Who sees where my users are going?
Can another site embed my map on my account?
What happens if a key leaks?
Where do directions work?
Does it turn addresses into coordinates?
The other half of finding things
Carpathian Search runs its own crawler and index, with a Search API for apps and AI agents on the same account as your map keys. An agent with both can find a place and work out how to get there.
Put a map on your site.
Create an account, add a payment card, turn on Carpathian Maps from Services, and create an app with your website listed. The map files are never billed and directions are free up to a monthly allowance, so you can build the whole thing before the first invoice line appears.