climatememory sviluppatori

Riferimento dell'API

API Meteo

Previsioni mondiali fino a 15 giorni dal CEPMMT e dai modelli nazionali ad alta risoluzione, corrette per il rilievo alla sua quota reale. Un solo scope — meteo — copre l'intera pagina.

Previsione#

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

Previsione oraria e giornaliera per una coordinata qualsiasi.

Parametri

ParametroTipoPredefinitoDescrizione
latfloatLatitudine, da −90 a 90. Obbligatorio.
lonfloatLongitudine, da −180 a 180. Obbligatorio.
daysint7Da 1 a 16 sono accettati, ma l'orizzonte servito è di 15 giorni, quindi un 16 restituisce 15. I giorni da 11 a 15 sono una tendenza, non una previsione — si veda più sotto.
elevationfloat (m)Quota reale del terreno nel suo punto. La fornisca e la temperatura viene corretta per la differenza rispetto al rilievo levigato del modello. In collina vale tipicamente da 1 a 3 °C.
timezoneIANA zoneUTCIl fuso su cui sono tagliati gli aggregati giornalieri, e lo scarto che ogni marca temporale riporta.
hourlycsvallSottoinsieme dei campi orari, per alleggerire il payload. I nomi sono quelli del riferimento dei campi.
include_dailybooltrueIncludere il blocco giornaliero.

Risposta

{
  "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, "..."]
  }
}

Vale la pena leggere il blocco grid. distance_km le dice quanto dista il centro della cella del modello dal punto richiesto, e resolution_km quanto è grossolana quella cella. Insieme indicano quanto alla lettera prendere le cifre: 0,4 km da una cella di 1,3 km è la sua via; 12 km da una cella di 28 km è la sua regione.

Il blocco elevation dice cosa è stato fatto, non cosa è stato chiesto. applied: false significa che nessuna correzione ha avuto luogo — o non ha passato alcuna elevation, oppure il rilievo del modello coincideva già. Non dia mai per scontato che la correzione sia stata applicata solo perché l'ha richiesta.

Alleggerire il payload

Il blocco orario completo su 15 giorni è di circa 32 campi × 360 ore. Se ne rappresenta tre, ne chieda tre:

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

Stesso prezzo — il costo è leggere l'archivio, non serializzarlo — ma un decimo dei byte e un'analisi nettamente più rapida su un telefono.

Previsione per città#

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

La stessa risposta, risolta tramite il catalogo delle città.

Preferisca questo alle coordinate grezze quando può. Il catalogo fornisce due cose che una coordinata non può dare: la quota reale della città, così la correzione per il rilievo si applica senza che lei la fornisca, e il suo fuso orario, così gli aggregati giornalieri sono tagliati sulla giornata locale giusta.

GET /v1/forecast/city/dz/alger      # slug francese
GET /v1/forecast/city/dz/algiers    # slug inglese — stessa città
GET /v1/forecast/city/fr/paris

country è un codice ISO-3166-1 alfa-2 in minuscolo. slug è insensibile agli accenti: bejaia trova Béjaïa. Uno slug sconosciuto restituisce 404 city_not_found con un array suggestions — lo mostri anziché un vicolo cieco.

Tutti i parametri di query di /v1/forecast si applicano ancora, tranne lat, lon ed elevation, che il catalogo fornisce. Passare timezone sovrascrive quello della città, il che non è quasi mai ciò che si vuole.

Non scriva a codice slug indovinati. Risolva il nome una volta con /v1/geocode, memorizzi il paese e lo slug che restituisce, e usi quelli. La geocodifica non costa crediti, quindi farlo bene è gratis.

Condizioni attuali#

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

Le condizioni in questo istante per una coordinata, interpolate tra due passi del modello.

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

Lo stesso, tramite il catalogo delle città.

Temperatura, umidità, vento e pressione sono interpolati linearmente all'istante attuale, tra i due passi del modello che lo racchiudono.

