---
operation_id: list_terrain_datasets
method: GET
path: /v1/terrain/datasets
summary: Liste verfügbarer DGM1-Terrain-Datensätze (pro BL)
tags: [terrain]
stability: stable
since_version: 0.1.0
auth: none
data_product: terrain
snapshot_aware: true
attribution_block: false
rate_limit_tier: public
related:
  - /v1/terrain/elevation
  - /v1/terrain/profile
  - /v1/terrain-mesh/datasets
---
# `GET /v1/terrain/datasets` — Terrain-Coverage-Discovery

Liefert eine Zeile pro Bundesland mit dem jüngsten DGM1-Snapshot. Pendant zu `/v1/datasets` für LoD2 — beantworte „welche BL sind live", bevor du Punkt- oder Linienabfragen issuest.

## Examples

### curl

```bash
curl -s https://api.lodapi.de/v1/terrain/datasets | jq '.datasets[] | {bl: .bl, snap: .snapshot, count: .tile_count, lic: .license}'
```

### Python — Coverage-Check

```python
import httpx
covered = {d["bl"] for d in httpx.get("https://api.lodapi.de/v1/terrain/datasets").json()["datasets"]}
print(f"Terrain live in: {sorted(covered)}")
```

## Parameters

Keine.

## Response

`200 OK · application/json` — Schema `#/components/schemas/TerrainDatasetListResponse`.

```json
{
  "datasets": [
    {
      "bl": "be",
      "license": "dl-de-zero-2.0",
      "snapshot": "2025-12-18",
      "format": "GeoTIFF (COG)",
      "source": "convert+storage-box",
      "tile_count": 297,
      "crs": "EPSG:25833",
      "vertical_datum": "DHHN2016",
      "attribution": "© SenStadt Berlin (DL-DE/Zero 2.0)",
      "coverage_pct": null
    }
  ],
  "count": 5
}
```

### Antwort-Header

| Header | Wert |
|---|---|
| `Cache-Control` | `public, max-age=300` |

## Stolperdrähte

- **`coverage_pct` ist immer null in Phase-2a** — wir liefern ein ehrliches null statt ausgedachte 100.0. Phase-3 (ADR-0009) wird `coverage_polygon` für jedes Dataset berechnen.
- **`source`** unterscheidet zwischen `convert+storage-box` (Lodapi-Konvertierung auf Hetzner-Storage-Box), `r2-mirror` (Mirror auf Cloudflare R2), `pass-through` (live gegen Behörden-Server).
- **CRS pro BL**: westliche BL EPSG:25832 (UTM32N), östliche BL EPSG:25833 (UTM33N). `/v1/terrain/elevation` macht die Transformation automatisch.

## Verwandte Endpoints

- [`GET /v1/terrain/elevation`](./get-terrain-elevation.md) — Punktabfrage.
- [`GET /v1/terrain/profile`](./get-terrain-profile.md) — Linienprofil.
- [`GET /v1/terrain-mesh/datasets`](./list-terrain-mesh-datasets.md) — 3D-Tiles-Mesh-Tilesets (Phase-2-Mesh).