climatememory desarrolladores

Referencia de la API

Empezar

Tres API, una sola clave: predicciones meteorológicas del ECMWF y de los modelos nacionales de alta resolución, grados-día de calefacción y de refrigeración, y 87 años de clima diario. Esta página contiene todo lo que necesita antes de la primera llamada. Los endpoints en sí están en las tres páginas de referencia.

De qué se trata#

Climate Memory sirve tres productos desde dos hosts, con una única clave de API.

ProductoHostResponde aReferencia
Meteorologíahttps://api.climatememory.comQué hará el tiempo — predicción, condiciones actuales, conjuntos, calidad del aire, estado del mar, ríosAPI de Meteorología
Grados-díahttps://api.climatememory.comCuánto hubo que calentar o enfriar un edificio — desde 1950, en cualquier lugarAPI de Grados-día
Climahttps://api.climatememory.comQué es normal aquí — 87 años de clima diario, normales OMM, tendenciasAPI de Clima

Dos hosts en lugar de uno porque los grados-día leen otro archivo con un perfil de coste distinto, y separarlos permite que uno sea lento sin ralentizar al otro. No tiene que preocuparse por ello más allá de copiar la URL base correcta.

Todos los endpoints son GET. En esta API no hay cuerpo de solicitud en ninguna parte, ni cursor de paginación, ni sesión. Una llamada es una URL más una cabecera, lo que significa que puede probar cualquiera de ellas en la barra de direcciones de un navegador o con una herramienta como curl, y cachear cualquiera de ellas delante de nosotros sin tratamiento especial.

Su primera llamada#

Tres pasos. Todo junto lleva alrededor de un minuto.

1. Obtener una clave

Cree una cuenta en developers.climatememory.com/signin. El plan gratuito no pide tarjeta, le da 10 000 créditos al mes, y su clave aparece en pantalla de inmediato. Guárdela en una variable de entorno — todos los ejemplos de abajo leen $API_KEY.

export API_KEY="wd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

2. Hacer la llamada

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. Leer la respuesta

Toda serie vuelve orientada a columnas — arrays paralelos que comparten un único índice time, y no una lista de objetos. Véase convenciones de respuesta para saber por qué, y cómo leerla.

A continuación: la misma llamada por nombre de ciudad suele ser mejor — https://api.climatememory.com/v1/forecast/city/fr/paris lleva la altitud real y el huso horario de la ciudad, cosa que una coordenada pelada no puede. Véase predicción por ciudad.

Autenticación#

Envíe su clave en la cabecera X-API-Key en cada solicitud. No hay flujo OAuth, ni token de portador que refrescar, ni firma que calcular.

X-API-Key: wd_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Las claves se almacenan cifradas mediante hash. Si pierde una, se renueva, no se recupera — no podemos volver a mostrársela, porque no la tenemos. La renovación se hace en la consola y emite una clave nueva de inmediato.

Scopes

Una clave lleva scopes, y el plan decide cuáles. Llamar a un endpoint fuera de sus scopes devuelve 403 scope_denied — que es un problema de plan, no de clave, y el mensaje así lo dice.

ScopeDesbloquea
meteoToda la API de Meteorología, complementos incluidos
djuLos grados-día y el histórico horario
climateEl archivo climático diario y sus agregados
normalsLas normales OMM y su comparación

Los endpoints de geocodificado no exigen ninguno. Cualquier clave válida resuelve un nombre de lugar, en cualquier plan, porque todos los productos de aquí necesitan una coordenada antes de poder responder nada. Véase geocodificado.

No ponga nunca su clave en un navegador. Llame a la API desde su servidor y pase el resultado al cliente. Una clave en el JavaScript del navegador es una clave que cualquiera puede leer en la pestaña de red y gastar contra su cuota — y como es su clave, el uso es indistinguible del suyo.

Si necesita meteorología en una aplicación móvil, los endpoints móviles existen justo para eso: emiten un token por instalación en lugar de incrustar su clave.

Geocodificado#

