> ## Documentation Index
> Fetch the complete documentation index at: https://developers.podero.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Scored forecast accuracy for an inverter, by hour and forecast tier

> The scored accuracy of one inverter's forecasts over the last ``days``, per hour and tier.

Gated on the trading entitlement, like the runs route beside it. Each hour carries, per tier,
the scored slot count and the sums of absolute and signed error, so the client can fold hours
into days or a time-of-day profile and read MAE and bias off any bucket exactly. Only completed
local days are scored, each morning, so the newest hours of the window carry no entry yet.



## OpenAPI

````yaml https://app.podero.com/api/partners/v2.0/openapi.json get /api/partners/v2.0/org/{org_id}/devices/{inverter_id}/forecast-accuracy
openapi: 3.1.0
info:
  title: Podero Partner API
  version: '2.0'
  description: >-
    This API provides a unified interaction point for Podero's partner
    companies.


    The goal of this API is to give partners easily integratable endpoints that
    don't require extensive software

    development. For this reason, the endpoints focus around user and device
    management, setting of preferences

    and high level device controls.


    While direct control of devices is implemented for special use cases such as
    pause power, we abstract away low level

    direct device steering so developers and partners can focus on delivering
    maximum value to end users.
  termsOfService: https://www.podero.com/terms-and-conditions
servers: []
security: []
paths:
  /api/partners/v2.0/org/{org_id}/devices/{inverter_id}/forecast-accuracy:
    get:
      tags:
        - Devices
      summary: Scored forecast accuracy for an inverter, by hour and forecast tier
      description: >-
        The scored accuracy of one inverter's forecasts over the last ``days``,
        per hour and tier.


        Gated on the trading entitlement, like the runs route beside it. Each
        hour carries, per tier,

        the scored slot count and the sums of absolute and signed error, so the
        client can fold hours

        into days or a time-of-day profile and read MAE and bias off any bucket
        exactly. Only completed

        local days are scored, each morning, so the newest hours of the window
        carry no entry yet.
      operationId: >-
        integrations_api_api_v2_organizations_devices_forecast_accuracy_list_forecast_accuracy
      parameters:
        - in: path
          name: org_id
          schema:
            description: The organization the inverter belongs to.
            format: uuid
            title: Org Id
            type: string
          required: true
          description: The organization the inverter belongs to.
        - in: path
          name: inverter_id
          schema:
            description: The inverter whose scored accuracy to read.
            format: uuid
            title: Inverter Id
            type: string
          required: true
          description: The inverter whose scored accuracy to read.
        - in: query
          name: kind
          schema:
            default: pv
            description: 'Which forecast to score: PV production or household consumption.'
            enum:
              - pv
              - hh
            title: Kind
            type: string
          required: false
          description: 'Which forecast to score: PV production or household consumption.'
        - in: query
          name: days
          schema:
            default: 7
            description: >-
              Window length in days, ending now (1..15, default 7) — the same
              window the runs route draws.
            maximum: 15
            minimum: 1
            title: Days
            type: integer
          required: false
          description: >-
            Window length in days, ending now (1..15, default 7) — the same
            window the runs route draws.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForecastAccuracyOutput'
      security:
        - OAuth2: []
components:
  schemas:
    ForecastAccuracyOutput:
      description: >-
        One inverter's scored forecast accuracy over the window, per hour and
        tier.


        What the daily accuracy job scored — `InverterForecastAccuracyPoint`,
        cleaned actuals against

        each tier's run — rather than the raw comparison the runs route invites.
        `tiers` names the

        tiers `kind` is scored on in display order: day-ahead (the D-1 morning
        run), midnight (the

        first run of the day), intraday (the run two hours ahead), and for
        household the rolling

        7-day baseline it is measured against. Only completed local days are
        scored, so the newest

        hours of the window carry no entry yet.
      properties:
        now:
          description: Server time when the window was resolved.
          format: date-time
          title: Now
          type: string
        window_start:
          description: First slot of the window the scores were read over.
          format: date-time
          title: Window Start
          type: string
        kind:
          description: Which forecast the scores are about.
          enum:
            - pv
            - hh
          title: Kind
          type: string
        kwp_w:
          anyOf:
            - type: number
            - type: 'null'
          description: >-
            The inverter's resolved array capacity in watts, or null when
            unknown.
          title: Kwp W
        tiers:
          description: The tiers this kind is scored on, in display order.
          items:
            type: string
          title: Tiers
          type: array
        hours:
          description: >-
            Every hour in the window some tier scored, hour-ordered; an hour
            nothing scored is absent.
          items:
            $ref: '#/components/schemas/ForecastAccuracyHourOutput'
          title: Hours
          type: array
      required:
        - now
        - window_start
        - kind
        - kwp_w
        - tiers
        - hours
      title: ForecastAccuracyOutput
      type: object
    ForecastAccuracyHourOutput:
      description: >-
        One UTC hour of scored accuracy, per tier. A tier absent from `tiers`
        scored nothing in it.
      properties:
        hour:
          description: Start of the UTC hour.
          format: date-time
          title: Hour
          type: string
        tiers:
          additionalProperties:
            $ref: '#/components/schemas/ForecastAccuracyTierOutput'
          description: tier -> the tier's scored slots in this hour.
          title: Tiers
          type: object
      required:
        - hour
        - tiers
      title: ForecastAccuracyHourOutput
      type: object
    ForecastAccuracyTierOutput:
      description: >-
        One forecast tier's scored slots in one hour, as the sums a mean is
        rebuilt from.


        MAE is `abs_error_w / n`, bias `error_w / n`, both in watts; the client
        folds hours into

        coarser buckets by adding these before dividing, so a half-scored hour
        weighs half.
      properties:
        'n':
          description: Scored slots in the hour for this tier — the slots with an error.
          title: 'N'
          type: integer
        abs_error_w:
          description: Sum of |forecast − actual| over the scored slots, in W.
          title: Abs Error W
          type: number
        error_w:
          description: >-
            Sum of (forecast − actual) over the scored slots, in W; positive is
            over-forecast.
          title: Error W
          type: number
      required:
        - 'n'
        - abs_error_w
        - error_w
      title: ForecastAccuracyTierOutput
      type: object
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        password:
          tokenUrl: /api/partners/v2.0/auth/token
          scopes: {}
        clientCredentials:
          tokenUrl: /api/partners/v2.0/auth/token
          scopes: {}

````