Iniziare
Tre API, una sola chiave: previsioni meteo dal CEPMMT e dai modelli nazionali ad alta risoluzione, gradi giorno di riscaldamento e di raffrescamento, e 87 anni di clima giornaliero. Questa pagina contiene tutto ciò che le serve prima della prima chiamata. Gli endpoint veri e propri sono sulle tre pagine di riferimento.
Di cosa si tratta#
Climate Memory serve tre prodotti da due host, con un'unica chiave API.
| Prodotto | Host | Risponde a | Riferimento |
|---|---|---|---|
| Meteo | https://api.climatememory.com | Cosa farà il tempo — previsione, condizioni attuali, insiemi, qualità dell'aria, stato del mare, fiumi | API Meteo |
| Gradi giorno | https://api.climatememory.com | Quanto un edificio ha dovuto essere riscaldato o raffrescato — dal 1950, ovunque | API Gradi giorno |
| Clima | https://api.climatememory.com | Cosa è normale qui — 87 anni di clima giornaliero, normali OMM, tendenze | API Clima |
Due host anziché uno perché i gradi giorno leggono un altro archivio con un profilo di costo diverso, e separarli permette a uno di essere lento senza rallentare l'altro. Non deve preoccuparsene oltre il copiare l'URL di base giusto.
Tutti gli endpoint sono GET. In questa API non
c'è da nessuna parte un corpo di richiesta, né un cursore di paginazione, né una
sessione. Una chiamata è una URL più un'intestazione, il che significa che può
provarne una qualsiasi nella barra degli indirizzi di un browser o con uno
strumento come curl, e metterne una qualsiasi in cache davanti a
noi senza trattamenti particolari.
La sua prima chiamata#
Tre passi. Il tutto richiede circa un minuto.
1. Ottenere una chiave
Crei un account su developers.climatememory.com/signin. Il
piano gratuito non richiede carta, le dà 10 000 crediti al mese, e la sua chiave
compare subito a schermo. La conservi in una variabile d'ambiente — tutti gli
esempi qui sotto leggono $API_KEY.
export API_KEY="wd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
2. Effettuare la chiamata
curl -sH "X-API-Key: $API_KEY" \
"https://api.climatememory.com/v1/forecast?lat=48.85&lon=2.35&days=3"
import os, httpx
r = httpx.get(
"https://api.climatememory.com/v1/forecast",
params={"lat": 48.85, "lon": 2.35, "days": 3},
headers={"X-API-Key": os.environ["API_KEY"]},
timeout=30,
)
r.raise_for_status()
data = r.json()
print(data["daily"]["temperature_2m_max"])
const res = await fetch(
"https://api.climatememory.com/v1/forecast?lat=48.85&lon=2.35&days=3",
{ headers: { "X-API-Key": process.env.API_KEY } },
);
if (!res.ok) {
const { error } = await res.json();
throw new Error(`${error.code}: ${error.message}`);
}
const data = await res.json();
console.log(data.daily.temperature_2m_max);
req, _ := http.NewRequest("GET",
"https://api.climatememory.com/v1/forecast?lat=48.85&lon=2.35&days=3", nil)
req.Header.Set("X-API-Key", os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil { return err }
defer res.Body.Close()
var out struct {
Daily struct {
TemperatureMax []float64 `json:"temperature_2m_max"`
} `json:"daily"`
}
json.NewDecoder(res.Body).Decode(&out)
3. Leggere la risposta
Ogni serie torna orientata a colonne — array paralleli che
condividono un unico indice time, non un elenco di oggetti. Si
vedano le convenzioni di risposta per il perché, e
per come leggerla.
Poi: la stessa chiamata per nome di città è di solito
migliore — https://api.climatememory.com/v1/forecast/city/fr/paris porta la quota reale e il
fuso orario della città, cosa che una coordinata nuda non può. Si veda
previsione per città.
Autenticazione#
Invii la sua chiave nell'intestazione X-API-Key a ogni
richiesta. Non c'è alcun flusso OAuth, nessun token bearer da rinnovare e
nessuna firma da calcolare.
X-API-Key: wd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Le chiavi sono memorizzate sotto forma di hash. Se ne perde una, viene rinnovata, non recuperata — non possiamo mostrargliela di nuovo, perché non la abbiamo. Il rinnovo si fa nella console ed emette immediatamente una chiave nuova.
Scope
Una chiave porta degli scope, ed è il piano a decidere quali. Chiamare un
endpoint fuori dai suoi scope restituisce 403 scope_denied — che è
un problema di piano, non di chiave, e il messaggio lo dice.
| Scope | Sblocca |
|---|---|
meteo | L'intera API Meteo, complementi inclusi |
dju | I gradi giorno e lo storico orario |
climate | L'archivio climatico giornaliero e i suoi aggregati |
normals | Le normali OMM e il loro confronto |
Gli endpoint di geocodifica non ne richiedono nessuno. Qualsiasi chiave valida risolve un nome di luogo, su qualsiasi piano, perché ogni prodotto qui ha bisogno di una coordinata prima di poter rispondere a qualcosa. Si veda geocodifica.
Non metta mai la sua chiave in un browser. Chiami l'API dal suo server e passi il risultato al client. Una chiave nel JavaScript del browser è una chiave che chiunque può leggere nella scheda di rete e spendere sulla sua quota — e poiché è la sua chiave, l'uso è indistinguibile dal suo.
Se le serve il meteo in un'applicazione mobile, gli endpoint mobili esistono proprio per questo: emettono un token per installazione anziché incorporare la sua chiave.
Geocodifica#
Risolvere un nome di luogo in coordinate, quota e fuso orario.
Parametri
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
q | string | — | Nome di luogo, in qualsiasi lingua. Accenti facoltativi. Obbligatorio. |
lang | ISO-639-1 | en | Solo visualizzazione e ordinamento — mai cosa è ammissibile. Un codice sconosciuto ripiega sui nomi locali anziché fallire. |
near | lat,lon | — | La posizione del chiamante. Il criterio di spareggio più forte che esista. |
country | ISO-3166-1 alpha-2 | — | Limitare a un solo paese. |
limit | int | 10 | Da 1 a 50. |
Il catalogo è la classe di entità P di GeoNames per intero — ogni luogo abitato della Terra, fino a frazioni di qualche decina di persone, e non un estratto filtrato per popolazione. Un paese di 528 abitanti c'è.
Non costa crediti, su nessun piano, e non richiede scope. Una chiave venduta per i gradi giorno risolve anche i nomi, perché i gradi giorno non si possono chiedere senza una coordinata. Porta invece un tetto proprio — cinque richieste di geocodifica per credito del suo piano — deliberatamente abbastanza generoso perché un campo di ricerca a suggerimenti con antirimbalzo sia l'uso previsto. Si vedano limiti di ritmo e quota.
La corrispondenza non è mai limitata dalla lingua
La query viene confrontata con il nome locale, la sua traslitterazione ASCII e
ogni alias localizzato, qualunque cosa dica lang. Conta più
di quanto sembri: il 98 % dei luoghi non ha alcun nome localizzato — il francese
copre l'1,84 % del catalogo — quindi una ricerca filtrata per lingua troverebbe
le capitali e nient'altro. lang sceglie quale nome torna e influenza
l'ordinamento; non decide mai cosa è ammissibile.
GET /v1/geocode?q=ramillies&lang=fr
GET /v1/geocode?q=ramillies&lang=fr&near=50.63,3.06 # da Lille
GET /v1/geocode?q=bruxelles&lang=fr # esonimo, tramite l'indice degli alias
GET /v1/geocode?q=zuesch&lang=de # dieresi scritta per esteso
Come vengono ordinati i risultati
Ogni risultato porta uno score e, quando è stato fornito
near, una distance_km. L'ordinamento combina quattro
segnali: quanto bene ha corrisposto il nome, quanto è rilevante il luogo, quanto
è vicino a near, e se il nome trovato era nella lingua
richiesta.
Perché esiste near. Esistono due Ramillies —
5 749 abitanti nel Brabante Vallone, 528 negli Alti di Francia, a 126 km di
distanza. Nessuna delle due è la risposta giusta in astratto. Senza
near viene restituita la più grande; da Lille, quella francese.
La rilevanza non è solo la popolazione. Il 90,7 % del catalogo non ha alcuna popolazione registrata — per alcuni paesi GeoNames non ne pubblica affatto — quindi il tipo di luogo (capitale nazionale, capoluogo di una divisione amministrativa, luogo ordinario, quartiere) sostiene l'ordinamento ovunque manchi la popolazione.
Le dieresi sono scritte per esteso, non eliminate. Una
tastiera tedesca o danese senza segni diacritici scrive Zuesch per
Züsch e Koeln per Köln. GeoNames non
riporta quella grafia — la sua forma ASCII è Zusch, con la dieresi
rimossa anziché sviluppata — quindi viene generata qui. Entrambe le grafie
raggiungono il luogo, e il risultato mostra il nome vero in entrambi i casi.
Ricerca di città#
Ricerca per nome più vecchia. Confronta solo il nome ASCII, ordina per popolazione.
La città catalogata più vicina a una coordinata.
/v1/cities/search è anteriore a /v1/geocode e
mantiene il suo contratto per i chiamanti già costruiti su di esso: confronta
solo il nome ASCII e ordina per popolazione.
Preferisca /v1/geocode per tutto
ciò che un utente vede. La rotta più vecchia non sa riconoscere un
esonimo — Bruxelles non troverà Brussel — e il suo ordinamento
è indefinito per i nove luoghi su dieci senza popolazione registrata.
/v1/cities/nearest è il verso opposto, ed è ciò che trasforma una
posizione GPS in uno slug di città che può poi passare agli endpoint per città.
Accetta lat, lon e un max_km
facoltativo.
Entrambi contano sullo stesso tetto di geocodifica di
/v1/geocode, e nessuno dei due costa crediti.
Convenzioni di risposta#
Sei regole valgono per tutti gli endpoint. Le impari una volta e il resto di questa documentazione sono solo nomi di campi.
1. Le serie sono colonne, non righe
Ogni serie temporale è un insieme di array paralleli che condividono un unico
indice time, anziché un array di oggetti:
"hourly": {
"time": ["2026-08-01T00:00:00+00:00", "2026-08-01T01:00:00+00:00"],
"temperature_2m": [18.4, 18.1],
"precipitation": [0.0, 0.2]
}
L'indice i di ogni array descrive lo stesso istante. Sulla rete è
da tre a cinque volte più leggero della forma a righe, si decodifica direttamente
in un dataframe o in una libreria grafica senza trasformazioni, ed è ciò che i
client di forma Open-Meteo già si aspettano. Per percorrerlo per righe:
rows = zip(h["time"], h["temperature_2m"], h["precipitation"])
2. Gli orari sono ISO 8601 con scarto esplicito
Sempre. 2026-08-01T00:00:00+00:00, mai una stringa locale nuda né
un intero Unix. Là dove passa una timezone, lo scarto nella risposta
è quello di quel fuso — la stringa da sola è quindi inequivocabile, e non deve
mai sapere cosa abbiamo supposto noi.
3. Le unità sono SI, fisse e mai negoziate
°C, mm, m/s, hPa, W/m², metri. Non esiste alcun parametro
units=imperial, di proposito: un interruttore di unità è un campo il
cui significato dipende da un altro campo, ed è così che un chiamante finisce per
rappresentare Fahrenheit su un asse Celsius dopo un cambio di configurazione che
nessuno ha riletto. Converta al suo bordo, dove sta il lettore.
Gli endpoint che portano unità insolite includono nella risposta un blocco
units che le nomina esplicitamente, anziché aspettarsi che lei se ne
ricordi.
4. null significa «ignoto», mai «zero»
Un'ora mancante è null nell'array, e conserva la sua posizione
perché gli indici restino allineati. Non viene mai riempita in silenzio con 0 —
per le precipitazioni le due sono affermazioni opposte, e una delle due è una
menzogna su una siccità.
5. Ogni risposta dice da dove viene
Un blocco source (meteo) o un blocco quality
(archivi) viaggia con i dati: quale modello o quale corsa ha risposto, quanto è
vecchia, quanto era completo il periodo. Non deve mai dedurre la freschezza
dall'orologio.
6. Obsoleto batte assente
Se la nostra corsa di modello più recente è più vecchia del previsto,
rispondiamo comunque — con "stale": true e
data_age_hours nel blocco source — anziché restituire
un 503. Una previsione vecchia di otto ore è più utile di un errore. Controlli
il flag se la freschezza è determinante per lei; lo ignori altrimenti.
Non c'è paginazione da nessuna parte. Una richiesta restituisce l'intera risposta oppure fallisce con un errore di intervallo che le indica il massimo. Gli intervalli sono invece limitati per endpoint — il che significa che una logica di ritentativo non deve mai gestire un insieme di risultati letto a metà.
Limiti di ritmo, crediti e quota#
Si applicano tre limiti indipendenti, e falliscono in modo diverso di proposito. Ogni risposta riuscita riporta a che punto è:
| Intestazione | Significato |
|---|---|
X-RateLimit-Remaining | Richieste rimaste nel minuto scorrevole in corso |
X-Quota-Remaining | Crediti rimasti questo mese |
X-Quota-Resets-At | Marca temporale ISO del prossimo azzeramento mensile |
X-Geocode-Remaining | Richieste di geocodifica rimaste questo mese. Solo sugli endpoint di catalogo, gli unici che limita. |
Crediti, non richieste
Una previsione di città in cache è una lettura da 3 ms. Dieci anni di gradi giorno orari su cinquecento siti no. Tariffare a richieste permetterebbe a un chiamante di restare dentro la sua quota costando più di quanto paga, in modo del tutto legittimo — quindi quanto costa una chiamata dipende da quanto archivio muove.
| Endpoint | Crediti |
|---|---|
/v1/forecast, /v1/current e le varianti per città | 1 |
/v1/probability, /v1/air-quality, /v1/marine, /v1/hydrology | 1 |
/v1/cells/resolve, /v1/climate/cells/resolve | 1 |
/v1/climate/normals | 3 |
/v1/climate/normals/compare | 6 — risponde su due periodi |
/v1/climate/daily, /v1/climate/monthly | 2, +1 per ogni periodo completo di 365,25 giorni nell'intervallo |
/v1/climate/summary | 3, +1 per ogni periodo completo di 365,25 giorni nell'intervallo — circa 89 sull'intero archivio |
/v1/degree-days e le sue varianti per città e per cella | 2, +1 per ogni periodo completo di 365,25 giorni nell'intervallo |
/v1/degree-days/monthly | 2 |
/v1/historical | (anni + 1) × (variabili ÷ 2), arrotondato per difetto, minimo 1 |
Uno qualsiasi dei precedenti con format=csv | 4× il costo del JSON |
/v1/geocode, /v1/cities/search, /v1/cities/nearest | 0 — limitato a parte |
/v1/models, /v1/methods, /v1/coverage, /v1/climate/coverage, /v1/climate/fields, /v1/historical/variables, /v1/attribution, /v1/licensing | 1, e nessuna chiave necessaria |
La geocodifica non costa crediti. Ogni prodotto qui ha bisogno di una coordinata prima di poter rispondere, quindi risolvere un nome è incluso e non venduto. Un campo di ricerca a suggerimenti è l'uso previsto: gli metta un antirimbalzo e lo lasci lavorare.
È comunque limitato, e da un tetto proprio anziché dai suoi crediti:
cinque richieste di geocodifica per credito del suo piano. Sul
piano da 50 000 crediti sono 250 000 ricerche al mese, e un campo di ricerca con
antirimbalzo ne consuma circa sei per luogo trovato. Esaurirlo restituisce
429 geocode_quota_exceeded e lascia i suoi crediti intatti — anche
per questo sono due codici distinti.
Cosa fare quando ne raggiunge uno
| Limite | Risposta | Gestione |
|---|---|---|
| Ritmo (al minuto) | 429 rate_limited + Retry-After | Attenda Retry-After secondi e ritenti. Questo è transitorio per costruzione. |
| Crediti (per periodo) | 429 quota_exceeded + X-Quota-Resets-At | Ritentare non servirà fino all'azzeramento. Cambi piano, oppure degradi la sua funzionalità. |
| Tetto di geocodifica | 429 geocode_quota_exceeded | I suoi crediti sono intatti e tutti gli altri endpoint funzionano ancora. Rafforzi l'antirimbalzo. |
Il suo periodo di quota va dalla data dell'abbonamento allo stesso giorno del
mese successivo — il periodo che Stripe fattura — e il contatore riparte intero
ogni volta. X-Quota-Resets-At porta quella data in ogni risposta: la
legga anziché supporre il primo del mese. Gli account senza abbonamento seguono
il mese solare.
Metta in cache senza remore — non ci disturba, ed è quota gratuita. Una corsa di previsione cambia da 2 a 4 volte al giorno; un totale di gradi giorno di un mese passato non cambia mai. Nulla qui è specifico di un utente, quindi una normale cache HTTP davanti a noi è sicura. Gli endpoint di archivio in particolare meritano di essere messi in cache per sempre al di sotto degli ultimi cinque giorni.
Errori#
Ogni errore ha la stessa forma, su entrambi gli host:
{
"error": {
"code": "range_too_long",
"message": "Requested span is 14.0 years; the maximum per request is 10.",
"max_years": 10
}
}
Costruisca la sua logica di ritentativo su error.code,
non sullo stato HTTP. Tre condizioni diverse restituiscono
429 e richiedono tre reazioni diverse: una vuole una breve attesa,
una un cambio di piano, e una non dovrebbe fermare affatto la sua applicazione.
Lo stato da solo non può distinguerle. Le chiavi aggiuntive —
max_years qui sopra — portano il limite superato, così il suo client
può adattarsi anziché indovinare.
| Stato | Codice | Cosa fare |
|---|---|---|
| 400 | invalid_latitude, invalid_longitude | Corregga le coordinate. La latitudine va da −90 a 90, la longitudine da −180 a 180. |
| 400 | range_too_long | Divida in più richieste. max_years indica il tetto. |
| 400 | bad_request | La forma generica, quando un controllo non ha un codice proprio più preciso. La tratti come permanente — la richiesta non diventerà valida ritentandola. |
| 400 | invalid_coordinates | La coppia è fuori intervallo o non è un punto sulla Terra. |
| 400 | invalid_method, invalid_base | Si vedano i metodi di calcolo. |
| 400 | invalid_breakdown | Non è daily, weekly, monthly né yearly. |
| 400 | invalid_date | Una data che non è ISO YYYY-MM-DD. |
| 400 | invalid_range | end precede start. |
| 400 | invalid_near | near non ha la forma lat,lon. |
| 400 | unknown_field, unknown_variable | Chieda a /v1/fields, /v1/climate/fields o /v1/historical/variables cosa contiene quel prodotto — nessuno dei tre richiede una chiave. Su /v1/forecast il messaggio nomina la corrispondenza più vicina a ciò che ha chiesto. |
| 400 | unknown_period | Non è un periodo di riferimento OMM. Si vedano le normali. |
| 400 | period_not_covered | L'archivio non copre quel periodo di riferimento in quel punto. |
| 401 | missing_api_key | L'intestazione X-API-Key era assente. |
| 401 | invalid_api_key | La chiave è sconosciuta o è stata rinnovata. |
| 401 | unauthorized | La forma generica, quando non si applica nulla di più preciso. |
| 402 | export_not_in_plan | L'esportazione CSV è riservata ai piani a pagamento. |
| 403 | scope_denied | Il suo piano non include questa API. Si vedano gli scope. |
| 403 | key_inactive | La chiave esiste ma è stata revocata o disattivata. Rinnovare una chiave fa esattamente questo a quella vecchia — controlli la console prima di dare per scontato un guasto. |
| 404 | city_not_found | La risposta include un array suggestions — lo mostri. |
| 404 | cell_not_found | Una cella fissata che non esiste più. Si veda fissare una cella. |
| 404 | not_at_sea | Una richiesta marina sulla terraferma. Il modello di moto ondoso non ha alcun valore lì. |
| 404 | not_found | La forma generica. Come sopra: permanente. |
| 404 | no_city_nearby | Nulla di catalogato entro max_km da quel punto. |
| 404 | outside_archive | Le date sono al di fuori di ciò che l'archivio contiene. /v1/climate/coverage dice cosa contiene, e non richiede chiave. |
| 429 | rate_limited | Attenda Retry-After secondi. |
| 429 | quota_exceeded | Attenda l'azzeramento o cambi piano. Ritentare prima non può riuscire. |
| 429 | geocode_quota_exceeded | Solo il tetto di geocodifica. I suoi crediti sono intatti; metta un antirimbalzo al campo di ricerca. |
| 503 | data_unavailable | Transitorio. Ritenti con arretramento esponenziale. |
| 503 | load_shed | Rifiuto deliberato per proteggere il servizio sotto carico. La criticità del suo piano decide chi viene scartato per primo. Ritenti con arretramento; si risolve in pochi secondi. |
| 503 | catalogue_unavailable | Il catalogo delle città è brevemente irraggiungibile. Le coordinate funzionano ancora — ripieghi su quelle anziché far fallire la richiesta. |
Questo è l'elenco completo, ed è verificato contro il codice sorgente a ogni compilazione: un codice pubblicato qui che nessun handler solleva fa fallire la suite di test, e lo stesso vale per un handler che ne sollevi uno che questa tabella non riporta. Se incontra un codice non presente qui sopra, è un difetto di questa pagina e non un valore da trattare in modo speciale.
Una politica di ritentativo che funziona
RETRY = {"rate_limited", "data_unavailable"}
def should_retry(status, code, attempt):
if code == "quota_exceeded":
return False # nulla cambia fino all'azzeramento
if code == "geocode_quota_exceeded":
return False # e non si fermi: i crediti funzionano
if code in RETRY:
return attempt < 5
return status >= 500
Precisione — cosa aspettarsi#
Preferiamo fissare bene le aspettative piuttosto che lasciarle scoprire i limiti in produzione.
Dove la previsione è solida
Temperatura, pressione, vento sinottico, umidità, insolazione. L'errore tipico della temperatura a 2 m a 24 ore è di circa 1–1,5 °C. Il CEPMMT è il miglior modello deterministico globale al mondo, ed è quello che lei ottiene.
Dove è più debole
I temporali convettivi — una cella di 28 km non può risolvere un temporale, e anche 3 km lo accennano soltanto. La collocazione e il momento esatti dei rovesci. I microclimi costieri e di montagna sotto la risoluzione del modello. Le brezze di mare e i laghi d'aria fredda di valle, che la correzione per il rilievo non modella.
Onestà geografica
In Francia, Germania, Stati Uniti e Canada serviamo modelli nazionali a 1,3–3 km, e un piccolo paese ottiene davvero la sua cella. Altrove in Europa ottiene 6,5 km. In Africa, Medio Oriente e gran parte dell'Asia il miglior modello pubblico disponibile è a 13–28 km, quindi ottiene la meteorologia della zona anziché quella della via. La correzione per il rilievo riduce quel divario, ma non lo colma.
Gradi giorno
Una rianalisi su griglia copre ovunque, comprese le località senza stazione meteorologica entro 60 km — è questo il suo vantaggio sui fornitori basati su stazioni. La sua debolezza sono i centri urbani, che la rianalisi sottostima; gli endpoint per città applicano una correzione calibrata, quelli per coordinata no.
Due campi sono stime, e preferiamo dirlo
uv_index è derivato dall'elevazione solare e dalla radiazione a
banda larga, non da una colonna di ozono — preciso a circa ±1 unità.
precipitation_probability_proxy è una stima, non una probabilità;
quella autentica sta su /v1/probability. Entrambi sono
spiegati per esteso nel riferimento dei campi.
Piani#
| Piano | Prezzo | Crediti / mese | Ritmo | Chiavi | Scope |
|---|---|---|---|---|---|
| Gratuito | 0 € | 10 000 | 20 / min | 1 | meteo, più gradi giorno e clima per 30 giorni |
| Starter | 19 € / mese | 50 000 | 60 / min | 3 | meteo + gradi giorno + clima |
| Pro | 79 € / mese | 400 000 | 300 / min | 10 | meteo + gradi giorno + clima + normali |
| Business | da 299 € / mese | Concordato per contratto | Concordato per contratto | 50 | meteo + gradi giorno + clima + normali |
La geocodifica sta fuori da questa tabella: non costa crediti su nessun piano, e porta un tetto proprio di cinque richieste per credito. Si vedano limiti di ritmo e quota.
La fatturazione annuale regala due mesi. Il catalogo aggiornato è su developers.climatememory.com/pricing — quella pagina legge direttamente il sistema di fatturazione, quindi se i due dovessero divergere fa fede lei.
Non esiste un endpoint di esportazione massiva su alcun piano. L'esportazione CSV esiste per gli archivi dei gradi giorno e del clima, è limitata allo stesso intervallo della chiamata JSON equivalente, e restituisce solo righe aggregate — mai la serie oraria.
Attribuzione e licenze#
Il testo esatto richiesto, leggibile da una macchina. Nessuna chiave necessaria.
La tabella delle licenze dietro ogni insieme di dati. Nessuna chiave necessaria.
L'attribuzione è una condizione d'uso, non una cortesia. I dati sottostanti ci sono concessi in licenza a condizioni che la richiedono, e quelle condizioni si trasmettono a lei. Mostri un avviso ovunque compaiano i dati, compresi i prodotti derivati. Basta una riga a piè di pagina:
Weather data: ECMWF, DWD, NOAA, Météo-France · Climate data: Copernicus/ERA5-Land · Places: GeoNames
Nessuno dei due endpoint qui sopra richiede una chiave, quindi può rendere
l'avviso dall'API anziché scrivere a codice una stringa che diventerà obsoleta al
cambiare di una fonte. L'attribuzione della corsa precisa che ha risposto viaggia
inoltre su ogni risposta di dati, in source.attribution e
nell'intestazione X-Data-Attribution.
Può dichiarare che utilizza questi dati. Non può lasciar intendere che una di queste organizzazioni abbia prodotto, approvato o avalli il suo prodotto.
Esclusione di responsabilità
Le previsioni sono fornite senza garanzia. Né la Commissione europea, né il CEPMMT, né il DWD, né la NOAA, né Météo-France sono responsabili dell'uso che viene fatto di queste informazioni. Non le utilizzi come unica base di decisioni in cui siano in gioco la vita, la sicurezza o i beni.
C'è una restrizione che non spetta a noi revocare: la licenza Copernicus riserva gli avvisi di piena alle autorità nazionali e regionali. Si vedano i fiumi.