Le precipitazioni non sono interpolate, ed è deliberato. Un valore orario di precipitazione è un cumulato su un intervallo, non una lettura in un istante. Interpolarlo inventerebbe pioggia in un minuto che il modello aveva collocato in un'altra ora. Ottiene invece il valore del passo che contiene l'istante — una cifra reale su un intervallo reale.

Lo usi per una visualizzazione «in questo momento». Per tutto ciò che confronterà nel tempo, usi /v1/forecast e legga l'ora che le interessa: la serie è stabile, mentre adesso le si muove sotto i piedi tra due chiamate.

Riferimento dei campi#

GEThttps://api.climatememory.com/v1/fieldsnessuna chiave necessaria0 crediti

La stessa tabella in JSON, con le unità e quali campi sono predefiniti. Nessuna chiave necessaria.

Campi orari

21 di essi tornano per impostazione predefinita. Gli altri sono a sua disposizione a richiesta — li nomini in hourly=, separati da virgole — e sono trattenuti per una questione di costo, non di affidabilità: ogni campo memorizzato è una lettura compressa distinta, quindi una risposta predefinita che portasse tutti e 45 farebbe pagare ogni chiamante per i pochi che vogliono lo spessore della neve.

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

Un campo che un modello non pubblica torna come null per il tratto di previsione di quel modello, anziché sparire dalla risposta — così una catena che comincia su AROME e prosegue su ICON-EU restituisce visibility dall'inizio alla fine, a null per le prime 51 ore. Un nome di campo sconosciuto dà un 400 unknown_field, con la corrispondenza più vicina suggerita; prima veniva ignorato in silenzio.

CampoUnitàNote
temperature_2m°CCorretta per il rilievo quando la quota è nota
apparent_temperature°CFormulazione di Steadman; valida su tutto l'intervallo
relative_humidity_2m%
dewpoint_2m°C
precipitationmmCumulato sul passo, decumulato
precipitation_probability_proxy%Euristica, non una probabilità d'insieme. Si veda più sotto.
weather_codeOMMCodice icona, soglia su mm/h e non sul cumulato del passo
cloud_cover%
wind_speed_10mm/s
wind_direction_10m°Direzione da cui soffia il vento
wind_gust_10mm/sMassimo sul passo
pressure_mslhPaRidotta al livello del mare
surface_pressurehPaAlla quota del luogo
shortwave_radiationW/m²Media sul passo
uv_index0–11+Stimato. Si veda più sotto.
capeJ/kgPotenziale temporalesco
is_day0/1
visibilitymSolo ICON-EU e ICON-D2
cloud_cover_low%Solo modelli ICON
cloud_cover_mid%Solo modelli ICON
cloud_cover_high%Solo modelli ICON
precipitation_typeOMMSolo CEPMMT Lo chieda in hourly=
snow_depthmCiò che è al suolo, non ciò che cade. Solo ICON Lo chieda in hourly=
snow_water_equivalentmmCiò che il manto nevoso rende sciogliendosi. Solo ICON Lo chieda in hourly=
snow_line_altitudemSi veda neve. ICON-EU e ICON-D2 Lo chieda in hourly=
freezing_level_altitudemIsoterma di 0 °C. Solo ICON Lo chieda in hourly=
soil_temperature_0cm°CSuperficie. Solo ICON globale e ICON-EU Lo chieda in hourly=
soil_temperature_8cm°CZona radicale, strato 7–28 cm. Solo ICON globale e ICON-EU Lo chieda in hourly=
shortwave_radiation_directW/m²Componente diretta. Solo ICON Lo chieda in hourly=
shortwave_radiation_diffuseW/m²Componente diffusa. Solo ICON Lo chieda in hourly=
solar_elevation°Calcolata dalla marca temporale e dalla coordinata Lo chieda in hourly=
solar_azimuth°Calcolato dalla marca temporale e dalla coordinata Lo chieda in hourly=
temperature_2m_max°CSul passo, dove il modello lo pubblica Lo chieda in hourly=
temperature_2m_min°CSul passo, dove il modello lo pubblica Lo chieda in hourly=
skin_temperature°CSuperficie del suolo, non l'aria Lo chieda in hourly=
heat_index°CUS NWS. Restituisce la temperatura semplice sotto i 27 °C Lo chieda in hourly=
wind_chill°CEnvironment Canada. Restituisce la temperatura semplice sopra i 10 °C Lo chieda in hourly=
wind_speed_100mm/sApplicazioni eoliche Lo chieda in hourly=
wind_direction_100m°Lo chieda in hourly=
wind_beaufort0–12Lo chieda in hourly=
cloud_cover_octas0–8Lo chieda in hourly=
snowfallmmEquivalente in acqua, non spessore di neve fresca Lo chieda in hourly=
total_column_water_vapourkg/m²Lo chieda in hourly=
pressure_tendencyhPaLo chieda in hourly=
weather_descriptiontestoLo chieda in hourly=

