climatememory ontwikkelaars

API-referentie

Weer-API

Wereldwijde verwachtingen tot 15 dagen van het ECMWF en de nationale hogeresolutiemodellen, terreingecorrigeerd naar uw werkelijke maaiveldhoogte. Eén scope — meteo — dekt deze hele pagina.

Verwachting#

GEThttps://api.climatememory.com/v1/forecastscope: meteo1 credit

Uurlijkse en dagelijkse verwachting voor een willekeurige coördinaat.

Parameters

ParameterTypeStandaardBeschrijving
latfloatBreedtegraad, −90 tot 90. Verplicht.
lonfloatLengtegraad, −180 tot 180. Verplicht.
daysint71 tot 16 worden aanvaard, maar de geleverde horizon is 15 dagen, dus een 16 levert 15 op. De dagen 11 tot 15 zijn een trend, geen verwachting — zie hieronder.
elevationfloat (m)Werkelijke maaiveldhoogte van uw punt. Geef die op en de temperatuur wordt gecorrigeerd voor het verschil met het afgevlakte terrein van het model. In heuvelland doorgaans 1 tot 3 °C waard.
timezoneIANA zoneUTCDe zone waarop de dagaggregaten worden afgesneden, en de verschuiving die elk tijdstempel terugdraagt.
hourlycsvallDeelverzameling van de uurvelden, om de payload te verkleinen. De namen zijn die uit de veldreferentie.
include_dailybooltrueHet dagblok meesturen.

Antwoord

{
  "latitude": 48.85,
  "longitude": 2.35,
  "timezone": "Europe/Paris",
  "grid": {
    "latitude": 48.85, "longitude": 2.35,
    "distance_km": 0.42, "resolution_km": 1.3
  },
  "elevation": {
    "applied": true,
    "model_elevation_m": 91.0,
    "location_elevation_m": 113,
    "temperature_offset_c": -0.14
  },
  "source": {
    "model": "mf_arome",
    "model_run": "20260801T00Z",
    "reference_time": "2026-08-01T00:00:00+00:00",
    "data_age_hours": 3.95,
    "stale": false,
    "attribution": "Data: Météo-France (etalab-2.0)"
  },
  "hourly": {
    "time": ["2026-08-01T00:00:00+02:00", "..."],
    "temperature_2m": [18.1, 17.9, 17.6, "..."],
    "apparent_temperature": [17.4, "..."],
    "weather_code": [0, 1, 2, "..."]
  },
  "daily": {
    "date": ["2026-08-01", "..."],
    "temperature_2m_max": [26.6, "..."],
    "temperature_2m_min": [16.2, "..."],
    "precipitation_sum": [0.0, "..."],
    "uv_index_max": [7.6, "..."],
    "sunrise": ["2026-08-01T06:24:00+02:00", "..."],
    "sunset": ["2026-08-01T21:24:00+02:00", "..."],
    "daylight_hours": [15.0, "..."]
  }
}

Het grid-blok is het lezen waard. distance_km vertelt u hoe ver het midden van de modelcel van het gevraagde punt ligt, en resolution_km hoe grof die cel is. Samen geven ze aan hoe letterlijk u de getallen moet nemen: 0,4 km vanaf een cel van 1,3 km is uw straat; 12 km vanaf een cel van 28 km is uw regio.

Het elevation-blok zegt wat er is gedaan, niet wat er is gevraagd. applied: false betekent dat er geen correctie heeft plaatsgevonden — u hebt geen elevation meegegeven, of het terrein van het model kwam al overeen. Ga er nooit van uit dat de correctie is uitgevoerd alleen omdat u erom hebt gevraagd.

De payload verkleinen

Het volledige uurblok over 15 dagen is ongeveer 32 velden × 360 uur. Als u er drie uitzet, vraag er dan drie op:

GET /v1/forecast?lat=48.85&lon=2.35&days=3
    &hourly=temperature_2m,precipitation,weather_code
    &include_daily=false

Dezelfde prijs — de kosten zitten in het lezen van het archief, niet in het serialiseren — maar een tiende van de bytes en merkbaar sneller te verwerken op een telefoon.

Verwachting per stad#

GEThttps://api.climatememory.com/v1/forecast/city/{country}/{slug}scope: meteo1 credit

