Cartline

Documentation

Tile endpoints, the geocoding and routing APIs, and how to run the whole thing on your own hardware.

Endpoints

bash
# vector tiles
https://tiles.de-13.123ok.uk/v1/omt/{z}/{x}/{y}.mvt?key=KEY

# raster
https://tiles.de-13.123ok.uk/v1/raster/{z}/{x}/{y}@2x.webp?key=KEY

# TileJSON
https://tiles.de-13.123ok.uk/v1/omt.json?key=KEY

Styles

Six published styles, all editable — fork the JSON, change what you like, host it yourself or let us serve it.

StyleBest forDark variant
streetsgeneral purposeyes
terrainoutdoor, hikingyes
minimaldata overlaysyes
satellite-hybridimagery with labelsno
transitpublic transportyes
printhigh-contrast static outputno

Caching

Tiles are served with a 30-day max-age and a strong ETag. Cache them at the edge, in the browser, in your app — we would rather you did.

There is no anti-caching clause in the terms. If you want to put a CDN in front of us and serve a million views from one tile request, that is a sensible thing to do and it is allowed.

Geocoding

bash
GET /geocode/v1/search?q=…&limit=5&lang=de&bias=13.4,52.5
GET /geocode/v1/reverse?lat=52.5&lon=13.4&layers=address,poi
GET /geocode/v1/structured?street=…&number=…&city=…&country=DE

Routing

bash
GET /route/v1/{profile}/{coordinates}?steps=true&alternatives=2
GET /matrix/v1/{profile}/{coordinates}?sources=0&destinations=all
POST /route/v1/optimise   # up to 200 stops

Isochrones

Time or distance contours, returned as GeoJSON polygons, up to eight bands per request.

PMTiles

A single-file tile archive readable over HTTP range requests. Put the file on any static host — object storage, a CDN, a USB stick — and it works without a tile server.

bash
# serve straight from object storage, no server needed
https://your-bucket.example/planet-20260803.pmtiles

# MapLibre reads it directly with the pmtiles protocol
protocol://https://your-bucket.example/planet.pmtiles

Containers

bash
docker compose up -d   # tileserver + nominatim-style geocoder + osrm

# resource guidance for a planet install
#   tiles      : 120 GB disk, 4 GB RAM
#   geocoding  : 900 GB disk, 64 GB RAM
#   routing    : 400 GB disk, 128 GB RAM per profile