> ## Documentation Index
> Fetch the complete documentation index at: https://docs.energy.nlead.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# Read back the stored forecast for one delivery day

> Returns exactly the series the last accepted submission carried -
what a re-POST would replace - plus the derived totals, the
`input_hash` from the acknowledgment, and the processing state.
`validate_only` calls store nothing, so they never appear here.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/forecasts/{delivery_day}
openapi: 3.1.0
info:
  title: n:lead Scheduling Bridge — Data Delivery API
  version: 0.4.0
  description: >-
    API for delivering portfolio data to the n:lead scheduling bridge. Send a
    portfolio forecast per delivery day, or — if no forecast is available — the
    market-location master data, metered data and rolled-out profiles the bridge
    needs to build the consumption forecast for you. Everything downstream
    (positions, trader handoff, schedule submission to the TSOs) is operated by
    n:lead. A read-only status endpoint reports the BRP activation state per
    DSO/MGA.
servers:
  - url: https://{host}
    description: Deployed service
    variables:
      host:
        default: >-
          nleadbridge-app.lemonisland-7d6503d3.germanywestcentral.azurecontainerapps.io
        description: >-
          The service hostname - n:lead provides it (see the Base URL on the API
          introduction page)
  - url: http://localhost:8000
    description: Local development
security: []
paths:
  /v1/forecasts/{delivery_day}:
    get:
      summary: Read back the stored forecast for one delivery day
      description: |-
        Returns exactly the series the last accepted submission carried -
        what a re-POST would replace - plus the derived totals, the
        `input_hash` from the acknowledgment, and the processing state.
        `validate_only` calls store nothing, so they never appear here.
      operationId: get_forecast_v1_forecasts__delivery_day__get
      parameters:
        - name: delivery_day
          in: path
          required: true
          schema:
            type: string
            format: date
            title: Delivery Day
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForecastReadback'
        '401':
          description: Missing, wrong or expired credential.
        '404':
          description: No stored forecast for this delivery day.
        '413':
          description: Body larger than the request-size limit.
        '422':
          description: >-
            Validation failure. `detail` names the offending series/entry and
            the rule it broke - see the troubleshooting page for every message
            and its fix.
        '429':
          description: >-
            Rate limit exceeded - retry after the number of seconds in the
            `Retry-After` header.
        '503':
          description: >-
            Service restarting (deploy/scale) - transient. Wait the seconds in
            the `Retry-After` header and retry the identical request; retries
            are idempotent.
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >-
            curl "$NLEAD_BASE_URL/v1/forecasts/2026-09-02" --header "X-API-Key:
            $NLEAD_API_KEY"
components:
  schemas:
    ForecastReadback:
      properties:
        delivery_day:
          type: string
          format: date
          title: Delivery Day
        unit:
          type: string
          enum:
            - MW
            - MWH
          title: Unit
        interval_count:
          type: integer
          title: Interval Count
          description: Quarter-hours the delivery day has (96 / 92 / 100)
        series:
          items:
            $ref: '#/components/schemas/ForecastSeries'
          type: array
          title: Series
        malo_mapping:
          anyOf:
            - patternProperties:
                ^\d{11}$:
                  $ref: '#/components/schemas/ControlArea'
              type: object
            - type: 'null'
          title: Malo Mapping
        total_production_mwh:
          type: number
          title: Total Production Mwh
        total_consumption_mwh:
          type: number
          title: Total Consumption Mwh
        input_hash:
          type: string
          title: Input Hash
        source:
          type: string
          title: Source
        processed:
          type: boolean
          title: Processed
      type: object
      required:
        - delivery_day
        - unit
        - interval_count
        - series
        - total_production_mwh
        - total_consumption_mwh
        - input_hash
        - source
        - processed
      title: ForecastReadback
      description: |-
        Read-back of one stored delivery day: exactly the series the last
        accepted submission carried, plus the derived totals and processing
        state. What you GET is what a re-POST would replace.
    ForecastSeries:
      properties:
        kind:
          type: string
          enum:
            - production
            - consumption
          title: Kind
          description: >-
            What the series describes; production and consumption are always
            separate series, both sent as positive values
        control_area:
          anyOf:
            - $ref: '#/components/schemas/ControlArea'
            - type: 'null'
          description: >-
            Control area (Regelzone) the series is pre-aggregated for:
            `50Hertz`, `Amprion`, `TenneT` or `TransnetBW` (case-sensitive).
            Alternative to `malo` - set exactly one of the two
        malo:
          anyOf:
            - type: string
              pattern: ^\d{11}$
            - type: 'null'
          title: Malo
          description: >-
            Market location ID (MaLo) — exactly 11 digits. Requires a
            `malo_mapping` entry on the request. Alternative to `control_area` -
            set exactly one of the two
        values:
          items:
            type: number
          type: array
          title: Values
          description: >-
            One value per quarter-hour, local (Europe/Berlin) midnight to
            midnight: 96 values on a normal day, 92 on the spring-forward day,
            100 on the fall-back day
      type: object
      required:
        - kind
        - values
      title: ForecastSeries
      description: |-
        One forecast time series for the delivery day.

        Tag either with ``control_area`` (pre-aggregated input) or with ``malo``
        (a market location, resolved to a control area via ``malo_mapping`` on
        the request). Exactly one of the two must be set.
    ControlArea:
      type: string
      enum:
        - 50Hertz
        - Amprion
        - TenneT
        - TransnetBW
      title: ControlArea
      description: The four German TSO control areas (Regelzonen).
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    HTTPBearer:
      type: http
      description: OIDC access token (Auth0 M2M)
      scheme: bearer

````