Hetzelfde antwoord, opgelost via de stedencatalogus.

Geef hieraan de voorkeur boven ruwe coördinaten waar dat kan. De catalogus levert twee dingen die een coördinaat niet kan geven: de werkelijke hoogte van de stad, zodat de terreincorrectie werkt zonder dat u die opgeeft, en haar tijdzone, zodat de dagaggregaten op de juiste lokale dag worden afgesneden.

GET /v1/forecast/city/dz/alger      # Franse slug
GET /v1/forecast/city/dz/algiers    # Engelse slug — dezelfde stad
GET /v1/forecast/city/fr/paris

country is een ISO-3166-1 alpha-2-code in kleine letters. slug is ongevoelig voor accenten: bejaia vindt Béjaïa. Een onbekende slug geeft 404 city_not_found met een suggestions-array — toon die in plaats van een doodlopend spoor.

Alle queryparameters van /v1/forecast gelden nog steeds, behalve lat, lon en elevation, die de catalogus levert. timezone meegeven overschrijft die van de stad, wat vrijwel nooit is wat u wilt.

Codeer geen geraden slugs hard in. Los de naam één keer op via /v1/geocode, sla het land en de slug op die teruggegeven worden, en gebruik die. Geocodering kost geen credits, dus het netjes doen is gratis.

Actuele omstandigheden#

GEThttps://api.climatememory.com/v1/currentscope: meteo1 credit

De omstandigheden op dit moment voor een coördinaat, geïnterpoleerd tussen twee modelstappen.

GEThttps://api.climatememory.com/v1/current/city/{country}/{slug}scope: meteo1 credit

Hetzelfde, via de stedencatalogus.

Temperatuur, luchtvochtigheid, wind en druk worden lineair geïnterpoleerd naar het huidige moment, tussen de twee modelstappen die het omsluiten.

Neerslag wordt niet geïnterpoleerd, en dat is opzet. Een uurlijkse neerslagwaarde is een som over een interval, geen aflezing op een moment. Die interpoleren zou regen verzinnen in een minuut die het model in een ander uur had gelegd. U krijgt in plaats daarvan de waarde van de omsluitende stap — een echt getal over een echt interval.

Gebruik dit voor een „op dit moment”-weergave. Voor alles wat u door de tijd heen vergelijkt, gebruik /v1/forecast en lees het uur dat u wilt: de reeks is stabiel, terwijl nu tussen twee aanroepen onder u wegschuift.

Veldreferentie#

GEThttps://api.climatememory.com/v1/fieldsgeen sleutel nodig0 credits

Dezelfde tabel als JSON, met eenheden en welke velden standaard zijn. Geen sleutel nodig.

Uurvelden

21 daarvan komen standaard terug. De rest is voor u zodra u erom vraagt — noem ze in hourly=, door komma's gescheiden — en ze worden achtergehouden vanwege de kosten, niet uit twijfel: elk opgeslagen veld is een aparte gecomprimeerde leesbewerking, zodat een standaardantwoord met alle 45 elke aanroeper zou laten betalen voor de enkelingen die de sneeuwdikte willen.

GET /v1/forecast?lat=45.19&lon=5.72&hourly=temperature_2m,snow_line_altitude,soil_temperature_8cm

Een veld dat een model niet publiceert komt terug als null voor het deel van de verwachting van dat model, in plaats van uit het antwoord te verdwijnen — zodat een keten die op AROME begint en op ICON-EU doorloopt visibility van begin tot eind teruggeeft, null voor de eerste 51 uur. Een onbekende veldnaam levert een 400 unknown_field op, met de dichtstbijzijnde overeenkomst als suggestie; vroeger werd hij stilzwijgend genegeerd.

