---
title: "Open-Meteo forecast API: spec vs live"
date: 2026-10-30
canonical: https://apidrifter.com/research/public-api-spec-drift-2026-11/open-meteo/
part_of: https://apidrifter.com/research/public-api-spec-drift-2026-11/
---

# Open-Meteo forecast API: spec vs live

Part of [We checked 13 public APIs against their own OpenAPI specs. 9 had hard mismatches.](https://apidrifter.com/research/public-api-spec-drift-2026-11/).

## Summary

- Spec: https://raw.githubusercontent.com/open-meteo/open-meteo/main/openapi/forecast.yml (OpenAPI 3)
- Base URL: `https://api.open-meteo.com`
- Run: 2026-10-30, read-only GET requests, no credentials
- Coverage: 1 operations in the spec, 1 requests sent, 1 successful, 1 operations observed
- Hard violations: 0 distinct schema locations
- Reviewer note: Minor: current_units.interval is undocumented.

## Other body findings (1)

Undocumented fields and loose constraints on successful responses. Documentation gaps, not violations.

- `response-undocumented-property` (body, info) at `GET /v1/forecast > response 200 > application/json > /current_units/interval`
  - response body at /current_units/interval: property "interval" is not documented
  - Request: `GET /v1/forecast?azimuth=0&current=temperature_2m&daily=temperature_2m_max&forecast_days=7&hourly=temperature_2m&latitude=52.52&longitude=13.41&past_days=0&precipitation_unit=mm&temperature_unit=celsius&tilt=0&timeformat=iso8601&wind_speed_unit=kmh -> 200 application/json; charset=utf-8`
  - Actual: `"interval"`
  - If the spec is the source of truth: Stop returning "interval" from GET /v1/forecast if it is not part of the contract.
  - If the implementation is the source of truth: Add "interval" to paths["/v1/forecast"].get.responses["200"].content["application/json"].schema.properties["current_units"].properties.

## Data

- Findings: https://github.com/apidrifter/apidrifter/tree/main/tools/survey/results/open-meteo.findings.json
- Requests sent: https://github.com/apidrifter/apidrifter/tree/main/tools/survey/results/open-meteo.observations.json
- Tool: https://apidrifter.com/docs/cli/ (reproduce with apidrifter run; target definition in tools/survey/targets.json)
