detail message that names the offending part
of the request. This page lists them verbatim, with the fix. Test
fixes safely with validate_only
— full validation, nothing stored.
HTTP status codes
422 on POST /v1/forecasts
series[N] has X intervals, expected 96 for 2026-09-01
series[N] has X intervals, expected 96 for 2026-09-01
series[N]: control area X is not in the active set
series[N]: control area X is not in the active set
control_area must be one of 50Hertz, Amprion, TenneT,
TransnetBW — case-sensitive, the German TSO names, not EIC
codes — and the area must be active for your portfolio.series[N]: no malo_mapping entry for MaLo '…'
series[N]: no malo_mapping entry for MaLo '…'
malo needs a matching entry in the request’s
malo_mapping object: {"malo_mapping": {"<11 digits>": "<control area>"}}.Value error, exactly one of control_area or malo must be set
Value error, exactly one of control_area or malo must be set
control_area or
malo — never both, never neither.String should match pattern '^\d{11}$'
String should match pattern '^\d{11}$'
Input should be 'production' or 'consumption' / Input should be 'MW' or 'MWH'
Input should be 'production' or 'consumption' / Input should be 'MW' or 'MWH'
kind takes only those two values (both series always positive — the
bridge nets them); unit is MW (average power per quarter-hour,
the default) or MWH (energy per quarter-hour).Input should be a valid date …
Input should be a valid date …
delivery_day is YYYY-MM-DD (a Europe/Berlin calendar day), e.g.
"2026-09-01" — no time component, no timezone suffix.422 on master, metered and profile data
entries[N] (51238696781, 2026-08-30): X intervals, expected 96
entries[N] (51238696781, 2026-08-30): X intervals, expected 96
entries[N] (MGA/H0, 2026-09-01): X intervals, expected 96
entries[N] (MGA/H0, 2026-09-01): X intervals, expected 96
values_kwh entry per quarter-hour
of the local day.Value error, an active slice needs control_area, mga and metering_type
Value error, an active slice needs control_area, mga and metering_type
active: true (the default) must say where
and how the location is metered. Only a de-registration slice
(active: false) may omit them.Value error, valid_to must be after valid_from
Value error, valid_to must be after valid_from
valid_from (inclusive) to valid_to (exclusive);
an empty or negative window is rejected.Value error, provide either slices or the flat form with delivery_start
Value error, provide either slices or the flat form with delivery_start
slices array, or the flat
shorthand with delivery_start (+ attributes) for one uninterrupted
period.Getting 401 although the key is right?
The two attempts we see most:
- The key sent as
Authorization: <key>— plain keys go in theX-API-Keyheader;Authorization: Bearer …is only for OAuth tokens from a registered issuer. - A trailing newline or quote copied along with the key. The key is used byte-for-byte.
Still stuck?
Send n:lead the timestamp of your call and, if you got one, theinput_hash from the acknowledgment — both identify your request in the
service’s audit trail without you having to share the payload.