GEThttps://api.climatememory.com/v1/geocodecualquier clave0 créditos

Resolver un nombre de lugar a coordenadas, altitud y huso horario.

Parámetros

ParámetroTipoPor defectoDescripción
qstringNombre de lugar, en cualquier idioma. Acentos opcionales. Obligatorio.
langISO-639-1enSolo visualización y ordenación — nunca qué es elegible. Un código desconocido recurre a los nombres locales en lugar de fallar.
nearlat,lonLa posición de quien llama. El criterio de desempate más fuerte que existe.
countryISO-3166-1 alpha-2Restringir a un solo país.
limitint10De 1 a 50.

El catálogo es la clase de entidad P de GeoNames al completo — cada lugar habitado del planeta, hasta aldeas de unas pocas docenas de personas, y no un extracto filtrado por población. Un pueblo de 528 habitantes está en él.

No cuesta créditos, en ningún plan, y no exige scope. Una clave vendida para grados-día también resuelve nombres, porque los grados-día no se pueden pedir sin coordenada. A cambio lleva un tope propio — cinco solicitudes de geocodificado por crédito de su plan — deliberadamente lo bastante generoso como para que un campo de búsqueda con sugerencias y antirrebote sea el uso previsto. Véase límites de ritmo y cuota.

La coincidencia nunca está restringida por el idioma

La consulta se prueba contra el nombre local, su transliteración ASCII y cada alias localizado, diga lo que diga lang. Eso importa más de lo que parece: el 98 % de los lugares no tiene ningún nombre localizado — el francés cubre el 1,84 % del catálogo — de modo que una búsqueda filtrada por idioma encontraría capitales y nada más. lang elige qué nombre vuelve e influye en la ordenación; nunca decide qué es elegible.

GET /v1/geocode?q=ramillies&lang=fr
GET /v1/geocode?q=ramillies&lang=fr&near=50.63,3.06   # desde Lille
GET /v1/geocode?q=bruxelles&lang=fr                     # exónimo, vía el índice de alias
GET /v1/geocode?q=zuesch&lang=de                        # diéresis escrita en letras

Cómo se ordenan los resultados

Cada resultado lleva un score y, cuando se indicó near, una distance_km. La ordenación combina cuatro señales: lo bien que coincidió el nombre, lo destacado que es el lugar, lo cerca que está de near, y si el nombre coincidente estaba en el idioma solicitado.

Por qué existe near. Hay dos Ramillies — 5 749 habitantes en el Brabante Valón, 528 en Alta Francia, a 126 km de distancia. Ninguna es la respuesta correcta en abstracto. Sin near se devuelve la mayor; desde Lille, la francesa.

La relevancia no es solo población. El 90,7 % del catálogo no tiene población registrada — GeoNames no publica ninguna en absoluto para algunos países — de modo que el tipo de lugar (capital nacional, capital de una división administrativa, lugar corriente, barrio) sostiene la ordenación allí donde falta la población.

Las diéresis se escriben en letras, no se eliminan. Un teclado alemán o danés sin diacríticos escribe Zuesch por Züsch y Koeln por Köln. GeoNames no recoge esa grafía — su forma ASCII es Zusch, con la diéresis suprimida y no desarrollada — así que se genera aquí. Ambas grafías llegan al lugar, y el resultado muestra el nombre real en los dos casos.

Búsqueda de ciudad#

GEThttps://api.climatememory.com/v1/cities/searchcualquier clave0 créditos

Búsqueda por nombre antigua. Solo compara el nombre ASCII, ordena por población.

GEThttps://api.climatememory.com/v1/cities/nearestcualquier clave0 créditos

La ciudad catalogada más cercana a una coordenada.

/v1/cities/search es anterior a /v1/geocode y mantiene su contrato para los clientes ya construidos sobre él: solo compara el nombre ASCII y ordena por población.

Prefiera /v1/geocode para todo lo que vea un usuario. La ruta antigua no sabe reconocer un exónimo — Bruxelles no encontrará Brussel — y su ordenación es indefinida para los nueve de cada diez lugares sin población registrada.

