Open Meteo
When to use
- •You need weather forecasts (hourly/daily/current) for coordinates.
- •You need air quality / pollen forecasts (hourly/current) for coordinates.
- •You need to resolve a user-provided place name to coordinates and timezone (geocoding).
- •You need to support multi-location batching (comma-separated lat/lon lists).
- •You need a deterministic checklist for Open-Meteo query parameters, response parsing, and error handling.
Goal
Provide a reliable, production-friendly way to call Open-Meteo APIs (Forecast, Air Quality, Geocoding), choose variables, control time/units/timezone, and parse responses consistently.
Steps
- •
Pick the correct API and base URL
- •Forecast:
https://api.open-meteo.com/v1/forecast - •Air Quality:
https://air-quality-api.open-meteo.com/v1/air-quality - •Geocoding:
https://geocoding-api.open-meteo.com/v1/search
- •Forecast:
- •
Resolve coordinates (if you only have a name)
- •Call Geocoding with
nameand optionallanguage,countryCode,count. - •Use the returned
latitude,longitude, andtimezonefor subsequent calls.
- •Call Geocoding with
- •
Design your time axis (timezone, timeformat, and range)
- •Prefer
timezone=autowhen results must align to local midnight. - •If you request
daily=..., settimezone(docs: daily requires timezone). - •Choose
timeformat=iso8601for readability, ortimeformat=unixtimefor compactness.- •If using
unixtime, remember timestamps are GMT+0 and you must applyutc_offset_secondsfor correct local dates.
- •If using
- •Choose range controls:
- •
forecast_daysand optionalpast_days, or - •explicit
start_date/end_date(YYYY-MM-DD), and for sub-dailystart_hour/end_hour.
- •
- •Prefer
- •
Choose variables minimally (avoid "download everything")
- •Forecast: request only the variables you need via
hourly=...,daily=...,current=.... - •Air Quality: request only the variables you need via
hourly=...,current=.... - •Keep variable names exact; typos return a JSON error with
error: true.
- •Forecast: request only the variables you need via
- •
Choose units and model selection deliberately
- •Forecast units:
- •
temperature_unit(celsius/fahrenheit) - •
wind_speed_unit(kmh/ms/mph/kn) - •
precipitation_unit(mm/inch)
- •
- •Forecast model selection:
- •default
models=auto/ “Best match” combines the best models. - •you can explicitly request models via
models=.... - •provider-specific forecast endpoints also exist (provider implied by path). See
references/models.md(section "Endpoints vsmodels=") for examples and doc links. - •for provider/model-specific selection tradeoffs, see
references/models.md.
- •default
- •Air Quality domain selection:
- •
domains=auto(default) orcams_europe/cams_global.
- •
- •Forecast units:
- •
Implement robust request/response handling
- •Treat HTTP errors and JSON-level errors separately.
- •JSON error format is:
- •
{"error": true, "reason": "..."}
- •
- •When requesting multiple locations (comma-separated coordinates), expect the JSON output shape to change to a list of structures.
- •Optionally use
format=csvorformat=xlsxwhen you need data export.
- •
Validate correctness with a “known city” check
- •Geocode “Berlin” → Forecast
hourly=temperature_2mfor 1–2 days → verify timezone and array lengths. - •Air Quality
hourly=pm10,pm2_5,european_aqi→ verify units and presence ofhourly_units.
- •Geocode “Berlin” → Forecast
Critical prohibitions
- •Do not include out-of-scope APIs in this skill’s implementation guidance: Historical Weather, Ensemble Models, Seasonal Forecast, Climate Change, Marine, Satellite Radiation, Elevation, Flood.
- •Do not omit
timezonewhen requestingdailyvariables (per docs). - •Do not assume
unixtimetimestamps are local time; they are GMT+0 and requireutc_offset_secondsadjustment. - •Do not silently ignore
{"error": true}responses; fail fast with the providedreason. - •Do not request huge variable sets by default; keep queries minimal to reduce payload and avoid accidental overuse.
Definition of done
- •You can geocode a place name and obtain coordinates/timezone.
- •You can fetch Forecast data with at least one
hourly, onedaily(with timezone), and onecurrentvariable. - •You can fetch Air Quality data for at least one pollutant and one AQI metric.
- •Your client code handles both HTTP-level failures and JSON-level
error: truewith clear messages. - •Attribution requirements from the docs are captured for Air Quality (CAMS) and Geocoding (GeoNames).
Links
- •Official docs (in-scope):
- •Skill references:
- •
references/forecast-api.md - •
references/models.md - •
references/weather-codes.md - •
references/air-quality-api.md - •
references/geocoding-api.md - •
references/examples.md
- •