VeldEenheidOpmerkingen
temperature_2m°CTerreingecorrigeerd wanneer de hoogte bekend is
apparent_temperature°CSteadman-formulering; geldig over het hele bereik
relative_humidity_2m%
dewpoint_2m°C
precipitationmmSom over de stap, gedecumuleerd
precipitation_probability_proxy%Heuristiek, geen ensemblekans. Zie hieronder.
weather_codeWMOPictogramcode, gedrempeld op mm/u en niet op de som van de stap
cloud_cover%
wind_speed_10mm/s
wind_direction_10m°Richting waaruit de wind waait
wind_gust_10mm/sMaximum over de stap
pressure_mslhPaHerleid tot zeeniveau
surface_pressurehPaOp de hoogte van de locatie
shortwave_radiationW/m²Gemiddelde over de stap
uv_index0–11+Geschat. Zie hieronder.
capeJ/kgOnweerspotentieel
is_day0/1
visibilitymAlleen ICON-EU en ICON-D2
cloud_cover_low%Alleen ICON-modellen
cloud_cover_mid%Alleen ICON-modellen
cloud_cover_high%Alleen ICON-modellen
precipitation_typeWMOAlleen ECMWF Vraag het op in hourly=
snow_depthmWat er ligt, niet wat er valt. Alleen ICON Vraag het op in hourly=
snow_water_equivalentmmWat het sneeuwdek bij smelten oplevert. Alleen ICON Vraag het op in hourly=
snow_line_altitudemZie sneeuw. ICON-EU en ICON-D2 Vraag het op in hourly=
freezing_level_altitudem0 °C-isotherm. Alleen ICON Vraag het op in hourly=
soil_temperature_0cm°COppervlak. Alleen ICON globaal en ICON-EU Vraag het op in hourly=
soil_temperature_8cm°CWortelzone, laag 7–28 cm. Alleen ICON globaal en ICON-EU Vraag het op in hourly=
shortwave_radiation_directW/m²Directe component. Alleen ICON Vraag het op in hourly=
shortwave_radiation_diffuseW/m²Diffuse component. Alleen ICON Vraag het op in hourly=
solar_elevation°Berekend uit het tijdstempel en de coördinaat Vraag het op in hourly=
solar_azimuth°Berekend uit het tijdstempel en de coördinaat Vraag het op in hourly=
temperature_2m_max°COver de stap, waar het model het publiceert Vraag het op in hourly=
temperature_2m_min°COver de stap, waar het model het publiceert Vraag het op in hourly=
skin_temperature°CBodemoppervlak, niet de lucht Vraag het op in hourly=
heat_index°CUS NWS. Geeft onder 27 °C de gewone temperatuur terug Vraag het op in hourly=
wind_chill°CEnvironment Canada. Geeft boven 10 °C de gewone temperatuur terug Vraag het op in hourly=
wind_speed_100mm/sWindenergietoepassingen Vraag het op in hourly=
wind_direction_100m°Vraag het op in hourly=
wind_beaufort0–12Vraag het op in hourly=
cloud_cover_octas0–8Vraag het op in hourly=
snowfallmmWateréquivalent, niet de dikte van verse sneeuw Vraag het op in hourly=
total_column_water_vapourkg/m²Vraag het op in hourly=
pressure_tendencyhPaVraag het op in hourly=
weather_descriptiontekstVraag het op in hourly=

Dagvelden

date, temperature_2m_max, temperature_2m_min, temperature_2m_mean, precipitation_sum, wind_speed_max, wind_gust_max, shortwave_radiation_sum (MJ/m²), uv_index_max, sunrise, sunset, daylight_hours, weather_code.

Geaggregeerd op lokale kalenderdagen, niet UTC. Een gedeeltelijke dag aan een van beide uiteinden van het bereik wordt weggelaten in plaats van gerapporteerd met een misleidend maximum — een verzoek van 7 dagen kan dus gerechtvaardigd 6 dagrijen teruggeven.

Twee velden zijn schattingen, en dat zeggen wij liever dan dat u het ontdekt.

uv_index is afgeleid uit de zonnehoogte en breedbandstraling, niet uit een ozonkolom. Nauwkeurig tot ongeveer ±1 eenheid — genoeg voor „zet een hoed op”, niet voor een medische uitspraak.

precipitation_probability_proxy is een schatting, geen kans. Een deterministisch model heeft geen spreiding om er een uit af te leiden. Het heet _proxy zodat niemand het verwart met het ensembleproduct van /v1/probability, dat wel een echte frequentie over 51 leden is.