Campi giornalieri

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.

Aggregati su giornate solari locali, non UTC. Una giornata parziale a un estremo dell'intervallo viene omessa anziché riportata con un massimo fuorviante — quindi una richiesta di 7 giorni può legittimamente restituire 6 righe giornaliere.

Due campi sono stime, e preferiamo dirlo piuttosto che lasciarglielo scoprire.

uv_index è derivato dall'elevazione solare e dalla radiazione a banda larga, non da una colonna di ozono. Preciso a circa ±1 unità — abbastanza per «si metta un cappello», non per un'affermazione medica.

precipitation_probability_proxy è una stima, non una probabilità. Un modello deterministico non ha dispersione da cui ricavarne una. Porta il suffisso _proxy perché nessuno lo confonda con il prodotto d'insieme servito da /v1/probability, che è una vera frequenza su 51 membri.

Combina due termini. Il primo si chiede se la pioggia della cella raggiunge il suo punto: il tasso memorizzato è una media sull'intera cella, quindi a 28 km — 780 km² — una media debole può essere un vero rovescio su una piccola parte di essa. Assumendo la distribuzione sotto-griglia dei tassi come una Weibull, con una forma fissata dalla dimensione della cella e dalla media del modello stesso, si ottiene in forma chiusa la probabilità che un punto della cella superi 0,1 mm/h. Il secondo termine limita ciò che un cielo coperto e quasi saturo può pretendere là dove il modello non mette alcuna pioggia nella cella. Entrambi vengono poi ponderati per quanto credito merita una corsa a quella scadenza, ed è per questo che la stessa pioggia si legge più bassa al giorno 9 che al giorno 1.

Di conseguenza uno stesso luogo può leggersi diversamente secondo due modelli, ed è giusto così: una cella di 2,2 km e una di 28 km sono realmente in disaccordo su cosa significhi una media debole. Le applicazioni di largo consumo che danno una sola cifra nascondono questo.

Modelli e risoluzione#

GEThttps://api.climatememory.com/v1/modelsnessuna chiave necessaria0 crediti

Quali modelli sono attivi, cosa copre ciascuno, quanto è fresco ciascuno. Nessuna chiave necessaria.

Serviamo il modello più fine che copre sia il suo punto sia la sua scadenza. Lei non ne sceglie mai uno; la scelta è riportata in source.model, così può sempre sapere quale ha risposto.

I modelli ad alta risoluzione sono tutti a breve termine — a 1 km l'atmosfera diventa caotica entro due giorni, quindi prevedere oltre non avrebbe senso — e la risoluzione scende perciò a gradini man mano che la previsione avanza:

giorno 0 ──── giorno 2 ──── giorno 5 ─────────────── giorno 15
  AROME 1,3 km (Francia)
  ICON-D2 2,2 km (Germania, Alpi, Benelux)
  HRRR 3 km (USA e Canada meridionale)
              ICON-EU 6,5 km (Europa)
                          ICON 13 km · CEPMMT 28 km (globale)
                                              AIFS (solo tendenza)
