Guía de la API REST
Todo lo que hace la web puede hacerse por programa: la API REST usa el
mismo motor, los mismos límites y los mismos formatos. La referencia
completa e interactiva (OpenAPI) vive en /docs
—hace falta haber iniciado sesión para verla—;
esta guía recorre el flujo entero con ejemplos curl.
1 · Emita un token
Necesita una cuenta gratuita. La única llamada
que acepta contraseña es la emisión del token; todo lo demás viaja con
la cabecera Authorization: Bearer.
curl -X POST https://sarai-data.igme.es/api/v1/tokens \
-H "Content-Type: application/json" \
-d '{"login": "su-usuario", "password": "su-clave", "nombre": "mi-script"}'
La respuesta incluye valor — el token, con la forma
sarai_… — una sola vez: guárdelo. Puede
listar y revocar sus tokens desde la propia API o en su
cuenta.
2 · La serie de un punto, al momento
Para la serie de un punto no hace falta pasar por la
cola: GET /api/v1/meteo/serie la devuelve en la propia
respuesta, en JSON o en CSV, en menos de un segundo incluso para la serie
completa (1961–2026, siete variables).
curl -H "Authorization: Bearer sarai_SU_TOKEN" \
"https://sarai-data.igme.es/api/v1/meteo/serie?x=-3.7038&y=40.4168&desde=2024-08-01&hasta=2024-08-03&variables=pr&variables=tmax&formato=csv"
Admite los mismos parámetros que la consulta en cola
(crs, modo=idw, vecinos,
distancia_maxima_m) y la lista de variables
repitiendo el parámetro. Tiene un tope de días × variables; por encima
responde 413 y remite a la consulta en cola, que además
admite zonas y Excel.
3 · O encole una consulta
Meteorológica puntual (nodo más próximo o
"modo": "idw" para interpolar):
curl -X POST https://sarai-data.igme.es/api/v1/consultas/meteo \
-H "Authorization: Bearer sarai_SU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tipo_espacial": "puntual",
"crs": 4326, "x": "-3.7038", "y": "40.4168",
"modo": "idw",
"variables": ["pr", "tmax", "tmin"],
"desde": "1981-01-01", "hasta": "2010-12-31",
"formato": "csv",
"identificador": "madrid-normal-climatica"
}'
La lista variables elige las columnas del resultado entre
pr, tmax, tmin,
tdew, hr, ssrd y
ws; si se omite, se entregan las siete.
Meteorológica de zona (rectángulo NW–SE con
nw_x, nw_y, se_x, se_y) o
piezométrica (punto y radio):
curl -X POST https://sarai-data.igme.es/api/v1/consultas/piezo \
-H "Authorization: Bearer sarai_SU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"crs": 25830, "x": "440291", "y": "4474255",
"radio_m": 5000,
"desde": "1990-01-01", "hasta": "2024-12-31",
"formato": "json"
}'
Ambas responden 202 Accepted con el id de la
consulta: el resultado se genera en segundo plano. Las coordenadas
admiten cualquier CRS oficial
(catálogo en GET /api/v1/sistemas-referencia, público).
4 · Siga el estado y descargue
# Estado de la consulta (pendiente → procesando → completada)
curl -H "Authorization: Bearer sarai_SU_TOKEN" \
https://sarai-data.igme.es/api/v1/consultas/123
# El fichero, cuando el estado sea "completada"
curl -OJ -H "Authorization: Bearer sarai_SU_TOKEN" \
https://sarai-data.igme.es/api/v1/consultas/123/descarga
GET /api/v1/consultas lista su histórico con filtros por
estado, fechas e identificador. Los ficheros caducan a los
3 días (la descarga responde entonces
410 Gone); la fila del histórico se conserva.
La serie de un nodo o piezómetro concretos
Lo mismo que hace el mapa de las páginas de datos —elegir un nodo o un piezómetro y descargar su serie completa— existe por programa en dos pasos. Primero, localice el punto con los endpoints públicos de catálogo (no requieren token):
# Los nodos de rejilla más próximos a un punto (aquí, los 3 primeros)
curl "https://sarai-data.igme.es/api/v1/nodos/cercanos?x=-3.7038&y=40.4168&n=3"
# Los piezómetros en un radio, con su ficha (serie registrada y fechas)
curl "https://sarai-data.igme.es/api/v1/piezometros/cercanos?x=-3.7038&y=40.4168&radio_m=5000"
Después, pida la serie con las coordenadas lon/lat
devueltas: para un nodo, POST /consultas/meteo en modo
nodo_proximo (resolverá ese mismo nodo, a distancia 0);
para un piezómetro, POST /consultas/piezo con un radio
pequeño (100 m, como hace la web). Ambos catálogos aceptan
crs para expresar x e y en
cualquier sistema oficial.
Errores y límites
- Los errores de validación llegan como
4xxcon un mensaje en español y el campo afectado — por ejemplo, coordenadas fuera del ámbito del CRS declarado. - Las consultas cuyo resultado estimado supera los
100 MB consumen un cupo
diario limitado, y el tamaño máximo por consulta es de
200 MB; acote la zona o el rango
de fechas si lo alcanza. Para saber lo que costaría una consulta por zona
sin encolarla, use
POST /api/v1/consultas/meteo/estimacion. - Antes de una descarga grande,
GET /api/v1/yo/limitesle dice cuántas lleva hoy, cuántas le quedan, cuándo se renueva el cupo (medianoche UTC) y los límites vigentes de tamaño. - Excel se rechaza si el resultado excede el millón de filas del formato: use CSV o JSON para series grandes.
Cada fichero incluye sus metadatos (fuente, criterio aplicado, significado de cada columna): el resultado se explica solo, y se cita con sus parámetros exactos.