Het combineert twee termen. De eerste vraagt of de regen van de cel uw punt bereikt: de opgeslagen intensiteit is een gemiddelde over de hele rastercel, dus bij 28 km — 780 km² — kan een laag gemiddelde een echte bui over een klein deel ervan zijn. Neemt men de subrasterverdeling van intensiteiten als een Weibull-verdeling, met een vorm bepaald door de celgrootte en het modelgemiddelde zelf, dan volgt in gesloten vorm de kans dat een punt in de cel 0,1 mm/u overschrijdt. De tweede term begrenst wat een bewolkte, bijna verzadigde hemel mag claimen daar waar het model helemaal geen regen in de cel legt. Beide worden vervolgens gewogen naar hoeveel geloof een run op die termijn verdient, en daarom leest dezelfde regen op dag 9 lager dan op dag 1.

Bijgevolg kan dezelfde plaats bij twee modellen anders uitvallen, en dat hoort ook: een cel van 2,2 km en een van 28 km zijn het werkelijk oneens over wat een laag gemiddelde betekent. Consumenten-apps die één getal noemen verbergen dit.

Modellen en resolutie#

GEThttps://api.climatememory.com/v1/modelsgeen sleutel nodig0 credits

Welke modellen draaien, wat elk dekt, hoe vers elk is. Geen sleutel nodig.

Wij leveren het fijnste model dat zowel uw punt als uw termijn dekt. U kiest er nooit zelf een; de keuze wordt gemeld in source.model, zodat u altijd kunt zien welk model heeft geantwoord.

Hogeresolutiemodellen zijn allemaal kortetermijnmodellen — bij 1 km wordt de atmosfeer binnen twee dagen chaotisch, dus verder vooruit rekenen zou zinloos zijn — en de resolutie daalt daarom trapsgewijs naarmate de verwachting vordert:

dag 0 ─────── dag 2 ─────── dag 5 ───────────────── dag 15
  AROME 1,3 km (Frankrijk)
  ICON-D2 2,2 km (Duitsland, Alpen, Benelux)
  HRRR 3 km (VS en zuidelijk Canada)
              ICON-EU 6,5 km (Europa)
                          ICON 13 km · ECMWF 28 km (globaal)
                                              AIFS (alleen trend)
source.modelModelResolutieRunsHorizon
mf_aromeMétéo-France AROME1.3 km8/dag51 u
dwd_icon_d2DWD ICON-D22.2 km4/dag48 u
noaa_hrrrNOAA HRRR3 km4/dag48 u
dwd_icon_euDWD ICON-EU6.5 km2/dag120 u
dwd_iconDWD ICON13 km2/dag180 u
ecmwf_ifsECMWF IFS28 km2/dag240 u
ecmwf_aifsECMWF AIFS28 km2/dag360 u
ecmwf_waveECMWF wave28 km2/dag240 u

Overgangen aan de rand van een modelgebied worden overvloeid, zodat twee plaatsen aan weerszijden van een grens nooit door een sprong van elkaar afwijken.

De dagen 11 tot 15 zijn een trend, geen verwachting. Op die termijn nadert de vaardigheid de klimatologie. Wij publiceren het omdat ernaar gevraagd wordt; behandel het als richting van ontwikkeling, en als u het toont, zeg dat er dan bij.

/v1/models heeft geen sleutel nodig, waardoor het het juiste endpoint is om vanaf een statuspagina te bevragen of vóór aanschaf te controleren: het meldt de laatste run van elk model en de ouderdom ervan, zodat „is de data vers” te beantwoorden is zonder een credit uit te geven.

Ensemblekansen#

GEThttps://api.climatememory.com/v1/probabilityscope: meteo1 credit

Percentielen en regenkansen uit het ECMWF-ensemble met 51 leden.

Eén enkele verwachting zegt 22 °C op donderdag. Dat is een gok die als feit wordt gepresenteerd. Dit endpoint beantwoordt de vraag waarop u werkelijk beslist: hoe zeker is het, en welke regenkans is het waard om zich op te organiseren.

Het wordt berekend uit het ensemble van het ECMWF — hetzelfde model 50 keer gedraaid vanuit licht verschillende beginvoorwaarden. Waar de runs het eens zijn, is de verwachting zeker. Waar ze uiteenlopen, is de atmosfeer zelf onzeker, en geen enkel model, hoe goed ook, kan u meer vertellen.

