climatememory développeurs

Référence de l'API

Démarrer

Trois API, une seule clé : prévisions météo depuis l'ECMWF et les modèles nationaux à haute résolution, degrés-jours de chauffage et de refroidissement, et 87 ans de climat quotidien. Cette page contient tout ce qu'il vous faut avant le premier appel. Les endpoints eux-mêmes sont sur les trois pages de référence.

De quoi il s'agit#

Climate Memory sert trois produits depuis deux hôtes, sur une seule clé d'API.

ProduitHôteRépond àRéférence
Météohttps://api.climatememory.comCe que la météo va faire — prévision, conditions actuelles, ensembles, qualité de l'air, état de la mer, rivièresAPI Météo
Degrés-jourshttps://api.climatememory.comCombien un bâtiment a dû être chauffé ou refroidi — depuis 1950, partoutAPI Degrés-jours
Climathttps://api.climatememory.comCe qui est normal ici — 87 ans de climat quotidien, normales OMM, tendancesAPI Climat

Deux hôtes plutôt qu'un parce que les degrés-jours lisent une autre archive, au profil de coût différent, et les séparer permet à l'une d'être lente sans ralentir l'autre. Vous n'avez pas à vous en soucier au-delà de copier la bonne URL de base.

Tous les endpoints sont en GET. Il n'y a nulle part de corps de requête dans cette API, aucun curseur de pagination et aucune session. Un appel, c'est une URL plus un en-tête : vous pouvez donc tester n'importe lequel depuis la barre d'adresse d'un navigateur, ou avec un outil comme curl, et mettre n'importe lequel en cache devant nous sans traitement particulier.

Votre premier appel#

Trois étapes. L'ensemble prend environ une minute.

1. Obtenir une clé

Créez un compte sur developers.climatememory.com/signin. La formule gratuite ne demande pas de carte, vous donne 10 000 crédits par mois, et votre clé s'affiche immédiatement. Gardez-la dans une variable d'environnement — les exemples ci-dessous lisent tous $API_KEY.

export API_KEY="wd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

2. Faire l'appel

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. Lire la réponse

Toute série revient orientée colonnes — des tableaux parallèles partageant un unique index time, et non une liste d'objets. Voir conventions de réponse pour le pourquoi, et pour savoir comment la lire.

Ensuite : le même appel par nom de ville est généralement préférable — https://api.climatememory.com/v1/forecast/city/fr/paris porte l'altitude réelle de la ville et son fuseau horaire, ce qu'une coordonnée nue ne peut pas faire. Voir prévision par ville.

Authentification#

Envoyez votre clé dans l'en-tête X-API-Key à chaque requête. Il n'y a aucun flux OAuth, aucun jeton de porteur à rafraîchir et aucune signature à calculer.

X-API-Key: wd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Les clés sont stockées hachées. Si vous en perdez une, elle est renouvelée, pas récupérée — nous ne pouvons pas vous la remontrer, parce que nous ne l'avons pas. Le renouvellement se fait dans la console et délivre une nouvelle clé immédiatement.

Scopes

Une clé porte des scopes, et c'est la formule qui décide lesquels. Appeler un endpoint hors de vos scopes renvoie 403 scope_denied — ce qui est un problème de formule, pas de clé, et le message le dit.

ScopeDébloque
meteoToute l'API Météo, compléments inclus
djuLes degrés-jours et l'historique horaire
climateL'archive climatique quotidienne et ses agrégats
normalsLes normales OMM et leur comparaison

Les endpoints de géocodage n'en exigent aucun. Toute clé valide résout un nom de lieu, sur n'importe quelle formule, parce que chaque produit ici a besoin d'une coordonnée avant de pouvoir répondre quoi que ce soit. Voir géocodage.

Ne mettez jamais votre clé dans un navigateur. Appelez l'API depuis votre serveur et transmettez le résultat au client. Une clé dans du JavaScript côté navigateur est une clé que n'importe qui peut lire dans l'onglet réseau et dépenser sur votre quota — et comme c'est votre clé, l'usage est indiscernable du vôtre.

S'il vous faut la météo dans une application mobile, les endpoints mobiles existent exactement pour cela : ils délivrent un jeton par installation plutôt que d'embarquer votre clé.

Géocodage#

