---
title: "The read-only status surface: what this box is serving."
method: GET
path: "/status"
tags: ["meta"]
---

# The read-only status surface: what this box is serving.

`GET /status`

## Request

- Base URL: `https://api.mapmap.ai`
- URL: `https://api.mapmap.ai/status`
- Auth: one of:
  - HTTP bearer
  - API key in query parameter `api_key`

Answers JSON, or a self-contained HTML page when the request prefers
`text/html` (a browser). Always 200, even when the backend is
degraded: `/health` is the probe a monitor should watch, and this is
the page an operator reads.

## Response `200`

What this deployment is serving: build, backend, uptime, territories, DEM sources, which optional features are on (booleans only), the number of live keys and today's total metered units. A browser (`Accept: text/html`) gets the same report as a self-contained page. Read-only, no admin actions, and never key material, per-key data or any configured secret

- StatusResponse: `GET /status` response body.
  - `backend` string, required: Name of the routing engine serving requests (`valhalla`, `graphhopper` or `auto`), as `/health` reports it.
  - `build` string, required: Git commit the running image was built from (`SN_BUILD_SHA`), or `unknown`, as `/health` reports it.
  - `features` Features, required: Which optional features this deployment switched on. Booleans only.
    - `admin_boundaries` boolean, required: The administrative-boundary database is configured.
    - `elevation` boolean, required: `POST /elevation` and `POST /elevation/along` are live.
    - `ev_charge` boolean, required: An EV charge-point directory is configured.
    - `fuel_prices` boolean, required: A live fuel-price feed is configured.
    - `geocoding` boolean, required: A geocoding backend is configured.
    - `geocoding_languages` boolean, required: That geocoder has an explicit language list configured.
    - `optimisation` boolean, required: The configured optimisation solver (`SN_OPTIMISER`: VROOM or cuOpt) has its URL, so `POST /optimise` is live.
    - `places` boolean, required: A customer places directory is configured.
    - `pointclouds` boolean, required: A point-cloud payload directory is configured.
    - `safety` boolean, required: Road-safety (camera alert) artefacts are configured.
    - `territories` boolean, required: A territory update channel is configured.
    - `tiles` boolean, required: A tiles directory is configured.
    - `timezone` boolean, required: The timezone boundary database loaded.
    - `traffic` boolean, required: Live traffic coverage artefacts are configured.
    - `voice_clips` boolean, required: Guidance voice clips are live: a clip cache AND something able to synthesise into it (`SN_VOICE_DIR` + `SN_ELEVENLABS_API_KEY` and/or `SN_TTS_URL`). Reported from the built service rather than from the two variables, so "on" means the routes really serve.
  - `keys` KeyCounts, required: API keys, counted only. Never a key, a name or an owner.
    - `active` integer, nullable: Keys that have not been revoked. `null` when the count could not be read.
  - `restriction_grid` RestrictionGridStatus, required: The baked restriction-coverage grid, as this process holds it. `configured` and `loaded` are separate on purpose: a grid annotation is additive and fail-open, so a deployment that set the path and got nothing had no way of finding out short of reading truck responses. Never the path itself, the same rule the rest of this page keeps.
    - `cells` integer, nullable: How many populated cells it holds. `null` when none loaded.
    - `configured` boolean, required: Whether `SN_RESTRICTION_GRID` names a grid.
    - `extent` number[], nullable: The baked extent as `[west, south, east, north]` in WGS84, from the populated cells themselves. `null` when none loaded.
    - `loaded` boolean, required: Whether that grid parsed and is annotating truck routes.
    - `version` integer, nullable: Format version of the loaded grid. `null` when none loaded.
  - `status` string, required: `ok` when the routing backend answers its health probe, `degraded` otherwise. Unlike `/health`, the HTTP status is always 200: this is a page, not a probe, and a monitor should watch `/health`.
  - `terrain` TerrainStatus, required: The declared DEM/terrain sources.
    - `dataset` string, nullable: Operator-declared label for the staged DEM tile set (`SN_ELEVATION_DATASET`), e.g. `mapzen-terrain-tiles`. `null` when undeclared: samples then carry the generic `self-hosted-dem`.
    - `elevation_enabled` boolean, required: Whether the elevation endpoints are live (`SN_ELEVATION_ENABLED`).
    - `resolution_m` number, double, nullable: Operator-declared ground resolution in metres (`SN_ELEVATION_RESOLUTION_M`). `null` is honestly unknown, never a guess.
  - `territories` TerritoryStatus[], required: Territories this box serves, from the update-channel index and the tiles directory. Empty when the deployment publishes neither.
    - `bounds` number[], nullable: `[west, south, east, north]` in WGS84, from the PMTiles header. `null` when the deployment serves no tiles for this territory.
    - `data_updated` string, nullable: ISO-8601 date (`YYYY-MM-DD`) of the OSM extract behind that version. `null` means unknown, never "current".
    - `id` string, required: Territory id, e.g. `uk`.
    - `name` string, required: Display name from the channel index; falls back to the id when the territory is only present as a tiles archive.
    - `package_bytes` integer, nullable: Size in bytes of the latest published package, from the channel index. `null` when the territory is not published there.
    - `tiles` boolean, required: Whether a `<id>.pmtiles` archive is present in the tiles directory, i.e. whether this box can draw the map as well as ship the package.
    - `version` string, nullable: Latest published package version, or `null` for a territory that exists only as a tiles archive.
  - `uptime_s` integer, required: Seconds since this gateway process finished starting.
  - `usage_today` UsageToday, required: Today's metered volume, aggregated. Never per-key.
    - `day` string, required: The UTC day this total covers (`YYYY-MM-DD`).
    - `units` integer, nullable: Metered units recorded across every key today. `null` when the total could not be read.
  - `version` string, required: Gateway crate version, as `/health` reports it.

## Other responses

- `401`: No API key (unless the deployment sets `SN_STATUS_PUBLIC=true`)

---

[API](https://skmtc.dev/mapmap/apis/sn-gateway.md) · [All operations](https://skmtc.dev/mapmap/apis/sn-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/mapmap/apis/sn-gateway/revisions/2293be8b4c38?raw)