{
  "members": 50,
  "hourly": {
    "time": ["2026-08-01T00:00:00+00:00"],
    "temperature_2m_p10": [26.4],
    "temperature_2m_p50": [26.78],
    "temperature_2m_p90": [27.3],
    "temperature_2m_spread": [0.4],
    "precipitation_probability_0_1mm": [10.0],
    "precipitation_probability_1_0mm": [0.0],
    "precipitation_probability_5_0mm": [0.0],
    "precipitation_probability_10_0mm": [0.0],
    "precipitation_p90": [0.1]
  }
}

Hoe u het leest

p10 en p90 omsluiten de middelste 80 % van de leden: één op de tien verwacht het kouder dan p10, één op de tien warmer dan p90. Een spread van 0,4 °C is een gevestigde situatie waarop u kunt vertrouwen; 3 °C betekent dat de modellen het oneens zijn en dat u dat beter aan uw gebruikers kunt zeggen dan er één te kiezen.

De regendrempels zijn beslissingen en geen ronde getallen — 0,1 mm is überhaupt nat, 1 mm is neem een jas mee, 5 en 10 mm zijn dit wordt een probleem. precipitation_p90 is het ongunstige geval: slechts één op de tien leden is natter.

Slechts twee variabelen, temperatuur en neerslag. Bewolking, wind en druk toevoegen zou de bandbreedte van het hele platform verdubbelen voor getallen waarop niemand een beslissing neemt.

Luchtkwaliteit#

GEThttps://api.climatememory.com/v1/air-qualityscope: meteo1 credit

Fijnstof, ozon, NO₂, SO₂, CO en Saharastof, uit Copernicus CAMS.

Dit is het endpoint dat in Noord-Afrika en het Middellandse Zeegebied het zwaarst weegt. Een stofepisode duwt PM10 dagenlang voorbij duizend microgram per kubieke meter, wat eerder een gezondheidsbeslissing is dan een getal, en het wordt slecht gedekt door gratis consumentendiensten.

{
  "current": {
    "pm2_5": 38.7,
    "band": "poor",
    "who_guidelines_ug_m3": {"pm2_5": 15.0, "pm10": 45.0,
                             "nitrogen_dioxide": 25.0, "ozone": 100.0}
  },
  "hourly": {
    "time": ["2026-08-01T00:00:00+00:00"],
    "pm2_5": [38.7], "pm10": [85.8], "ozone": [43.4],
    "nitrogen_dioxide": [19.0], "dust_aod_550nm": [0.24]
  },
  "units": {"pm2_5": "ug/m3", "pm10": "ug/m3", "dust_aod_550nm": "1"}
}

Alle concentraties zijn in µg/m³, de eenheid waarin luchtkwaliteit overal wordt genoemd. dust_aod_550nm is een optische dikte en heeft geen eenheid: boven ongeveer 0,5 is de hemel zichtbaar heiig, boven 1,0 is de zon gedempt.

De kortetermijnrichtwaarden van de WHO reizen in elk antwoord mee, zodat een getal geplaatst kan worden zonder het op te zoeken. band volgt de Europese luchtkwaliteitsindex voor PM2,5: goed, redelijk, matig, slecht, zeer slecht, uiterst slecht.

Sneeuw en de sneeuwgrens#

Vier velden, en ze beantwoorden verschillende vragen. snowfall is hoeveel er valt; de rest beschrijft wat er op de grond ligt, en waar.

Vraag ze bij naam op — ze zitten niet in het standaardantwoord:

GET /v1/forecast?lat=45.19&lon=5.72&hourly=snowfall,snow_depth,snow_water_equivalent,snow_line_altitude,freezing_level_altitude
VeldEenheidWat het u zegt
snow_depthmWat er ligt. Twintig centimeter kan vallen en smelten, of neerkomen op tachtig die er al lagen.
snow_water_equivalentmmWat het bij smelten oplevert. Een halve meter poeder en een halve meter samengepakte sneeuw zijn heel verschillend.
snow_line_altitudemDe hoogte waarboven neerslag als sneeuw valt.
freezing_level_altitudemHoogte van de 0 °C-isotherm, doorgaans enkele honderden meters boven de sneeuwgrens.