GEThttps://api.climatememory.com/v1/geocodetoute clé0 crédits

Résoudre un nom de lieu en coordonnées, altitude et fuseau horaire.

Paramètres

ParamètreTypeDéfautDescription
qstringNom de lieu, dans n'importe quelle langue. Accents facultatifs. Obligatoire.
langISO-639-1enAffichage et classement seulement — jamais ce qui est éligible. Un code inconnu retombe sur les noms locaux au lieu d'échouer.
nearlat,lonLa position de l'appelant. Le plus fort départage qui soit.
countryISO-3166-1 alpha-2Restreindre à un seul pays.
limitint10De 1 à 50.

Le catalogue est la classe P de GeoNames en entier — chaque lieu habité de la planète, jusqu'aux hameaux de quelques dizaines d'habitants, et non un extrait filtré par population. Un village de 528 habitants s'y trouve.

Cela ne coûte aucun crédit, sur aucune formule, et n'exige aucun scope. Une clé vendue pour les degrés-jours résout aussi les noms, parce que des degrés-jours ne peuvent pas être demandés sans coordonnée. Le géocodage porte à la place un plafond qui lui est propre — cinq requêtes de géocodage par crédit de votre formule — délibérément assez généreux pour qu'un champ de recherche à la volée, avec anti-rebond, soit l'usage prévu. Voir plafonds de débit et quota.

La correspondance n'est jamais restreinte par la langue

La requête est confrontée au nom local, à sa translittération ASCII et à chaque alias localisé, quoi que dise lang. Cela compte plus qu'il n'y paraît : 98 % des lieux n'ont aucun nom localisé — le français couvre 1,84 % du catalogue — si bien qu'une recherche filtrée par langue trouve les capitales et rien d'autre. lang choisit quel nom revient et influence le classement ; il ne décide jamais de ce qui est éligible.

GET /v1/geocode?q=ramillies&lang=fr
GET /v1/geocode?q=ramillies&lang=fr&near=50.63,3.06   # depuis Lille
GET /v1/geocode?q=bruxelles&lang=fr                     # exonyme, via l'index d'alias
GET /v1/geocode?q=zuesch&lang=de                        # tréma écrit en toutes lettres

Comment les résultats sont classés

Chaque résultat porte un score et, quand near a été fourni, une distance_km. Le classement combine quatre signaux : la qualité de la correspondance du nom, l'importance du lieu, sa proximité avec near, et le fait que le nom trouvé était ou non dans la langue demandée.

Pourquoi near existe. Il y a deux Ramillies — 5 749 habitants dans le Brabant wallon, 528 dans les Hauts-de-France, à 126 km l'une de l'autre. Aucune n'est la bonne réponse dans l'absolu. Sans near, c'est la plus grande qui est renvoyée ; depuis Lille, c'est la française.