/v1/cities/nearest es el sentido inverso, y es lo que convierte una posición GPS en un slug de ciudad que después puede pasar a los endpoints por ciudad. Toma lat, lon y un max_km opcional.

Ambos cuentan contra el mismo tope de geocodificado que /v1/geocode, y ninguno cuesta créditos.

Convenciones de respuesta#

Seis reglas valen para todos los endpoints. Apréndalas una vez y el resto de esta documentación son solo nombres de campos.

1. Las series son columnas, no filas

Toda serie temporal es un conjunto de arrays paralelos que comparten un único índice time, en lugar de un array de objetos:

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

El índice i de cada array describe el mismo instante. Esto ocupa de tres a cinco veces menos en la red que la forma en filas, se descodifica directamente en un dataframe o en una biblioteca de gráficos sin transformación, y es lo que los clientes con forma de Open-Meteo ya esperan. Para recorrerlo por filas:

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

2. Las fechas son ISO 8601 con desplazamiento explícito

Siempre. 2026-08-01T00:00:00+00:00, nunca una cadena local pelada ni un entero Unix. Allí donde usted pase una timezone, el desplazamiento de la respuesta es el de ese huso — la cadena por sí sola es, pues, inequívoca, y nunca tiene que saber qué supusimos nosotros.

3. Las unidades son SI, fijas y no negociables

°C, mm, m/s, hPa, W/m², metros. No hay ningún parámetro units=imperial, y es a propósito: un conmutador de unidades es un campo cuyo significado depende de otro campo, y así es como un cliente acaba representando Fahrenheit sobre un eje Celsius tras un cambio de configuración que nadie revisó. Convierta en su borde, allí donde está el lector.

Los endpoints que llevan unidades poco habituales incluyen en la respuesta un bloque units que las nombra explícitamente, en lugar de esperar que usted las recuerde.

4. null significa «desconocido», nunca «cero»

Una hora que falta es null en el array, y conserva su posición para que los índices sigan alineados. Nunca se rellena en silencio con 0 — para la precipitación son dos afirmaciones opuestas, y una de las dos es una mentira sobre una sequía.

5. Cada respuesta dice de dónde viene

Un bloque source (meteorología) o un bloque quality (archivos) viaja con los datos: qué modelo o qué pasada respondió, qué antigüedad tiene, cómo de completo estaba el periodo. Nunca tiene que deducir la frescura del reloj.

6. Caducado gana a ausente

Si nuestra pasada de modelo más reciente es más antigua de lo esperado, respondemos igualmente — con "stale": true y data_age_hours en el bloque source — en lugar de devolver un 503. Una predicción de ocho horas de antigüedad es más útil que un error. Compruebe el indicador si la frescura es determinante para usted; ignórelo si no lo es.

No hay paginación en ninguna parte. Una solicitud devuelve su respuesta entera o falla con un error de rango que le indica el máximo. En su lugar los intervalos están acotados por endpoint — lo que significa que una lógica de reintento nunca tiene que tratar un conjunto de resultados leído a medias.

Límites de ritmo, créditos y cuota#

Se aplican tres límites independientes, y fallan de forma distinta a propósito. Cada respuesta correcta informa de dónde está usted:

CabeceraSignificado
X-RateLimit-RemainingSolicitudes restantes en el minuto deslizante en curso
X-Quota-RemainingCréditos restantes este mes
X-Quota-Resets-AtMarca de tiempo ISO del próximo reinicio mensual
X-Geocode-RemainingSolicitudes de geocodificado restantes este mes. Solo en los endpoints de catálogo, los únicos que acota.

Créditos, no solicitudes

Una predicción de ciudad en caché es una lectura de 3 ms. Diez años de grados-día horarios sobre quinientos emplazamientos no lo es. Tarificar por solicitudes permitiría a un cliente permanecer dentro de su cuota y costar más de lo que paga, de forma enteramente legítima — así que lo que cuesta una llamada depende de cuánto archivo mueve.