De sneeuwgrens is degene die het lezen waard is. „Het regent op 800 m en het sneeuwt op 1200” is iets waar een skigebied, een wegbeheerder of een automobilist naar kan handelen; „3 mm neerslag” niet. Het telt ook in Noord-Afrika — de Atlas heeft skigebieden bij Chréa en Tikjda, en de hoogvlakten van Sétif, Batna en Djelfa liggen boven 1000 m.

Gletsjers melden tientallen meters sneeuwdikte, omdat het model zo permanent ijs weergeeft en niet vanwege een meetfout. De diepste seizoenssneeuw op aarde ligt rond 11 m — beschouw alles daarboven als ijs, niet als weer.

Deze velden komen uit ICON van de DWD, dat de wereld op 13 km dekt. De open data van het ECMWF publiceren de sneeuwdikte maar niet de sneeuwgrens: dit is dus een geval waarin het grovere model het nuttigste is. snow_line_altitude is een regionaal product — ICON-EU en ICON-D2 publiceren het, ICON globaal niet, dus buiten Europa krijgt u de isotherm en de dikte, maar niet de grens zelf.

Zee — zeegang#

GEThttps://api.climatememory.com/v1/marinescope: meteo1 credit

Golfhoogte, -richting en -periode uit het golfmodel van het ECMWF, wereldwijd, tot 10 dagen.

{
  "hourly": {
    "time": ["2026-08-01T00:00:00+00:00"],
    "wave_height": [0.32],
    "wave_direction": [264.3],
    "wave_period": [3.79],
    "wave_peak_period": [4.21]
  }
}

De golfhoogte is de significante golfhoogte — het gemiddelde van het hoogste derde deel van de golven, wat ongeveer overeenkomt met wat een waarnemer op zee meldt. Afzonderlijke golven halen ongeveer het dubbele, en dat is het getal dat telt als u beslist of u uitvaart. De richting is die waaruit de golven komen, net als bij de windrichting.

Een punt op het land geeft 404 not_at_sea terug in plaats van een lijst met nulls. Het golfmodel heeft boven land per constructie geen waarde, en dat zeggen is nuttiger dan een antwoord dat op een storing lijkt. Als u gebruikers een speld laat plaatsen, behandel deze code dan expliciet.

Rivieren#

GEThttps://api.climatememory.com/v1/hydrologyscope: meteo1 credit

Rivierdebiet uit Copernicus GloFAS op een riviernetwerk van 0,05°, tot 10 dagen.

Dit beantwoordt wat geen enkel weermodel kan: niet hoeveel regen er stroomopwaarts valt, maar hoeveel water er hier aankomt — een heel ander getal, van de regen gescheiden door een stroomgebied, een bodemvochttoestand en een dag of twee reistijd.

{
  "disclaimer": "Information only. Only national and regional authorities
                 are authorised to issue flood warnings.",
  "daily": {
    "time": ["2026-08-01T00:00:00+00:00"],
    "river_discharge": [4.953],
    "soil_wetness_index": [0.448]
  }
}
VeldBetekenis
river_dischargeGemiddeld debiet in m³/s over de 24 uur die op dat moment eindigen. Nul betekent dat het model geen rivier in die cel heeft, niet dat een rivier is drooggevallen.
soil_wetness_indexVerzadiging van het stroomgebied, van 0 droog tot 1 verzadigd. Hoge waarden betekenen dat verdere regen afstroomt in plaats van in te zijgen.

Dit is geen hoogwaterwaarschuwing en mag niet als zodanig worden gepresenteerd. De Copernicus-licentie behoudt hoogwaterwaarschuwingen voor aan nationale en regionale overheden binnen hun verantwoordelijkheidsgebied, en dat is de juiste ordening — wie bevoegd is te waarschuwen, is ook wie een weg kan afsluiten en een dorp kan ontruimen.

Debiet in m³/s, ja. Een waarschuwing, een ernstkleur of een opdracht om te handelen, nee, hoe de getallen er die dag ook uitzien. De disclaimer reist mee in elk antwoordlichaam, niet alleen hier, en staat daar zodat hij uw gebruikers bereikt ook als deze pagina dat niet heeft gedaan.