API – frie data om sol og måne

Alle beregninger på dette site er tilgængelige som et frit JSON-API. Ingen nøgle, ingen registrering, ingen kvote. Det er de samme funktioner, der driver siderne, så et svar herfra og et tal på en byside kan ikke være uenige.

To endpoints

Begge tager lat, lng og valgfrit date (format YYYY-MM-DD; udelades den, bruges dagen i dag).

GET /api/v1/sun?lat=55.6761&lng=12.5683
GET /api/v1/moon?lat=55.6761&lng=12.5683&date=2027-06-21

Eksempel på svar

Et kald til /api/v1/sun for København:

{
  "location": { "latitude": 55.6761, "longitude": 12.5683,
                 "timezone": "Europe/Copenhagen" },
  "date": "2026-08-06",
  "sunrise": { "local": "05:25", "utc": "2026-08-06T03:25:23Z" },
  "sunset":  { "local": "21:08", "utc": "2026-08-06T19:08:30Z" },
  "dayLength": { "text": "15 timer 43 minutter", "seconds": 56587 },
  "civilTwilight": { "dawn": "04:39", "dusk": "21:54" },
  "goldenHour": { "morning": "06:19", "evening": "20:14" },
  "polarState": null
}

Solendpointet giver desuden solens højde i zenit, om solen er oppe netop nu, og polarState, som er "day" eller "night" nord for polarcirklen. Måneendpointet giver måneopgang, månenedgang, fase, belysningsgrad, månens alder i døgn, afstanden i kilometer og flag for supermåne, mikromåne og blå måne.

Hvorfor både lokal tid og UTC

Hvert tidspunkt gives to gange: som klokkeslæt i stedets egen tidszone og som et ISO-tidspunkt i UTC. Klokkeslættet er det, et menneske skal se; UTC-tidspunktet er det, en maskine skal sammenligne. Et bart «05:25» uden zone er en fejlkilde, og vi vil hellere sende to felter end lade dig gætte.

Når et tidspunkt er null

Nord for polarcirklen står solen ikke nødvendigvis op. Er der midnatssol eller mørketid, er sunrise og sunset null, og polarState fortæller hvilken af delene der er tale om. Det samme gælder månen, hvor alwaysUp og alwaysDown markerer døgn, hvor den slet ikke krydser horisonten. Et manglende tidspunkt er altså information, ikke en fejl.

Grænser

  • lat mellem −90 og 90, lng mellem −180 og 180.
  • Datoer fra år 1900 til 2200.
  • Kun GET. CORS er åben, så kald direkte fra en browser virker.
  • Ugyldige parametre giver 400 med en forklarende hint frem for et tomt svar.

Nøjagtighed og kildeangivelse

Hvert svar indeholder et source-felt med hvad der har beregnet tallet, hvilken uafhængig efemeride det er kontrolleret mod, hvornår, og hvor mange tal kontrollen dækkede. Metoden og dens grænser står på nøjagtighed og verifikation, og selve beregningen er beskrevet på sådan beregner vi tiderne.

Data er frit tilgængelige under CC BY 4.0. Brug dem til hvad du vil, også kommercielt — krediter kilden med et link.

Ofte stillede spørgsmål

Kræver det en nøgle eller registrering?

Nej. Der er ingen nøgle, ingen registrering og ingen kvote. Svarene caches aggressivt, fordi resultatet for et givet koordinat og en given dato aldrig ændrer sig, så gentagne kald belaster ingenting.

Må jeg bruge data i mit eget projekt?

Ja, også kommercielt. Data er stillet til rådighed under CC BY 4.0, hvilket betyder at du må bruge og viderebearbejde dem, når du krediterer kilden med et link. Hvert svar indeholder selv licens og kildeangivelse i feltet source.

Er tallene de samme som dem, sitet viser?

Ja, bogstaveligt talt. Endpointet kalder de samme funktioner som siderne, så et svar fra API'et og den viste tid på en byside kan ikke være uenige. Det er testet ved at sammenligne de to for flere byer.