EndpointCréditos
/v1/forecast, /v1/current y las variantes por ciudad1
/v1/probability, /v1/air-quality, /v1/marine, /v1/hydrology1
/v1/cells/resolve, /v1/climate/cells/resolve1
/v1/climate/normals3
/v1/climate/normals/compare6 — responde sobre dos periodos
/v1/climate/daily, /v1/climate/monthly2, +1 por cada periodo completo de 365,25 días del intervalo
/v1/climate/summary3, +1 por cada periodo completo de 365,25 días del intervalo — unos 89 sobre el archivo completo
/v1/degree-days y sus variantes por ciudad y por celda2, +1 por cada periodo completo de 365,25 días del intervalo
/v1/degree-days/monthly2
/v1/historical(años + 1) × (variables ÷ 2), redondeado a la baja, mínimo 1
Cualquiera de los anteriores con format=csv4× el coste del JSON
/v1/geocode, /v1/cities/search, /v1/cities/nearest0 — acotado por separado
/v1/models, /v1/methods, /v1/coverage, /v1/climate/coverage, /v1/climate/fields, /v1/historical/variables, /v1/attribution, /v1/licensing1, y no requiere clave

El geocodificado no cuesta créditos. Todos los productos de aquí necesitan una coordenada antes de poder responder, así que resolver un nombre va incluido y no se vende. Un campo de búsqueda con sugerencias es el uso previsto: póngale antirrebote y déjelo funcionar.

Está acotado, eso sí, y por un tope propio en lugar de por sus créditos: cinco solicitudes de geocodificado por crédito de su plan. En el plan de 50 000 créditos son 250 000 búsquedas al mes, y un campo de búsqueda con antirrebote gasta unas seis por lugar encontrado. Agotarlo devuelve 429 geocode_quota_exceeded y deja sus créditos intactos — que es también por lo que son dos códigos distintos.

Qué hacer cuando alcanza cada uno

LímiteRespuestaTratamiento
Ritmo (por minuto)429 rate_limited + Retry-AfterEspere Retry-After segundos y reintente. Este es transitorio por construcción.
Créditos (por periodo)429 quota_exceeded + X-Quota-Resets-AtReintentar no servirá de nada hasta el reinicio. Cambie de plan, o degrade su funcionalidad.
Tope de geocodificado429 geocode_quota_exceededSus créditos están intactos y el resto de endpoints sigue funcionando. Refuerce el antirrebote.

Su periodo de cuota va desde la fecha de su suscripción hasta el mismo día del mes siguiente — el periodo que factura Stripe — y el contador vuelve a empezar entero cada vez. X-Quota-Resets-At lleva esa fecha en cada respuesta: léala en lugar de suponer el día uno del mes. Las cuentas sin suscripción siguen el mes natural.

Cachee sin reparos — no nos molesta, y es cuota gratis. Una pasada de predicción cambia de 2 a 4 veces al día; un total de grados-día de un mes pasado no cambia nunca. Nada de aquí es específico de un usuario, así que una caché HTTP corriente delante de nosotros es segura. Los endpoints de archivo en particular merecen cachearse para siempre por debajo de los últimos cinco días.

Errores#

Todo error tiene la misma forma, en ambos hosts:

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

Construya su lógica de reintento sobre error.code, no sobre el estado HTTP. Tres condiciones distintas devuelven 429 y requieren tres reacciones distintas: una quiere una espera corta, otra un cambio de plan, y la tercera no debería detener su aplicación en absoluto. El estado por sí solo no puede distinguirlas. Las claves adicionales — max_years arriba — llevan el límite que usted cruzó, de modo que su cliente pueda adaptarse en lugar de adivinar.

