# Go-live-tjekliste for din adresseintegration

> Gå nøgler, grænser, fejlhåndtering, caching, data og overvågning igennem, før din integration med Danadresse går i produktion.
>
> https://danadresse.dk/guides/go-live-tjekliste · verified 2026-11-02
Det meste, der går galt i produktion, er ikke selve kaldene, men det omkring dem: en testnøgle, der kom med i produktion, en nøgle, der ligger i en offentlig side uden domænelås, eller et adressefelt, der bliver tomt, når en grænse rammes.

Listen her samler de punkter, der er værd at tjekke, før du går live. Hvert punkt linker til en guide med detaljerne.

## Nøgler

- **Brug en live-nøgle.** Testnøgler (`dawa_test_…`) tælles pr. IP-adresse på gratisplanens niveau, og de kan ikke kalde `/api/v1/enrich/…`. Se [Testnøgler og sandbox](/guides/testnoegler-sandbox).
- **Én nøgle pr. miljø og tjeneste.** Så kan du rotere eller tilbagekalde én uden at ramme de andre, og du kan se i dashboardet, hvilken der bliver brugt.
- **Nøglen ligger i et secret-lager**, ikke i koden og ikke i Git. Se [Rotér API-nøgler](/guides/roter-noegler).
- **Nøgler i websider er låst til dine domæner** under **Tilladte domæner**. Husk både `firma.dk` og `www.firma.dk`. Se [Browsernøgler og tilladte domæner](/guides/browser-noegler-domaener).
- **Serverkode sender nøglen i headeren** `X-Api-Key`, ikke som `api_key` i URL'en.

## Grænser

- **Du kender dit forventede forbrug** pr. måned og pr. minut og har valgt en plan, der passer. Se planerne på [forsiden](/#pricing).
- **På Hobby er kvoten et loft.** Efter 2 000 kald får du svar fra en buffer op til 2 400 kald (headeren `X-Quota-Grace: true`). Derefter svarer API'et `429 quota_exceeded` resten af måneden.
- **På en betalt plan har du valgt et budgetloft**, hvis merforbruget ikke må løbe frit. Det sættes under [Betaling](/dashboard/billing#budget). Uden loft bliver kald ud over kvoten afregnet som merforbrug.
- **Batchjob holder tempoet** under grænsen pr. minut (360 på Hobby, 1 700 på Basis, 7 000 på Pro). Se [Overvåg forbruget](/guides/overvaag-forbrug#plads-pr-minut).
- **Hele datasættet hentes med replikering**, ikke med tusindvis af enkeltkald. Se [Første udtræk](/guides/replikering-foerste-udtraek).

## Fejlhåndtering

- **Alle kald har en timeout**, fx 10 sekunder.
- **Du prøver kun det igen, der kan lykkes**: `429` på minutgrænsen, `503`, `502`, `504` og netværksfejl, med backoff og `Retry-After`. Aldrig `401`, `403`, `400` eller `quota_exceeded`. Se [Retries og backoff](/guides/retries-og-backoff).
- **Du forgrener på `code`**, ikke på fejlteksten. Se [Fejlformatet](/guides/fejlformat).
- **Brugeren kan komme videre, hvis API'et ikke svarer.** Et adressefelt i en checkout skal kunne udfyldes i hånden, og ordren skal kunne gennemføres.

## Ydelse

- **Autocomplete har debounce** på 150 til 250 ms og afbryder forældede kald. Se [Hjemmebygget DAWA-autocomplete](/guides/migrer-egen-dawa-autocomplete).
- **Opslag, der ikke ændrer sig, bliver cachet**, fx postnumre og kommuner. Fejlsvar caches aldrig. Se [Caching af adresseopslag](/guides/caching).
- **Listekald er pagineret** med `side` og `per_side`. Se [Paginering](/guides/paginering).

## Data

- **Du gemmer adressens id**, ikke kun teksten. Se [Gem adresse-id'et](/guides/gem-adresse-id).
- **Du har en plan for adresser, der bliver nedlagt.** Se [status, darstatus og nedlagte adresser](/guides/status-og-darstatus).
- **Kildeangivelsen står på dine sider**: "Indeholder data fra Klimadatastyrelsen (CC BY 4.0)". Se [Datalicens, kildeangivelse og persondata](/guides/licens-og-gdpr).
- **Kun adressen sendes til API'et**, aldrig navne, e-mails eller telefonnumre.

## Overvågning

- **Du logger `X-RateLimit-Remaining`** og får en advarsel ved 80 procent af månedskvoten. På Hobby advarer du også, når `X-Quota-Grace: true` dukker op: så er kvoten brugt, og bufferen er i gang.
- **Du reagerer på `X-Danadresse-Key-Status`**. Er den sat, er nøglen markeret som mulig lækket.
- **Du ved, hvor driftsstatus står**: [status-siden](/status). Ændringer i API'et står i [changeloggen](/changelog). Spørgsmål og fejl sender du via [support](/support).

## Migreret fra DAWA?

- **Ingen DAWA-adresser er tilbage** i koden eller konfigurationen, og CI fejler, hvis de kommer igen. Se [Find DAWA-kald med migrate-cli](/guides/find-dawa-kald-med-migrate-cli).
- **Du har tjekket listen over kendte forskelle** mod de endpoints og felter, du bruger. Se [Skift fra DAWA](/guides/migrer-fra-dawa#5-kendte-huller).
- **JSONP har nøglen i URL'en**, hvis din frontend bruger `callback`. Et `<script>`-tag kan ikke sende `X-Api-Key`, så brug `api_key` og en domænelåst browsernøgle, eller skift til `fetch`.

## Kør et sidste tjek

Scriptet kører med den nøgle, du vil gå live med. Det advarer, hvis det er en testnøgle, laver ét kald og viser, hvor meget plads der er:

```python id=preflight run=live expect="autocomplete: 200"
import os

import requests

noegle = os.environ["DANADRESSE_API_KEY"]
if noegle.startswith("dawa_test_"):
    print("ADVARSEL: det er en testnøgle. Brug en live-nøgle i produktion.")

r = requests.get(
    "https://api.danadresse.dk/autocomplete",
    params={"q": "Rådhuspladsen 1", "per_side": 1},
    headers={"X-Api-Key": noegle},
    timeout=10,
)
print(f"autocomplete: {r.status_code}")
print("månedskvote:", r.headers.get("X-RateLimit-Limit"), "- tilbage:", r.headers.get("X-RateLimit-Remaining"))
print("pr. minut:  ", r.headers.get("X-RateLimit-Minute-Limit"))
status = r.headers.get("X-Danadresse-Key-Status")
if status:
    print(f"ADVARSEL: nøglen er markeret som {status}")
if r.status_code != 200:
    print(r.text)
    raise SystemExit(1)
```

Når alt er grønt, så kør røgtesten fra [Skift fra DAWA](/guides/migrer-fra-dawa#3-koer-en-roegtest) med de endpoints, din kode bruger.
