Skip to content

Static JSON API

All forecasts and input data are available as static JSON files under the base URL. No key and no sign-up are needed. Forecast files are updated weekly on Thursdays, unless the table says otherwise.

Base URL

https://coldfront.wi7.net/api/v1/
Base URL

Current state

Data version Oct 13, 2026, issued on Oct 13, 2026, model: ensemble-dyn-season-holiday. The forecast covers 17 regions.

Files

Files of the API
FileContentUpdateSize
index.jsonOverview of all regions: state, model and short forecast per horizon (ForecastIndex).weekly, Thursdayssmall
regions/<id>.jsonForecast of one region with observations, seasonal norm and all horizons (ForecastFile). One file per region.weekly, Thursdayssmall
series.jsonCleaned weekly inputs of all regions as dense arrays; null means missing.weekly, Thursdaysmedium
backtest/test.jsonEvaluation of the untouched test season: metrics, comparisons, peak errors and the publication decision.once per test seasonsmall
backtest/tuning.jsonTuning on earlier seasons: feature candidates and spread factor.when the model changessmall
backtest/evaluation.jsonFrozen evaluation protocol: seasons, metrics and thresholds.when the protocol changessmall
backtest/model.jsonChosen model configuration: feature groups and spread factor.when the model changessmall
geo/laender.topo.jsonBoundaries of the 16 federal states as TopoJSON (simplified).rarelymedium
geo/plz.jsonPostal code as an object with [latitude, longitude, region ID]. The lookup runs in the browser.rarelymedium
wastewater-sites.jsonWastewater monitoring sites with region, population and recorded pathogens.when sites changesmall
sources.jsonProvenance of all data sources: URL, retrieval date, checksum and licence.weekly, Thursdayssmall
archive/<date>.json.gzArchive of one forecast run as gzip-compressed JSON, one file per issue date.weeklysmall
holidays/<year>.jsonVacation periods per federal state and year.yearly and when entries are addedsmall
Sizes are rough classes (uncompressed): small under 50 KB, medium 50 KB to 1 MB.

Region IDs

Regions and their files
IDNameFile
deGermanyregions/de.json
de-shSchleswig-Holsteinregions/de-sh.json
de-hhHamburgregions/de-hh.json
de-niLower Saxonyregions/de-ni.json
de-hbBremenregions/de-hb.json
de-nwNorth Rhine-Westphaliaregions/de-nw.json
de-heHesseregions/de-he.json
de-rpRhineland-Palatinateregions/de-rp.json
de-bwBaden-Württembergregions/de-bw.json
de-byBavariaregions/de-by.json
de-slSaarlandregions/de-sl.json
de-beBerlinregions/de-be.json
de-bbBrandenburgregions/de-bb.json
de-mvMecklenburg-Western Pomeraniaregions/de-mv.json
de-snSaxonyregions/de-sn.json
de-stSaxony-Anhaltregions/de-st.json
de-thThuringiaregions/de-th.json
Source: administrative divisions (ISO 3166-2 and official municipality key).

Fields of the region files

The fields follow the TypeScript interfaces of the forecast-core package. These interfaces are the binding description.

Fields of a region file (ForecastFile)
FieldTypeMeaning
schema_versionnumberVersion of the file format. The number increases when the structure changes incompatibly.
regionstringRegion ID, e.g. de-sn. de stands for Germany as a whole.
levelstringLevel of the region: national or bundesland (federal state).
indicatorstringTarget quantity: ARE consultation incidence.
unitstringUnit: consultations per 100,000 inhabitants and week.
issuedstring (YYYY-MM-DD)Issue date of the forecast.
data_versionstring (YYYY-MM-DD)Cut-off date of the data version used.
last_observed_weekstring (ISO-Woche)Last observed week that went into the forecast.
modelstringName of the model of this issue.
gate{ shipped, reason }Result of the quality gate. shipped is ensemble or baseline. reason is a justification in English.
sourcesstring[]IDs of the data sources used (see sources.json).
attributionstringAttribution text to be given when the data is reused.
observed{ iso_week, value }[]Observed values with iso_week and value (ARE incidence).
normal{ week_number, q10 … q90 }[]Seasonal norm per calendar week with quantiles q10 to q90 from earlier, cleaned seasons.
horizonsForecastHorizon[]Forecasts for 1 to 4 weeks after the last observed week.
horizons[].h1 | 2 | 3 | 4Horizon in weeks after the last observed week.
horizons[].iso_weekstring (ISO-Woche)Target week of the forecast.
horizons[].q10 … q90numberQuantiles q10, q25, q50, q75 and q90. q50 is the median.
horizons[].indexnumberMedian divided by the median of the seasonal norm for the target week. 1 equals the norm.
horizons[].levelnormal | elevated | highActivity level from the index: normal, elevated or high.
Source: interface ForecastFile in the forecast-core package.

Quantiles and bands

Each forecast is a set of quantiles. q50 is the median. The 50 % band runs from q25 to q75, the 80 % band from q10 to q90. The quantiles are sorted in ascending order. The bands describe the uncertainty of the model; they are not guaranteed limits.

Activity levels

The index is the median of the forecast divided by the median of the seasonal norm for the target week. From 1.25 the level is elevated, from 1.75 it is high, below that it is normal. The thresholds are start values and have not been validated empirically.

Examples

curl -s "https://coldfront.wi7.net/api/v1/index.json"
Fetch the overview (curl)
const res = await fetch("https://coldfront.wi7.net/api/v1/regions/de-sn.json");
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const forecast = await res.json();
for (const h of forecast.horizons) {
  console.log(h.iso_week, h.q25, h.q50, h.q75);
}
Fetch a region (JavaScript, fetch)
{
  "h": 1,
  "iso_week": "YYYY-Www",
  "q10": 0,
  "q25": 0,
  "q50": 0,
  "q75": 0,
  "q90": 0,
  "index": 0,
  "level": "normal"
}
One horizon entry with placeholder values (not a real forecast)

Browser access (CORS)

The files are served with the header Access-Control-Allow-Origin: *. Browser applications on other origins can therefore read them directly.

Versioning

Every forecast file carries schema_version. The current version is 1. Check this value before you process the file.

Reuse and attribution

No licence has been chosen for the program code yet. The data keep the licence of their source; details are under Data & sources. Forecasts are our own calculations based on this data and must be attributed accordingly. Use the following attribution text:

Quelle: Robert Koch-Institut, Umweltbundesamt, Deutscher Wetterdienst; eigene Berechnung