L'importance n'est pas que la population. 90,7 % du catalogue n'a aucune population renseignée — GeoNames n'en publie strictement aucune pour certains pays — si bien que le type de lieu (capitale nationale, chef-lieu d'une division administrative, lieu ordinaire, quartier) porte le classement partout où la population est absente.

Les trémas sont écrits en toutes lettres, pas supprimés. Un clavier allemand ou danois sans diacritiques écrit Zuesch pour Züsch et Koeln pour Köln. GeoNames ne porte pas cette graphie — sa forme ASCII est Zusch, tréma retiré plutôt que développé — elle est donc générée ici. Les deux graphies atteignent le lieu, et le résultat affiche le vrai nom dans les deux cas.

Recherche de ville#

GEThttps://api.climatememory.com/v1/cities/searchtoute clé0 crédits

Ancienne recherche par nom. Ne compare que le nom ASCII, trie par population.

GEThttps://api.climatememory.com/v1/cities/nearesttoute clé0 crédits

La ville cataloguée la plus proche d'une coordonnée.

/v1/cities/search est antérieur à /v1/geocode et conserve son contrat pour les appelants déjà bâtis dessus : il ne compare que le nom ASCII et trie par population.

Préférez /v1/geocode pour tout ce qui est exposé à un utilisateur. L'ancienne route ne sait pas reconnaître un exonyme — Bruxelles ne trouvera pas Brussel — et son tri est indéfini pour les neuf lieux sur dix dont la population n'est pas renseignée.

/v1/cities/nearest est le sens inverse, et c'est ce qui transforme un point GPS en slug de ville que vous pourrez ensuite passer aux endpoints par ville. Il prend lat, lon et un max_km facultatif.

Les deux comptent sur le même plafond de géocodage que /v1/geocode, et aucun ne coûte de crédits.

Conventions de réponse#

Six règles valent pour tous les endpoints. Apprenez-les une fois et le reste de cette documentation n'est plus que des noms de champs.

1. Les séries sont des colonnes, pas des lignes

Toute série temporelle est un ensemble de tableaux parallèles partageant un unique index time, plutôt qu'un tableau d'objets :

"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 de chaque tableau décrit le même instant. C'est trois à cinq fois plus léger sur le réseau que la forme en lignes, cela se décode directement dans un dataframe ou une bibliothèque de tracé sans transformation, et c'est ce que les clients de forme Open-Meteo attendent déjà. Pour la parcourir en lignes :

rows = zip(h["time"], h["temperature_2m"], h["precipitation"])

2. Les dates sont en ISO 8601 avec décalage explicite

Toujours. 2026-08-01T00:00:00+00:00, jamais une chaîne locale nue et jamais un entier Unix. Là où vous passez un timezone, le décalage de la réponse est celui de ce fuseau — la chaîne seule est donc sans ambiguïté, et vous n'avez jamais à savoir ce que nous avons supposé.

3. Les unités sont SI, fixes, et jamais négociées

°C, mm, m/s, hPa, W/m², mètres. Il n'y a pas de paramètre units=imperial, et c'est volontaire : un commutateur d'unités est un champ dont le sens dépend d'un autre champ, et c'est ainsi qu'un appelant finit par tracer des Fahrenheit sur un axe Celsius après un changement de configuration que personne n'a relu. Convertissez à votre périphérie, là où se trouve le lecteur.

Les endpoints qui portent des unités inhabituelles embarquent dans la réponse un bloc units qui les nomme explicitement, plutôt que d'attendre que vous vous en souveniez.

4. null signifie « inconnu », jamais « zéro »

Une heure manquante vaut null dans le tableau, en conservant sa place pour que les indices restent alignés. Elle n'est jamais silencieusement remplie par 0 — pour les précipitations, les deux sont des affirmations opposées, et l'une des deux est un mensonge sur une sécheresse.

5. Chaque réponse dit d'où elle vient

Un bloc source (météo) ou un bloc quality (archives) voyage avec la donnée : quel modèle ou quel run a répondu, quel âge il a, à quel point la période était complète. Vous n'avez jamais à déduire la fraîcheur depuis l'horloge.

6. Périmé vaut mieux qu'absent

Si notre run de modèle le plus récent est plus vieux que prévu, nous répondons quand même — avec "stale": true et data_age_hours dans le bloc source — plutôt que de renvoyer un 503. Une prévision vieille de huit heures est plus utile qu'une erreur. Vérifiez le drapeau si la fraîcheur est déterminante pour vous ; ignorez-le sinon.

Il n'y a de pagination nulle part. Une requête renvoie sa réponse entière ou échoue avec une erreur d'amplitude qui vous indique le maximum. Les amplitudes sont bornées par endpoint à la place — ce qui signifie qu'une logique de réessai n'a jamais à traiter un jeu de résultats lu à moitié.

Plafonds de débit, crédits et quota#

Trois plafonds indépendants s'appliquent, et ils échouent différemment à dessein. Chaque réponse réussie indique où vous en êtes :

En-têteSignification
X-RateLimit-RemainingRequêtes restantes dans la minute glissante en cours
X-Quota-RemainingCrédits restants ce mois-ci
X-Quota-Resets-AtHorodatage ISO de la prochaine remise à zéro mensuelle
X-Geocode-RemainingRequêtes de géocodage restantes ce mois-ci. Uniquement sur les endpoints de catalogue, les seuls qu'il borne.

Des crédits, pas des requêtes

Une prévision de ville en cache est une lecture de 3 ms. Dix ans de degrés-jours horaires sur cinq cents sites, non. Tarifer à la requête permettrait à un appelant de rester dans son quota tout en coûtant plus qu'il ne paie, en toute légitimité — ce que coûte un appel dépend donc de la quantité d'archive qu'il déplace.

EndpointCrédits
/v1/forecast, /v1/current, et les formes par ville1
/v1/probability, /v1/air-quality, /v1/marine, /v1/hydrology1
/v1/cells/resolve, /v1/climate/cells/resolve1
/v1/climate/normals3
/v1/climate/normals/compare6 — il répond sur deux périodes
/v1/climate/daily, /v1/climate/monthly2, +1 par période complète de 365,25 jours dans l'amplitude
/v1/climate/summary3, +1 par période complète de 365,25 jours dans l'amplitude — environ 89 sur l'archive complète
/v1/degree-days et ses formes par ville et par maille2, +1 par période complète de 365,25 jours dans l'amplitude
/v1/degree-days/monthly2
/v1/historical(années + 1) × (variables ÷ 2), arrondi à l'inférieur, minimum 1
N'importe lequel des précédents avec format=csv4× le coût du JSON
/v1/geocode, /v1/cities/search, /v1/cities/nearest0 — borné séparément
/v1/models, /v1/methods, /v1/coverage, /v1/climate/coverage, /v1/climate/fields, /v1/historical/variables, /v1/attribution, /v1/licensing1, et aucune clé nécessaire

Le géocodage ne coûte aucun crédit. Chaque produit ici a besoin d'une coordonnée avant de pouvoir répondre : résoudre un nom est donc compris, pas vendu. Un champ de recherche à la volée est l'usage prévu — mettez-y un anti-rebond et laissez-le tourner.

Il est borné, cela dit, et par un plafond qui lui est propre plutôt que par vos crédits : cinq requêtes de géocodage par crédit de votre formule. Sur la formule à 50 000 crédits, cela fait 250 000 recherches par mois, et un champ de recherche avec anti-rebond en dépense environ six par lieu trouvé. L'épuiser renvoie 429 geocode_quota_exceeded et laisse vos crédits intacts — c'est aussi pourquoi les deux sont des codes distincts.

Que faire quand vous atteignez chacun

PlafondRéponseTraitement
Débit (par minute)429 rate_limited + Retry-AfterAttendez Retry-After secondes et réessayez. Celui-ci est transitoire par construction.
Crédits (par période)429 quota_exceeded + X-Quota-Resets-AtRéessayer ne servira à rien avant la remise à zéro. Changez de formule, ou dégradez votre fonctionnalité.
Plafond de géocodage429 geocode_quota_exceededVos crédits sont intacts et tous les autres endpoints fonctionnent encore. Renforcez l'anti-rebond.

Votre période de quota court de votre date d'abonnement au même jour du mois suivant — la période que Stripe facture — et le compteur repart entier à chaque fois. X-Quota-Resets-At porte cette date dans chaque réponse : lisez-la plutôt que de supposer le premier du mois. Les comptes sans abonnement suivent le mois calendaire.

Mettez massivement en cache — cela ne nous dérange pas, et c'est du quota gratuit. Un run de prévision change 2 à 4 fois par jour ; un total de degrés-jours pour un mois passé ne change jamais. Rien ici n'est propre à un utilisateur, donc un cache HTTP ordinaire devant nous est sans risque. Les endpoints d'archive en particulier méritent d'être mis en cache pour toujours en deçà des cinq derniers jours.

Erreurs#

Toute erreur a la même forme, sur les deux hôtes :

{
  "error": {
    "code": "range_too_long",
    "message": "Requested span is 14.0 years; the maximum per request is 10.",
    "max_years": 10
  }
}

Bâtissez votre logique de réessai sur error.code, pas sur le statut HTTP. Trois conditions différentes renvoient 429 et elles appellent trois réactions différentes : l'une veut une courte attente, l'autre un changement de formule, et la troisième ne devrait pas arrêter votre application du tout. Le statut seul ne permet pas de les distinguer. Les clés supplémentaires — max_years ci-dessus — portent la limite que vous avez franchie, de sorte que votre client puisse s'adapter au lieu de deviner.

StatutCodeQue faire
400invalid_latitude, invalid_longitudeCorrigez les coordonnées. La latitude va de −90 à 90, la longitude de −180 à 180.
400range_too_longDécoupez en plusieurs requêtes. max_years donne le plafond.
400bad_requestLa forme générique, quand un contrôle n'a pas de code plus précis. Traitez-la comme permanente — la requête ne deviendra pas valide en étant réessayée.
400invalid_coordinatesLe couple est hors plage ou ne désigne pas un point sur Terre.
400invalid_method, invalid_baseVoir méthodes de calcul.
400invalid_breakdownCe n'est ni daily, ni weekly, ni monthly, ni yearly.
400invalid_dateUne date qui n'est pas au format ISO YYYY-MM-DD.
400invalid_rangeend précède start.
400invalid_nearnear n'est pas de la forme lat,lon.
400unknown_field, unknown_variableDemandez à /v1/fields, /v1/climate/fields ou /v1/historical/variables ce que ce produit contient — aucun des trois ne demande de clé. Sur /v1/forecast, le message nomme la correspondance la plus proche de ce que vous avez demandé.
400unknown_periodCe n'est pas une période de référence OMM. Voir normales.
400period_not_coveredL'archive ne couvre pas cette période de référence en ce point.
401missing_api_keyL'en-tête X-API-Key était absent.
401invalid_api_keyLa clé est inconnue ou a été renouvelée.
401unauthorizedLa forme générique, quand rien de plus précis ne s'applique.
402export_not_in_planL'export CSV est réservé aux formules payantes.
403scope_deniedVotre formule n'inclut pas cette API. Voir scopes.
403key_inactiveLa clé existe mais a été révoquée ou désactivée. Renouveler une clé fait cela à l'ancienne — vérifiez la console avant de conclure à une panne.
404city_not_foundLa réponse inclut un tableau suggestions — affichez-le.
404cell_not_foundUne maille épinglée qui n'existe plus. Voir épingler une maille.
404not_at_seaUne requête maritime au-dessus des terres. Le modèle de vagues n'y a aucune valeur.
404not_foundLa forme générique. Comme ci-dessus : permanente.
404no_city_nearbyRien de catalogué à moins de max_km de ce point.
404outside_archiveLes dates sont en dehors de ce que contient l'archive. /v1/climate/coverage dit ce qu'elle contient, et ne demande aucune clé.
429rate_limitedPatientez Retry-After secondes.
429quota_exceededAttendez la remise à zéro ou changez de formule. Réessayer plus tôt ne peut pas réussir.
429geocode_quota_exceededLe plafond de géocodage uniquement. Vos crédits sont intacts ; ajoutez de l'anti-rebond à votre champ de recherche.
503data_unavailableTransitoire. Réessayez avec un recul exponentiel.
503load_shedRefus délibéré pour protéger le service sous charge. La criticité de votre formule décide qui est délesté en premier. Réessayez avec du recul ; cela se résorbe en quelques secondes.
503catalogue_unavailableLe catalogue de villes est brièvement hors de portée. Les coordonnées fonctionnent toujours — repliez-vous dessus plutôt que de faire échouer la requête.

C'est la liste entière, et elle est vérifiée contre le code source à chaque construction : un code publié ici qu'aucun handler ne lève fait échouer la suite de tests, et un handler qui en lève un que ce tableau ne porte pas également. Si vous rencontrez un code absent ci-dessus, c'est un défaut de cette page et non une valeur à traiter spécialement.

Une politique de réessai qui fonctionne

RETRY = {"rate_limited", "data_unavailable"}

def should_retry(status, code, attempt):
    if code == "quota_exceeded":
        return False              # rien ne change avant la remise à zéro
    if code == "geocode_quota_exceeded":
        return False              # et ne vous arrêtez pas : les crédits marchent
    if code in RETRY:
        return attempt < 5
    return status >= 500

Précision — à quoi s'attendre#

Nous préférons poser les attentes correctement plutôt que vous laisser découvrir les limites en production.

Là où la prévision est solide

Température, pression, vent synoptique, humidité, ensoleillement. L'erreur typique sur la température à 2 m à 24 heures est d'environ 1 à 1,5 °C. L'ECMWF est le meilleur modèle déterministe mondial au monde, et c'est celui que vous obtenez.

Là où elle est plus faible

Les orages convectifs — une maille de 28 km ne peut pas résoudre un orage, et même 3 km ne fait que le suggérer. Le placement et le calage exacts des averses. Les microclimats côtiers et de montagne sous la résolution du modèle. Les brises de mer et les lacs d'air froid de vallée, que la correction de relief ne modélise pas.

Honnêteté géographique

En France, en Allemagne, aux États-Unis et au Canada, nous servons des modèles nationaux à 1,3–3 km, et un petit village obtient réellement sa propre maille. Ailleurs en Europe, vous obtenez 6,5 km. À travers l'Afrique, le Moyen-Orient et la majeure partie de l'Asie, le meilleur modèle public disponible est à 13–28 km : vous obtenez donc la météo de la zone plutôt que celle de la rue. La correction de relief réduit cet écart mais ne le comble pas.

Degrés-jours

Une réanalyse sur grille couvre partout, y compris les lieux sans station météo à moins de 60 km — c'est son avantage sur les fournisseurs adossés à des stations. Sa faiblesse, ce sont les centres-villes, que la réanalyse sous-estime ; les endpoints par ville appliquent une correction calibrée, les endpoints par coordonnée non.

Deux champs sont des estimations, et nous préférons le dire

uv_index est dérivé de l'élévation solaire et du rayonnement large bande, pas d'une colonne d'ozone — précis à environ ±1 unité. precipitation_probability_proxy est une estimation, pas une probabilité ; la véritable se trouve sur /v1/probability. Les deux sont expliqués en détail dans la référence des champs.

Formules#

FormulePrixCrédits / moisDébitClésScopes
Gratuit0 €10 00020 / min1météo, plus degrés-jours et climat pendant 30 jours
Starter19 € / mois50 00060 / min3météo + degrés-jours + climat
Pro79 € / mois400 000300 / min10météo + degrés-jours + climat + normales
Businessà partir de 299 € / moisFixé par contratFixé par contrat50météo + degrés-jours + climat + normales

Le géocodage est hors de ce tableau : il ne coûte aucun crédit sur aucune formule, et porte son propre plafond de cinq requêtes par crédit. Voir plafonds de débit et quota.

La facturation annuelle offre deux mois. Le catalogue à jour est sur developers.climatememory.com/pricing — cette page lit directement le système de facturation, donc si les deux venaient à diverger, c'est elle qui fait foi.

Il n'y a d'endpoint d'export en masse sur aucune formule. L'export CSV existe sur les archives de degrés-jours et de climat, est borné à la même amplitude que l'appel JSON équivalent, et ne renvoie que des lignes agrégées — jamais la série horaire.

Attribution et licences#

GEThttps://api.climatememory.com/v1/attributionaucune clé nécessaire0 crédits

Le libellé exact requis, lisible par une machine. Aucune clé nécessaire.

GEThttps://api.climatememory.com/v1/licensingaucune clé nécessaire0 crédits

Le tableau des licences derrière chaque jeu de données. Aucune clé nécessaire.

L'attribution est une condition d'utilisation, pas une politesse. Les données sous-jacentes nous sont concédées sous des conditions qui l'exigent, et ces conditions vous sont transmises. Affichez une mention partout où la donnée apparaît, y compris dans les produits dérivés. Une ligne de pied de page suffit :

Weather data: ECMWF, DWD, NOAA, Météo-France · Climate data: Copernicus/ERA5-Land · Places: GeoNames

Les deux endpoints ci-dessus ne demandent aucune clé : vous pouvez donc rendre la mention depuis l'API plutôt que d'inscrire en dur une chaîne qui se périmera au changement d'une source. L'attribution du run précis qui a répondu voyage également sur chaque réponse de données, dans source.attribution et dans l'en-tête X-Data-Attribution.

Vous pouvez déclarer que vous utilisez ces données. Vous ne pouvez pas laisser entendre que l'une de ces organisations a produit, approuvé ou cautionne votre produit.

Clause de non-responsabilité

Les prévisions sont fournies sans garantie. Ni la Commission européenne, ni l'ECMWF, ni la DWD, ni la NOAA, ni Météo-France ne sont responsables de l'usage qui est fait de ces informations. Ne les utilisez pas comme seule base de décisions mettant en jeu la vie, la sécurité ou les biens.

Une restriction n'est pas la nôtre à lever : la licence Copernicus réserve les alertes de crue aux autorités nationales et régionales. Voir rivières.