EstadoCódigoQué hacer
400invalid_latitude, invalid_longitudeCorrija las coordenadas. La latitud va de −90 a 90, la longitud de −180 a 180.
400range_too_longDivida en varias solicitudes. max_years indica el tope.
400bad_requestLa forma genérica, cuando una comprobación no tiene un código propio más preciso. Trátela como permanente — la solicitud no se volverá válida por reintentarla.
400invalid_coordinatesEl par está fuera de rango o no es un punto de la Tierra.
400invalid_method, invalid_baseVéanse métodos de cálculo.
400invalid_breakdownNo es daily, weekly, monthly ni yearly.
400invalid_dateUna fecha que no es ISO YYYY-MM-DD.
400invalid_rangeend precede a start.
400invalid_nearnear no tiene la forma lat,lon.
400unknown_field, unknown_variablePregunte a /v1/fields, /v1/climate/fields o /v1/historical/variables qué contiene ese producto — ninguno de los tres necesita clave. En /v1/forecast el mensaje nombra la coincidencia más próxima a lo que pidió.
400unknown_periodNo es un periodo de referencia OMM. Véanse normales.
400period_not_coveredEl archivo no abarca ese periodo de referencia en ese punto.
401missing_api_keyFaltaba la cabecera X-API-Key.
401invalid_api_keyLa clave es desconocida o se ha renovado.
401unauthorizedLa forma genérica, cuando no aplica nada más preciso.
402export_not_in_planLa exportación CSV es exclusiva de los planes de pago.
403scope_deniedSu plan no incluye esta API. Véanse scopes.
403key_inactiveLa clave existe pero ha sido revocada o desactivada. Renovar una clave hace justo eso con la antigua — revise la consola antes de dar por hecha una avería.
404city_not_foundLa respuesta incluye un array suggestions — muéstrelo.
404cell_not_foundUna celda fijada que ya no existe. Véase fijar una celda.
404not_at_seaUna solicitud marina sobre tierra. El modelo de oleaje no tiene valor allí.
404not_foundLa forma genérica. Como arriba: permanente.
404no_city_nearbyNada catalogado a menos de max_km de ese punto.
404outside_archiveLas fechas quedan fuera de lo que contiene el archivo. /v1/climate/coverage dice qué contiene, y no necesita clave.
429rate_limitedEspere Retry-After segundos.
429quota_exceededEspere al reinicio o cambie de plan. Reintentar antes no puede funcionar.
429geocode_quota_exceededSolo el tope de geocodificado. Sus créditos están intactos; ponga antirrebote a su campo de búsqueda.
503data_unavailableTransitorio. Reintente con retroceso exponencial.
503load_shedRechazo deliberado para proteger el servicio bajo carga. La criticidad de su plan decide a quién se descarta primero. Reintente con retroceso; se resuelve en segundos.
503catalogue_unavailableEl catálogo de ciudades está brevemente fuera de alcance. Las coordenadas siguen funcionando — recurra a ellas en lugar de hacer fallar la solicitud.

Esa es la lista completa, y se comprueba contra el código fuente en cada compilación: un código publicado aquí que ningún handler lanza hace fallar la batería de pruebas, y lo mismo un handler que lance uno que esta tabla no recoja. Si se topa con un código que no está arriba, es un defecto de esta página y no un valor que deba tratar de forma especial.

Una política de reintento que funciona

RETRY = {"rate_limited", "data_unavailable"}

def should_retry(status, code, attempt):
    if code == "quota_exceeded":
        return False              # nada cambia hasta el reinicio
    if code == "geocode_quota_exceeded":
        return False              # y no se detenga: los créditos siguen
    if code in RETRY:
        return attempt < 5
    return status >= 500

Precisión — qué esperar#

Preferimos fijar bien las expectativas a que usted descubra los límites en producción.

Dónde la predicción es sólida

Temperatura, presión, viento sinóptico, humedad, insolación. El error típico de la temperatura a 2 m a 24 horas ronda 1 a 1,5 °C. El ECMWF es el mejor modelo determinista global del mundo, y es el que usted obtiene.

Dónde es más débil

