---
title: "Measured height of every building on a property (BFE)"
method: GET
path: "/v1/dhm/bygninger/{bfe}"
---

# Measured height of every building on a property (BFE)

`GET /v1/dhm/bygninger/{bfe}`

## Request

- Base URL: `https://api.grundfast.dk`
- URL: `https://api.grundfast.dk/v1/dhm/bygninger/{bfe}`
- Auth: one of:
  - HTTP bearer
  - API key in query parameter `token`

## Path parameters

- `bfe` integer, required

## Response `200`

OK

- DhmBygningshoejder
  - `bfe_nummer` number, required
  - `system` 'DVR90', required
  - `metode` object, required
    - `tag` 'p95', required
    - `terraen` 'median', required
    - `hoejde` 'tag_m - terraen_m', required
    - `tagflade` 'ransac_planfit', required
  - `antal` number, required
  - `bygninger` object[], required
    - `bbr_uuid` string, required
    - `hoejde_m` number, nullable, required
    - `hoejde_maalt` boolean, required
    - `hoejde_kilde` 'DHM', nullable, required
    - `tag_m` number, nullable, required
    - `tag_middel_m` number, nullable, required
    - `terraen_m` number, nullable, required
    - `terraen_min_m` number, nullable, required
    - `terraen_max_m` number, nullable, required
    - `antal_celler` number, required
    - `celle_m` number, nullable, required
    - `aarsag` 'ingen_geometri' | 'ingen_data' | 'upstream_fejl' | 'uden_for_budget' | 'negativ_hoejde', nullable, required
    - `tag` object, required: The roof fitted from the DSM cells inside the footprint. tagform is a MEASUREMENT or null — never guessed from byggeår or BBR roof material — and a null carries an aarsag: draw a flat massing and say so rather than printing "valmtag" over a fit that was really a tree. kip_retning_grader is the ridge bearing in degrees clockwise from north, in [0,180) because a ridge is undirected (0 = a north-south ridge); it is null for a flat roof, which has none. fald_retning_grader is the other half of that: the DOWN-slope bearing of the dominant face in [0,360), so an ensidig roof can be drawn at all (a ridge bearing leaves its two mirror images identical) and a saddeltag says which way its main slope faces. haeldning_grader is the cell-weighted mean pitch of the faces that define the form, and tagfod_m the lowest height those same faces reach over terraen_m — the same denominator hoejde_m uses — not the lowest raw cell, and not the lowest of every face fitted: an annex or lean-to inside the same BBR building is roof, but it is not the form named above it. tagfod_m stays the least robust number here — a minimum over one face, where the pitch is a mean and the height a percentile — so a plane grazing a lower annex past its own eave reads metres low. The rest catch it: a face climbs half the footprint span across kip_retning_grader (all of it under an ensidig fall), so pitch and span already bound the roof, and where hoejde_m - tagfod_m sits far above that bound, prefer the geometry. konfidens (0-1) is a heuristic score, not a probability: how much of the roof the named faces explain, damped by how well they explain it. antal_celler is the count the fit was actually made from, after outlier rejection.
      - `tagform` 'fladt' | 'ensidig' | 'saddeltag' | 'valm', nullable, required
      - `kip_retning_grader` number, nullable, required
      - `fald_retning_grader` number, nullable, required
      - `haeldning_grader` number, nullable, required
      - `tagfod_m` number, nullable, required
      - `konfidens` number, required
      - `antal_celler` number, required
      - `aarsag` 'ingen_geometri' | 'ingen_data' | 'upstream_fejl' | 'uden_for_budget' | 'for_faa_celler' | 'usikker_fit', nullable, required
  - `ufuldstaendig` boolean, required
  - `attribution` string, required
  - `meta` object, required
    - `kilde` string, required
    - `grundfast_version` string, required

## Other responses

- `400`: Error
- `401`: Error
- `404`: Error
- `429`: Error
- `502`: The elevation coverage could not be reached for ANY of the property's buildings. A partial fault is reported inside a 200 instead: those buildings carry hoejde_m:null with aarsag:"upstream_fejl" and ufuldstaendig:true.
- `503`: DHM or the GeoDanmark footprint source is not configured for this deployment.

---

[API](https://skmtc.dev/grundfast/apis/grundfast-api.md) · [All operations](https://skmtc.dev/grundfast/apis/grundfast-api/llms.txt) · [OpenAPI document](https://skmtc.dev/grundfast/apis/grundfast-api/revisions/ccef6e299bb5?raw)
