---
title: "`GET /territories/{id}/{version}/layers/{addr}/{file}`: a content-addressed layer blob, streamed with a strong BLAKE3 ETag, single-range `Range` support and immutable cache headers."
method: GET
path: "/territories/{id}/{version}/layers/{addr}/{file}"
tags: ["territories"]
---

# \`GET /territories/{id}/{version}/layers/{addr}/{file}\`: a content-addressed layer blob, streamed with a strong BLAKE3 ETag, single-range \`Range\` support and immutable cache headers.

`GET /territories/{id}/{version}/layers/{addr}/{file}`

## Request

- Base URL: `https://api.mapmap.ai`
- URL: `https://api.mapmap.ai/territories/{id}/{version}/layers/{addr}/{file}`
- Auth: one of:
  - HTTP bearer
  - API key in query parameter `api_key`

Unlike the small metadata routes, layer blobs are ~1 GB each, so they
are byte-metered against the calling identity's monthly download
allowance ([`DownloadMeter`]). Provisional keys are blocked (403);
operator (`admin`) keys, which carry no identity, are not metered.

## Path parameters

- `id` string, required
- `version` string, required
- `addr` string, required
- `file` string, required

## Response `200`

The layer blob (tar + zstd)

## Other responses

- `206`: Partial content for a Range request
- `304`: Not modified
- `402`: Monthly offline-download allowance exhausted; body carries a machine-readable `download_allowance_exceeded` upgrade pointer
- `403`: Provisional key: territory downloads require a verified account
- `404`: Unknown territory, version or blob
- `416`: Unsatisfiable Range

---

[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)