Las tormentas convectivas — una celda de 28 km no puede resolver una tormenta, e incluso 3 km apenas la insinúan. La ubicación y el momento exactos de los chubascos. Los microclimas costeros y de montaña por debajo de la resolución del modelo. Las brisas marinas y las bolsas de aire frío de valle, que la corrección de relieve no modela.

Honestidad geográfica

En Francia, Alemania, Estados Unidos y Canadá servimos modelos nacionales de 1,3 a 3 km, y un pueblo pequeño obtiene realmente su propia celda. En el resto de Europa obtiene 6,5 km. En África, Oriente Medio y la mayor parte de Asia el mejor modelo público disponible es de 13 a 28 km, así que obtiene la meteorología de la zona en lugar de la de la calle. La corrección de relieve reduce esa brecha, pero no la cierra.

Grados-día

Un reanálisis en malla cubre todas partes, incluidos lugares sin estación meteorológica en 60 km a la redonda — esa es su ventaja frente a los proveedores basados en estaciones. Su debilidad son los centros urbanos, que el reanálisis subestima; los endpoints por ciudad aplican una corrección calibrada, los endpoints por coordenada no.

Dos campos son estimaciones, y preferimos decirlo

uv_index se deriva de la elevación solar y la radiación de banda ancha, no de una columna de ozono — preciso a ±1 unidad aproximadamente. precipitation_probability_proxy es una estimación, no una probabilidad; la auténtica está en /v1/probability. Ambos se explican por extenso en la referencia de campos.

Planes#

PlanPrecioCréditos / mesRitmoClavesScopes
Gratuito0 €10 00020 / min1meteorología, más grados-día y clima durante 30 días
Starter19 € / mes50 00060 / min3meteorología + grados-día + clima
Pro79 € / mes400 000300 / min10meteorología + grados-día + clima + normales
Businessdesde 299 € / mesAcordado por contratoAcordado por contrato50meteorología + grados-día + clima + normales

El geocodificado queda fuera de esta tabla: no cuesta créditos en ningún plan y lleva su propio tope de cinco solicitudes por crédito. Véanse límites de ritmo y cuota.

La facturación anual regala dos meses. El catálogo vigente está en developers.climatememory.com/pricing — esa página lee el sistema de facturación directamente, así que si ambos llegaran a discrepar, manda ella.

No hay endpoint de exportación masiva en ningún plan. La exportación CSV existe para los archivos de grados-día y de clima, está acotada al mismo intervalo que la llamada JSON equivalente, y devuelve solo filas agregadas — nunca la serie horaria.

Atribución y licencias#

GEThttps://api.climatememory.com/v1/attributionno requiere clave0 créditos

El texto exacto requerido, legible por máquina. No requiere clave.

GEThttps://api.climatememory.com/v1/licensingno requiere clave0 créditos

La tabla de licencias que hay detrás de cada conjunto de datos. No requiere clave.

La atribución es una condición de uso, no una cortesía. Los datos subyacentes nos están licenciados bajo condiciones que la exigen, y esas condiciones se le transmiten a usted. Muestre un aviso allí donde aparezcan los datos, incluidos los productos derivados. Basta con una línea a pie de página:

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

Ninguno de los dos endpoints anteriores necesita clave, así que puede renderizar el aviso desde la API en lugar de incrustar una cadena que quedará obsoleta cuando cambie una fuente. La atribución de la pasada concreta que respondió viaja además en cada respuesta de datos, en source.attribution y en la cabecera X-Data-Attribution.

Puede declarar que utiliza estos datos. No puede dar a entender que alguna de estas organizaciones ha producido, aprobado o respalda su producto.

Descargo de responsabilidad

Las predicciones se facilitan sin garantía. Ni la Comisión Europea, ni el ECMWF, ni el DWD, ni la NOAA, ni Météo-France son responsables del uso que se haga de esta información. No la utilice como base única de decisiones en las que estén en juego la vida, la seguridad o los bienes.

Hay una restricción que no nos corresponde levantar: la licencia de Copernicus reserva los avisos de crecida a las autoridades nacionales y regionales. Véase ríos.