Guía para personas y agentes

Empieza por las capacidades. Recorre todos los enlaces pagination.next; un segmento no equivale al periodo completo. Las consultas no requieren JavaScript ni autenticación.

Para tiempo actual, vuelve a abrir /api/now y compara observation_time con la hora real. generated_at solo fecha esta respuesta. Si la herramienta no puede navegar, no inventes valores.

Operaciones

Preguntas y ejemplos

Reglas y límites

{
  "fields": {
    "temperature": {
      "unit": "°C",
      "description": "Temperatura media"
    },
    "temperature_min": {
      "unit": "°C",
      "description": "Temperatura mínima"
    },
    "temperature_max": {
      "unit": "°C",
      "description": "Temperatura máxima"
    },
    "feels_like": {
      "unit": "°C",
      "description": "Sensación"
    },
    "humidity": {
      "unit": "%",
      "description": "Humedad media"
    },
    "humidity_min": {
      "unit": "%",
      "description": "Humedad mínima"
    },
    "humidity_max": {
      "unit": "%",
      "description": "Humedad máxima"
    },
    "pressure": {
      "unit": "hPa",
      "description": "Presión media publicada"
    },
    "pressure_min": {
      "unit": "hPa",
      "description": "Presión mínima"
    },
    "pressure_max": {
      "unit": "hPa",
      "description": "Presión máxima"
    },
    "wind_speed": {
      "unit": "km/h",
      "description": "Velocidad media"
    },
    "wind_speed_max": {
      "unit": "km/h",
      "description": "Velocidad máxima"
    },
    "wind_gust": {
      "unit": "km/h",
      "description": "Racha máxima"
    },
    "wind_direction": {
      "unit": "°",
      "description": "Dirección de procedencia"
    },
    "dew_point": {
      "unit": "°C",
      "description": "Rocío"
    },
    "rain_total": {
      "unit": "mm",
      "description": "Contador diario acumulativo"
    },
    "rain_amount": {
      "unit": "mm",
      "description": "Precipitación del intervalo"
    },
    "rain_rate": {
      "unit": "mm/h",
      "description": "Intensidad máxima"
    },
    "solar_radiation": {
      "unit": "W/m²",
      "description": "Radiación máxima publicada"
    },
    "uv": {
      "unit": "UV index",
      "description": "UV máximo publicado"
    },
    "wind_speed_min": {
      "unit": "km/h",
      "description": "Viento mínimo"
    },
    "wind_gust_min": {
      "unit": "km/h",
      "description": "Racha mínima"
    },
    "wind_gust_avg": {
      "unit": "km/h",
      "description": "Racha media"
    },
    "dew_point_min": {
      "unit": "°C",
      "description": "Rocío mínimo"
    },
    "dew_point_max": {
      "unit": "°C",
      "description": "Rocío máximo"
    },
    "heat_index": {
      "unit": "°C",
      "description": "Índice de calor"
    },
    "wind_chill": {
      "unit": "°C",
      "description": "Enfriamiento por viento"
    }
  },
  "resolutions": {
    "raw": "Registros originales publicados, normalmente agregados ~5 min",
    "5min": "Alias de raw; no se interpola ni simula cadencia",
    "hourly": "Agregación de registros disponibles; dirección circular",
    "daily": "Resumen por día local; extremos y contador diario",
    "monthly": "Agregación de diarios; se explicita días con datos"
  },
  "seasons": {
    "winter": "Diciembre del año anterior a febrero del año nombrado; invierno 2025-2026: 2025-12-01 a 2026-02-28",
    "spring": "01 marzo–31 mayo",
    "summer": "01 junio–31 agosto",
    "autumn": "01 septiembre–30 noviembre",
    "arbitrary_ranges": true
  },
  "quality": {
    "missing": "null no equivale a cero. Días sin datos y días sin importar se distinguen.",
    "rain": "Máximo contador por día; se suman una sola vez los días. Reinicios impiden confirmar el total. rain_amount intradiario es diferencia; primer intervalo sin antecedente = null.",
    "wind": "Media circular no ponderada; calmas conocidas excluidas; resultante casi nula => dirección null.",
    "nights": "00–08 Europe/Madrid, no ocaso–amanecer. Solo noches completas para recuentos concluyentes.",
    "time": "Europe/Madrid con desfase UTC; modelos en UTC. La hora de generación no es la de observación.",
    "freshness": "Usar observation_time, data_age_seconds y status de /api/now; nunca presentar una copia antigua como actual.",
    "coverage": "Porcentaje de días con datos y cobertura nominal de ranuras de 5 min separados; no garantía de exactitud del sensor."
  },
  "exports": {
    "formats": [
      "csv",
      "json"
    ],
    "requires_imported_range": true,
    "default_max_days_single_response": 1095,
    "default_max_records_single_response": 1000,
    "larger_periods": "HTTP 413 con lista completa parts. Cliente incluido une todo en un archivo; EXPORT_MAX_DAYS y EXPORT_MAX_RECORDS configurables según recursos aprobados.",
    "stream_errors": "Descarta archivos interrumpidos. JSON solo es completo si termina con complete:true. CSV conserva errores como fallo de transporte, no añade filas ficticias."
  },
  "limitations": [
    "El proveedor no garantiza conservar todo el histórico; la fecha de instalación sigue desconocida.",
    "Sin ARCHIVE/importación no se ofrecen falsos resúmenes completos; history puede consultar WU por segmentos.",
    "Visores Windy requieren JavaScript y no aportan rejilla numérica a esta API.",
    "IFS/AIFS no publican run en la API usada; se informa null.",
    "MP4 satélite, interacción con mapas, zoom y preferencias locales son funciones de navegador.",
    "La navegación de ChatGPT depende de sus herramientas; OpenAPI no conecta automáticamente un chat normal."
  ]
}

Manual completo y parámetros