Reloquent
DOCS · RMT · MAP TILE API

RMT documentation

Base URL https://tiles.reloquent.ai. Routes are unversioned — there is no /v1/ prefix here; that belongs to RLQ. Every response is CORS-permissive; browser access control is the per-key origin allow-list, not the CORS header.

Quickstart

Point MapLibre — or any client that reads standard vector tiles — at a style URL. Nothing to host, nothing to build.

MAPLIBRE
import maplibregl from "maplibre-gl";

new maplibregl.Map({
  container: "map",
  style: "https://tiles.reloquent.ai/styles/outdoor/style.json?key=YOUR_RMT_KEY",
});

// Same URL, this viewer's preferences:
//   ?theme=dark      light | dark        (default light)
//   ?units=metric    imperial | metric   (default imperial)

Styles

One stock family, outdoor, wiring every tileset together, served in four variants from one URL. The family is the identity; theme and units are the viewer's preference, so they travel in the query rather than the path.

PARAMETERVALUESDEFAULT
theme light · dark light
units imperial · metric imperial

Values are lowercase with no aliases: an unrecognized one is refused with 400 rather than quietly defaulting. Switching theme only repaints — it fetches no new tiles. Switching units changes which contour tileset is fetched, so it does cost tiles against your cap. Stock styles are served with every overlay present; to ship a map with only some, use a Map.

Maps

A Map is a named, server-side style configuration bound to your account: a default theme, a default units, and the set of overlays — contours, terrain, public-lands, mvum, gtlf, native-lands. Create and edit them in the dashboard; serve one from /maps/{id}/style.json?key=.... Theme and units can still be overridden per request; overlays are fixed by the Map, and the tiles for excluded overlays are never fetched, so they never touch your cap. Changing the configuration takes effect without redeploying your client. Three Maps on the free tier, 25 on paid tiers.

Authentication and origins

Append ?key=rmt_live_... — necessary for a style URL, because the map client fetches tiles, glyphs and sprites itself and cannot attach headers. Every route also accepts Authorization: Bearer rmt_live_... if you are fetching server-side and would rather keep the key out of a URL. The catalog at / is public.

A browser key is visible to anyone who opens the page, so restrict it: each key carries an allow-list of up to 10 hostnames, exact (example.com) or wildcard-suffixed (*.example.com, which matches app.example.com but not the bare domain). An empty list allows any origin. A request with no Origin or Referer at all — a server-to-server caller — is allowed regardless of the list. Edit the list in the dashboard.

Routes

ROUTEWHAT IT DOES
GET / The catalog — every tileset and style family available to you. Needs no key.
GET /styles/{family}/style.json A stock MapLibre style. One family today: outdoor. Takes theme and units.
GET /maps/{id}/style.json A Map you configured in the dashboard — your stored defaults, overridable with the same two parameters.
GET /{tileset}.json TileJSON for one tileset, including its layers and declared extent.
GET /{tileset}/{z}/{x}/{y}.{ext} A tile. pbf for vector tilesets, png for terrain-rgb.
GET /fonts/... · GET /sprites/... Glyphs and sprites, referenced automatically by the styles.

Tilesets

TILESETWHAT IT IS
v3 Vector · zoom 0–14 · planet. OpenMapTiles schema with the fork's additions: ele_ft on peaks and aerodromes, surface, access, 4wd_only on roads.
contours-imperial · contours-metric Vector · zoom 9–14. One layer, contour, with elevation in the tileset's unit and is_index on the emphasized line. 40 ft and 10 m intervals.
terrain-rgb Raster · zoom 0–12. Mapbox Terrain-RGB encoding; use it as a raster-dem source for hillshade and 3D terrain.
public-lands · mvum · gtlf · native-lands Vector overlays · zoom 4–14 (public-lands, native-lands) and 8–14 (mvum, gtlf). Upstream field names preserved verbatim.

Terrain in your own style

The stock style already ships hillshade and 3D terrain. To use the DEM in a style of your own, add terrain-rgb as a raster-dem source.

MAPLIBRE
map.addSource("dem", {
  type: "raster-dem",
  tiles: ["https://tiles.reloquent.ai/terrain-rgb/{z}/{x}/{y}.png?key=YOUR_RMT_KEY"],
  tileSize: 512,
  maxzoom: 12,
});
map.setTerrain({ source: "dem", exaggeration: 1.7 });

Metering and caching

The metered unit is one tile request: any request that reaches the tile route and is served counts once, including empty tiles and not-modified responses. Denials are never counted. Styles, TileJSON, fonts and sprites are never counted. Requests served from a client-side or CDN cache never reach us, so a repeat viewer costs far fewer requests than a first-time one. Usage is rolled up about every 15 minutes, so the dashboard meter and the moment a cap trips can lag traffic by that much.

Tiles from a stable archive carry Cache-Control: public, max-age=86400; empty tiles in regions still filling in, and documents (index, TileJSON, styles, fonts, sprites), carry one hour; a Map document carries 60 seconds. Tile responses carry a weak ETag — send it back as If-None-Match for a 304. HEAD is supported on every route.

Errors

STATUSWHEN
401 missing_key No key on the request.
401 invalid_key The key is unknown, expired or revoked.
403 origin_forbidden A browser request from an origin outside the key's allow-list, or with an origin header that cannot be parsed.
429 over_cap The key is over its monthly tile cap; Retry-After says when it resets.
204 Not an error: an empty tile — outside coverage, or a region still being built. It becomes a real tile when that region publishes.

If our key store is ever unavailable, requests are served anonymously rather than denied: an outage on our side will never be why your map goes blank.

Coverage today

LAYERCOVERAGE
Base map (v3) Planet, zoom 0–14.
Contours United States including Alaska and Hawaii, Mexico, and Canada except a band from roughly 51°N to 56°N between British Columbia and Quebec, which is not yet published.
Terrain-RGB United States including Alaska and Hawaii, plus Canada and Mexico.
Overlays United States, national.

bounds in TileJSON is the declared extent, not a coverage map: outside real coverage you get 204 (or a flat sea-level tile on the DEM tilesets), not a 404, and it becomes a real tile when that region publishes.

Attribution