# Fejlkatalog

`GET /v1/errors` · Åbne endpoints

Alle HTTP-statusser, API’et kan svare med, opdelt i fejltyper, med hvad du skal gøre ved hver — maskinlæsbart og uden nøgle.

Kataloget er den samme liste, som [Fejl og statuskoder](https://grundfast.dk/docs/fejl) viser, og som API’et selv er kontrolleret imod: en ny fejlstatus kan ikke tages i brug, uden at den står her. Brug det fx til at bygge din egen retry-logik eller til at vise en forståelig besked.

Hver post har `status`, en stabil `type`, en kort engelsk `title`, en dansk `beskrivelse`, `retry` (`nej`, `retry-after`, `backoff` eller `senere`), `taeller_i_kvote` og et `eksempel` på fejlteksten. Selve fejlsvaret er stadig kun `{ "error": "…" }` — `type` er katalogets nøgle, ikke et felt i svaret. Svaret må caches i en time.

**Godkendelse:** Ingen — åbent endpoint

**Afregning:** Gratis og uden nøgle; begrænset til 60 kald i minuttet pr. IP-adresse.

## Eksempel

```bash
curl "https://api.grundfast.dk/v1/errors"
```

## Svar (200)

```json
{
  "antal": 18,
  "fejl": [
    {
      "status": 400,
      "type": "invalid_request",
      "title": "Bad Request",
      "beskrivelse": "Ugyldig forespørgsel: forkert BFE- eller UUID-format, en manglende eller for kort parameter, et koordinat uden for Danmark, en ugyldig `asOf`, `srid`, `cirkel` eller `polygon`, eller et body, der ikke passer til skemaet.",
      "retry": "nej",
      "taeller_i_kvote": true,
      "eksempel": "invalid BFE number"
    },
    {
      "status": 401,
      "type": "invalid_api_key",
      "title": "Unauthorized",
      "beskrivelse": "Nøglen mangler, er ugyldig, udløbet eller tilbagekaldt. Svaret bærer en `WWW-Authenticate`-header, der beskriver formatet.",
      "retry": "nej",
      "taeller_i_kvote": false,
      "eksempel": "invalid API key"
    },
    {
      "status": 402,
      "type": "plan_required",
      "title": "Payment Required",
      "beskrivelse": "Funktionen er ikke med i din plan. Batch og webhooks kræver Pro; eksport og historik (`asOf` og `/historik`) kræver Scale. Beskeden nævner den plan, der skal til.",
      "retry": "nej",
      "taeller_i_kvote": false,
      "eksempel": "this feature requires the Pro plan or higher; …"
    }
  ],
  "meta": {
    "kilde": "Grundfast",
    "grundfast_version": "0.1.0"
  }
}
```

## Vigtige felter

| Felt | Type | Betydning |
| --- | --- | --- |
| `fejl[].status` | integer | HTTP-statussen. Samme status kan have flere fejltyper, fx 429. |
| `fejl[].type` | string | Fejltypens stabile nøgle, fx `quota_exceeded` eller `rate_limited`. |
| `fejl[].retry` | 'nej' \| 'retry-after' \| 'backoff' \| 'senere' | Om og hvordan du prøver igen: aldrig uændret, efter `Retry-After`, med eksponentiel backoff, eller når forudsætningen er opfyldt. |
| `fejl[].taeller_i_kvote` | boolean | Om et svar af denne type bruger en enhed af månedens kvote. |

## Fejl

| Status | Betydning |
| --- | --- |
| 429 | Mere end 60 kald i minuttet fra samme IP-adresse. Se `Retry-After`. |