source.modelModelloRisoluzioneCorseOrizzonte
mf_aromeMétéo-France AROME1.3 km8/giorno51 h
dwd_icon_d2DWD ICON-D22.2 km4/giorno48 h
noaa_hrrrNOAA HRRR3 km4/giorno48 h
dwd_icon_euDWD ICON-EU6.5 km2/giorno120 h
dwd_iconDWD ICON13 km2/giorno180 h
ecmwf_ifsECMWF IFS28 km2/giorno240 h
ecmwf_aifsECMWF AIFS28 km2/giorno360 h
ecmwf_waveECMWF wave28 km2/giorno240 h

Le transizioni al bordo del dominio di un modello sono sfumate, così due località ai due lati di un confine non divergono mai per un salto netto.

I giorni da 11 a 15 sono una tendenza, non una previsione. A quella scadenza l'abilità si avvicina alla climatologia. La pubblichiamo perché viene richiesta; la tratti come una direzione di evoluzione, e se la mostra, lo dica.

/v1/models non richiede chiave, il che ne fa l'endpoint giusto da interrogare da una pagina di stato o prima di acquistare: riporta l'ultima corsa di ogni modello e la sua età, così «i dati sono freschi?» si risponde senza spendere un credito.

Probabilità d'insieme#

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

Percentili e probabilità di pioggia dall'insieme del CEPMMT a 51 membri.

Una previsione singola dice 22 °C giovedì. È una congettura presentata come un fatto. Questo endpoint risponde alla domanda su cui lei decide davvero: quanto è sicura, e quale probabilità di pioggia merita di organizzarsi attorno.

È calcolato dall'insieme del CEPMMT — lo stesso modello eseguito 50 volte da condizioni iniziali leggermente diverse. Dove le corse concordano, la previsione è sicura. Dove si disperdono, è l'atmosfera stessa a essere incerta, e nessun modello per quanto buono può dirle di più.

{
  "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]
  }
}

Come leggerlo

p10 e p90 racchiudono l'80 % centrale dei membri: uno su dieci si aspetta più freddo di p10, uno su dieci più caldo di p90. Uno spread di 0,4 °C è una situazione consolidata di cui può fidarsi; 3 °C significa che i modelli divergono e conviene dirlo ai suoi utenti anziché sceglierne uno.

Le soglie di pioggia sono decisioni e non cifre tonde — 0,1 mm è bagnato, punto, 1 mm è prenda un cappotto, 5 e 10 mm sono questo è un problema. precipitation_p90 è il caso sfavorevole: solo un membro su dieci è più piovoso.

Solo due variabili, temperatura e precipitazioni. Aggiungere nuvolosità, vento e pressione raddoppierebbe la banda dell'intera piattaforma per cifre su cui nessuno decide nulla.

Qualità dell'aria#

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

Particolato, ozono, NO₂, SO₂, CO e polvere sahariana, da Copernicus CAMS.

Questo è l'endpoint che conta di più in Nordafrica e nel Mediterraneo. Un episodio di polvere spinge le PM10 oltre i mille microgrammi per metro cubo per giorni interi, il che è una decisione di salute più che una cifra, ed è coperto male dai servizi gratuiti di largo consumo.

{
  "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"}
}

Tutte le concentrazioni sono in µg/m³, l'unità in cui la qualità dell'aria viene citata ovunque. dust_aod_550nm è uno spessore ottico e non ha unità: sopra circa 0,5 il cielo è visibilmente velato, sopra 1,0 il sole è attenuato.

I valori guida a breve termine dell'OMS viaggiano in ogni risposta, così una cifra può essere collocata senza andarla a cercare. band segue l'indice europeo di qualità dell'aria per il PM2,5: buona, discreta, media, scadente, molto scadente, estremamente scadente.

La neve e il limite delle nevicate#

Quattro campi, e rispondono a domande diverse. snowfall è quanta ne cade; gli altri descrivono ciò che è al suolo, e dove.

Li chieda per nome — non sono nella risposta predefinita:

GET /v1/forecast?lat=45.19&lon=5.72&hourly=snowfall,snow_depth,snow_water_equivalent,snow_line_altitude,freezing_level_altitude
CampoUnitàCosa le dice
snow_depthmCiò che è al suolo. Venti centimetri possono cadere e sciogliersi, oppure posarsi su ottanta già presenti.
snow_water_equivalentmmCiò che rende sciogliendosi. Mezzo metro di neve farinosa e mezzo metro di neve compatta sono cose molto diverse.
snow_line_altitudemLa quota sopra la quale la precipitazione cade come neve.
freezing_level_altitudemAltezza dell'isoterma di 0 °C, tipicamente qualche centinaio di metri sopra il limite delle nevicate.

È il limite delle nevicate che vale la pena leggere. «Piove a 800 m e nevica a 1200» è un'informazione su cui una stazione sciistica, un ente stradale o un automobilista possono agire; «3 mm di precipitazione» no. Conta anche in Nordafrica — l'Atlante ha comprensori sciistici a Chréa e Tikjda, e gli altipiani di Sétif, Batna e Djelfa superano i 1000 m.

I ghiacciai riportano decine di metri di spessore nevoso, perché è così che il modello rappresenta il ghiaccio perenne e non per un errore di misura. La neve stagionale più profonda della Terra si aggira sugli 11 m — consideri qualsiasi cosa oltre come ghiaccio, non come meteorologia.

Questi campi provengono da ICON, del DWD, che copre il mondo a 13 km. I dati aperti del CEPMMT pubblicano lo spessore nevoso ma non il limite delle nevicate: è quindi un caso in cui il modello più grossolano è il più utile. snow_line_altitude è un prodotto regionale — ICON-EU e ICON-D2 lo pubblicano, ICON globale no, quindi fuori dall'Europa ottiene l'isoterma e lo spessore, ma non il limite stesso.

Mare — stato del mare#

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

Altezza, direzione e periodo delle onde dal modello di moto ondoso del CEPMMT, in tutto il mondo, fino a 10 giorni.

{
  "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]
  }
}

L'altezza d'onda è l'altezza significativa — la media del terzo di onde più alte, che è più o meno ciò che riferisce un osservatore in mare. Le onde singole raggiungono circa il doppio, ed è quella la cifra che conta se sta decidendo se uscire. La direzione è quella da cui provengono le onde, come per il vento.

Un punto a terra restituisce 404 not_at_sea anziché una lista di null. Il modello di moto ondoso non ha alcun valore sulla terraferma per costruzione, e dirlo è più utile di una risposta che sembra un guasto del servizio. Se lascia che i suoi utenti posizionino un segnaposto, gestisca questo codice in modo esplicito.

Fiumi#

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

Portata dei fiumi da Copernicus GloFAS su una rete idrografica a 0,05°, fino a 10 giorni.

Risponde a ciò che nessun modello meteorologico può dare: non quanta pioggia cade a monte, ma quanta acqua arriva qui — una cifra del tutto diversa, separata dalla pioggia da un bacino idrografico, da uno stato di umidità del suolo e da uno o due giorni di percorso.

{
  "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]
  }
}
CampoSignificato
river_dischargePortata media in m³/s sulle 24 ore che terminano in quell'istante. Zero significa che il modello non ha alcun fiume in quella cella, non che un fiume si sia prosciugato.
soil_wetness_indexSaturazione del bacino, da 0 secco a 1 saturo. Valori alti significano che la pioggia ulteriore scorre via anziché infiltrarsi.

Questo non è un avviso di piena e non va presentato come tale. La licenza Copernicus riserva gli avvisi di piena alle autorità nazionali e regionali nel loro ambito di competenza, ed è l'assetto giusto — chi è autorizzato ad allertare è anche chi può chiudere una strada ed evacuare un paese.

Portata in m³/s, sì. Un'allerta, un colore di gravità o un'istruzione ad agire, no, qualunque aspetto abbiano le cifre quel giorno. La clausola di esclusione viaggia in ogni corpo di risposta, non solo qui, ed è lì perché raggiunga i suoi utenti anche se questa pagina non l'ha fatto.