# Hent koter for flere punkter

`POST /v1/dhm/kote:batch` · DHM

Terrænkoter for op til 50 punkter i ét kald — fx hjørnerne af en tegnet bygning og det nærmeste skelpunkt.

Hvert punkt får samme svar som `/v1/dhm/kote`. Punkter på samme grund ligger inden for få meter af hinanden, så ét højderaster besvarer dem alle; det sparer opslag hos kilden, ikke penge.

Giv hvert punkt et `id` (fx "NV" eller "sokkel"), og det sendes retur på både svar og fejl, så du kan parre dem uden at stole på rækkefølgen. Punkter med samme koordinat (afrundet til 1e-6 grader) tælles én gang, og det første `id` beholdes — en lukket ring, der gentager sit første hjørne, koster ikke ekstra.

Alle koordinater valideres, før nogen af dem slås op: ét ugyldigt punkt giver en 400, der navngiver punktet. Et punkt, der ikke kunne besvares, havner i `fejl` — aldrig i `punkter` med en `null`, for inden for ét svar ville de to se ens ud, og kun den ene betyder, at modellen ikke har terræn dér.

**Godkendelse:** `Authorization: Bearer gf_live_…` (eller `gf_test_…`)

**Afregning:** Én enhed pr. unikt punkt, som ved enkeltopslag; kun besvarede punkter afregnes. Kræver ikke en bestemt plan.

## Parametre

| Navn | Placering | Type | Påkrævet | Beskrivelse |
| --- | --- | --- | --- | --- |
| `punkter` | body | object[] | ja | Mellem 1 og 50 punkter, hver `{ lon, lat, id? }` i WGS84-decimalgrader. |
| `punkter[].id` | body | string | nej | Din egen betegnelse for punktet, 1–64 tegn. Ekkoes i svaret og i `fejl`. |

## Request-body

```json
{
  "punkter": [
    {
      "lon": 9.9147,
      "lat": 56.031834,
      "id": "NV"
    },
    {
      "lon": 9.91534,
      "lat": 56.031834,
      "id": "NØ"
    }
  ]
}
```

## Eksempel

```bash
curl -X POST "https://api.grundfast.dk/v1/dhm/kote:batch" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"punkter":[{"lon":9.9147,"lat":56.031834,"id":"NV"},{"lon":9.91534,"lat":56.031834,"id":"NØ"}]}'
```

## Svar (200)

```json
{
  "punkter": [
    {
      "id": "NV",
      "punkt": {
        "lon": 9.9147,
        "lat": 56.031834
      },
      "epsg25832": [
        557000.03,
        6209999.99
      ],
      "terraen_m": 23.9,
      "overflade_m": 35.93,
      "system": "DVR90",
      "system_epsg": 5799,
      "oploesning_m": 0.4,
      "metode": "naermeste_celle",
      "usikkerhed_m": 0.05,
      "meta": {
        "kilde": "Dataforsyningen DHM via Grundfast",
        "grundfast_version": "0.1.0"
      }
    },
    {
      "id": "NØ",
      "punkt": {
        "lon": 9.91534,
        "lat": 56.031834
      },
      "epsg25832": [
        557039.91,
        6210000.52
      ],
      "terraen_m": 23.9,
      "overflade_m": 23.9,
      "system": "DVR90",
      "system_epsg": 5799,
      "oploesning_m": 0.4,
      "metode": "naermeste_celle",
      "usikkerhed_m": 0.05,
      "meta": {
        "kilde": "Dataforsyningen DHM via Grundfast",
        "grundfast_version": "0.1.0"
      }
    }
  ],
  "fejl": [],
  "forespurgt": 2,
  "besvaret": 2,
  "fejlet": 0,
  "meta": {
    "kilde": "Dataforsyningen DHM via Grundfast",
    "grundfast_version": "0.1.0"
  }
}
```

## Vigtige felter

| Felt | Type | Betydning |
| --- | --- | --- |
| `punkter[]` | DhmPunkt & { id } | Ét besvaret punkt i samme form som `/v1/dhm/kote`, plus dit `id` (eller `null`). |
| `fejl[]` | { id, punkt, error } | Punkter, der ikke kunne besvares. De optræder aldrig i `punkter`. `error` er `upstream DHM error`, når højdemodellen fejlede for punktet, eller en besked om, at kaldet løb tør for tid, før punktet blev hentet — begge kan prøves igen. |
| `forespurgt` | integer | Antal unikke punkter efter sammenlægning af dubletter. |
| `besvaret / fejlet` | integer | Hvor mange der landede i henholdsvis `punkter` og `fejl`. |

## Fejl

| Status | Betydning |
| --- | --- |
| 400 | Body’en er ikke `{ punkter: [{ lon, lat, id? }] }`, har 0 eller over 50 punkter, eller et punkt ligger uden for Danmark. Fejlen navngiver punktet. |
| 401 | Nøglen mangler eller er ugyldig. |
| 429 | Burst-grænsen eller månedskvoten er nået. Se `Retry-After`. |
| 502 | Ikke ét eneste punkt kunne besvares. Delvise fejl er en 200 med punkterne i `fejl`. |
| 503 | DHM-kilden er ikke konfigureret i dette miljø. |
