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.
| Produit | Hôte | Répond à | Référence |
|---|---|---|---|
| Météo | https://api.climatememory.com | Ce que la météo va faire — prévision, conditions actuelles, ensembles, qualité de l'air, état de la mer, rivières | API Météo |
| Degrés-jours | https://api.climatememory.com | Combien un bâtiment a dû être chauffé ou refroidi — depuis 1950, partout | API Degrés-jours |
| Climat | https://api.climatememory.com | Ce qui est normal ici — 87 ans de climat quotidien, normales OMM, tendances | API 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.
| Scope | Débloque |
|---|---|
meteo | Toute l'API Météo, compléments inclus |
dju | Les degrés-jours et l'historique horaire |
climate | L'archive climatique quotidienne et ses agrégats |
normals | Les 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#
Résoudre un nom de lieu en coordonnées, altitude et fuseau horaire.
Paramètres
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
q | string | — | Nom de lieu, dans n'importe quelle langue. Accents facultatifs. Obligatoire. |
lang | ISO-639-1 | en | Affichage et classement seulement — jamais ce qui est éligible. Un code inconnu retombe sur les noms locaux au lieu d'échouer. |
near | lat,lon | — | La position de l'appelant. Le plus fort départage qui soit. |
country | ISO-3166-1 alpha-2 | — | Restreindre à un seul pays. |
limit | int | 10 | De 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#
Ancienne recherche par nom. Ne compare que le nom ASCII, trie par population.
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ête | Signification |
|---|---|
X-RateLimit-Remaining | Requêtes restantes dans la minute glissante en cours |
X-Quota-Remaining | Crédits restants ce mois-ci |
X-Quota-Resets-At | Horodatage ISO de la prochaine remise à zéro mensuelle |
X-Geocode-Remaining | Requê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.
| Endpoint | Crédits |
|---|---|
/v1/forecast, /v1/current, et les formes par ville | 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 — il répond sur deux périodes |
/v1/climate/daily, /v1/climate/monthly | 2, +1 par période complète de 365,25 jours dans l'amplitude |
/v1/climate/summary | 3, +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 maille | 2, +1 par période complète de 365,25 jours dans l'amplitude |
/v1/degree-days/monthly | 2 |
/v1/historical | (années + 1) × (variables ÷ 2), arrondi à l'inférieur, minimum 1 |
N'importe lequel des précédents avec format=csv | 4× le coût du JSON |
/v1/geocode, /v1/cities/search, /v1/cities/nearest | 0 — borné séparément |
/v1/models, /v1/methods, /v1/coverage, /v1/climate/coverage, /v1/climate/fields, /v1/historical/variables, /v1/attribution, /v1/licensing | 1, 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
| Plafond | Réponse | Traitement |
|---|---|---|
| Débit (par minute) | 429 rate_limited + Retry-After | Attendez Retry-After secondes et réessayez. Celui-ci est transitoire par construction. |
| Crédits (par période) | 429 quota_exceeded + X-Quota-Resets-At | Réessayer ne servira à rien avant la remise à zéro. Changez de formule, ou dégradez votre fonctionnalité. |
| Plafond de géocodage | 429 geocode_quota_exceeded | Vos 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.
| Statut | Code | Que faire |
|---|---|---|
| 400 | invalid_latitude, invalid_longitude | Corrigez les coordonnées. La latitude va de −90 à 90, la longitude de −180 à 180. |
| 400 | range_too_long | Découpez en plusieurs requêtes. max_years donne le plafond. |
| 400 | bad_request | La 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. |
| 400 | invalid_coordinates | Le couple est hors plage ou ne désigne pas un point sur Terre. |
| 400 | invalid_method, invalid_base | Voir méthodes de calcul. |
| 400 | invalid_breakdown | Ce n'est ni daily, ni weekly, ni monthly, ni yearly. |
| 400 | invalid_date | Une date qui n'est pas au format ISO YYYY-MM-DD. |
| 400 | invalid_range | end précède start. |
| 400 | invalid_near | near n'est pas de la forme lat,lon. |
| 400 | unknown_field, unknown_variable | Demandez à /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é. |
| 400 | unknown_period | Ce n'est pas une période de référence OMM. Voir normales. |
| 400 | period_not_covered | L'archive ne couvre pas cette période de référence en ce point. |
| 401 | missing_api_key | L'en-tête X-API-Key était absent. |
| 401 | invalid_api_key | La clé est inconnue ou a été renouvelée. |
| 401 | unauthorized | La forme générique, quand rien de plus précis ne s'applique. |
| 402 | export_not_in_plan | L'export CSV est réservé aux formules payantes. |
| 403 | scope_denied | Votre formule n'inclut pas cette API. Voir scopes. |
| 403 | key_inactive | La 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. |
| 404 | city_not_found | La réponse inclut un tableau suggestions — affichez-le. |
| 404 | cell_not_found | Une maille épinglée qui n'existe plus. Voir épingler une maille. |
| 404 | not_at_sea | Une requête maritime au-dessus des terres. Le modèle de vagues n'y a aucune valeur. |
| 404 | not_found | La forme générique. Comme ci-dessus : permanente. |
| 404 | no_city_nearby | Rien de catalogué à moins de max_km de ce point. |
| 404 | outside_archive | Les dates sont en dehors de ce que contient l'archive. /v1/climate/coverage dit ce qu'elle contient, et ne demande aucune clé. |
| 429 | rate_limited | Patientez Retry-After secondes. |
| 429 | quota_exceeded | Attendez la remise à zéro ou changez de formule. Réessayer plus tôt ne peut pas réussir. |
| 429 | geocode_quota_exceeded | Le plafond de géocodage uniquement. Vos crédits sont intacts ; ajoutez de l'anti-rebond à votre champ de recherche. |
| 503 | data_unavailable | Transitoire. Réessayez avec un recul exponentiel. |
| 503 | load_shed | Refus 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. |
| 503 | catalogue_unavailable | Le 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#
| Formule | Prix | Crédits / mois | Débit | Clés | Scopes |
|---|---|---|---|---|---|
| Gratuit | 0 € | 10 000 | 20 / min | 1 | météo, plus degrés-jours et climat pendant 30 jours |
| Starter | 19 € / mois | 50 000 | 60 / min | 3 | météo + degrés-jours + climat |
| Pro | 79 € / mois | 400 000 | 300 / min | 10 | météo + degrés-jours + climat + normales |
| Business | à partir de 299 € / mois | Fixé par contrat | Fixé par contrat | 50 | mé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#
Le libellé exact requis, lisible par une machine. Aucune clé nécessaire.
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.