Powernaut baselining API

With baselining, you indicate your normal consumption/production behaviour. This baseline is essential to provide flexibility, which is then defined as a deviation from this baseline. You can provide a baseline either for a site, or a resource. See the [guide](/guides/connect/activating-flexibility/baselining) for more information.

Operations 3

GET /v1/connect/sites/{id}/baseline Site baseline #
POST /v1/connect/sites/{id}/baseline Site #
POST /v1/connect/resources/{id}/baseline Resource #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/powernaut-baselining-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

powernaut-baselining-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Powernaut authentication Baselining API
  description: '

    # Getting Started


    Welcome to the Powernaut API Reference!


    Our API offers a robust and secure way to connect your flexible resources to flexibility buyers such as energy utilities/suppliers and system operators.


    This OpenAPI documentation is designed to provide a comprehensive and easy-to-understand guide for developers who are integrating their systems with Powernaut’s platform.


    By leveraging our API, you can seamlessly offer flexibility in several electricity markets, opening up additional revenue streams

    for your resources while contributing to a greener and more efficient electricity grid.

    '
  version: 1.0.0
  contact:
    name: Powernaut Support
    url: https://powernaut.io
    email: support@powernaut.io
  license:
    name: Creative Commons Attribution-ShareAlike 4.0 International
    url: https://creativecommons.org/licenses/by-sa/4.0/
servers:
- url: https://api.sandbox.powernaut.io
  description: Sandbox
- url: https://api.powernaut.io
  description: Production
tags:
- name: baselining
  description: 'With baselining, you indicate your normal consumption/production behaviour.


    This baseline is essential to provide flexibility, which is then defined as a deviation from this baseline. You can provide a baseline either for a site, or a resource.


    See the [guide](/guides/connect/activating-flexibility/baselining) for more information.'
  x-displayName: Baselining
paths:
  /v1/connect/sites/{id}/baseline:
    get:
      description: Retrieve baseline data for the site (`active` power only).
      operationId: RetrieveBaselineSite
      parameters:
      - name: id
        required: true
        in: path
        description: Identifier of the site you want to retrieve the baseline data for.
        schema:
          type: string
          format: uuid
      - name: amount
        required: true
        in: query
        description: Number of timesteps to be included in the time window.
        schema:
          minimum: 1
          maximum: 192
          type: number
      - name: start
        required: true
        in: query
        description: 'Start of window (ISO 8601). Must be a perfect minute without seconds or milliseconds precision.


          **Note**: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with `Z`, or an offset like `+01:00`.'
        schema:
          type: string
      - name: granularity
        required: true
        in: query
        description: 'The granularity to fetch the state for, i.e. the time length of each element.


          It cannot be smaller than 1 minute, and cannot contain sub-minute precision.


          The expected format is <a href="https://en.wikipedia.org/wiki/ISO_8601#Durations" target="_blank">ISO8601</a>.'
        schema:
          type: string
      responses:
        '200':
          description: Baseline data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaselineDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
        '404':
          description: Site does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundDto_U2l0ZSBkb2VzIG5vdCBleGlzdA'
        '409':
          description: 'Cannot update baseline: there have been activations in this time window'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictDto_Q2Fubm90IHVwZGF0ZSBiYXNlbGluZTogdGhlcmUgaGF2ZSBiZWVuIGFjdGl2YXRpb25zIGluIHRoaXMgdGltZSB3aW5kb3c'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Site baseline
      tags:
      - baselining
    post:
      description: 'Add a baseline for a site.


        This operation will override any existing baseline values that might overlap.'
      operationId: BaselineSite
      parameters:
      - name: id
        required: true
        in: path
        description: Identifier of the site you want to add a baseline for.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBaselineDto'
      responses:
        '201':
          description: Created
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
        '404':
          description: Site does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundDto_U2l0ZSBkb2VzIG5vdCBleGlzdA'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Site
      tags:
      - baselining
  /v1/connect/resources/{id}/baseline:
    post:
      description: 'Add a baseline for a resource.


        This operation will override any existing baseline values that might overlap.'
      operationId: BaselineResource
      parameters:
      - name: id
        required: true
        in: path
        description: Identifier of the resource you want to add a baseline for.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBaselineDto'
      responses:
        '201':
          description: Created
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestExceptionDto'
        '401':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedExceptionDto'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenExceptionDto'
        '404':
          description: Resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundDto_UmVzb3VyY2UgZG9lcyBub3QgZXhpc3Q'
        '409':
          description: 'Cannot update baseline: there have been activations in this time window'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictDto_Q2Fubm90IHVwZGF0ZSBiYXNlbGluZTogdGhlcmUgaGF2ZSBiZWVuIGFjdGl2YXRpb25zIGluIHRoaXMgdGltZSB3aW5kb3c'
      security:
      - edge-cloud: []
      - cloud-cloud: []
      summary: Resource
      tags:
      - baselining
components:
  schemas:
    UnauthorizedExceptionDto:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example: Unauthorized
        error:
          type: string
          description: Unauthorized
          example: Unauthorized
        status_code:
          type: number
          description: '401'
          example: 401
      required:
      - message
      - error
      - status_code
    BadRequestExceptionDto:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example:
          - Invalid datetime
          - Invalid page size
        error:
          type: string
          description: Bad Request
          example: Bad Request
        status_code:
          type: number
          description: '400'
          example: 400
      required:
      - message
      - error
      - status_code
    CreateBaselineDto:
      type: object
      properties:
        start:
          type: string
          description: 'Start of window (ISO 8601). Must be a perfect quarter-hour.


            **Constraints**: This must be at least the current quarter-hour, and cannot be more than 192 quarter-hours in the future.


            **Length**: Each baseline value is for a period of a quarter-hour, so the length of this period is defined by the amount of elements in `values`.


            **Note**: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with `Z`, or an offset like `+01:00`.'
          example: '2024-07-01T14:00:00Z'
        power_type:
          type: string
          description: Type of power for this baseline (active vs. reactive). Defaults to `active`.
          enum:
          - active
          - reactive
          example: active
        values:
          description: 'The baseline values, starting from timestamp `start`.


            This is the active/reactive power that will be imported/exported (in `kW` or `kVAR`, depending on the power type). Use a positive number for grid import and negative for export to the grid.


            Supports up to 192 elements.'
          minItems: 1
          maxItems: 192
          type: array
          items:
            type: string
        skip_activated_windows:
          type: boolean
          description: When true, windows with activations are skipped instead of failing the request.
      required:
      - start
      - values
    ForbiddenExceptionDto:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example: Insufficient permissions
        error:
          type: string
          description: Forbidden
          example: Forbidden
        status_code:
          type: number
          description: '403'
          example: 403
      required:
      - message
      - error
      - status_code
    ConflictDto_Q2Fubm90IHVwZGF0ZSBiYXNlbGluZTogdGhlcmUgaGF2ZSBiZWVuIGFjdGl2YXRpb25zIGluIHRoaXMgdGltZSB3aW5kb3c:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example: 'Cannot update baseline: there have been activations in this time window'
        error:
          type: string
          description: Conflict
          example: Conflict
        status_code:
          type: number
          description: '409'
          example: 409
      required:
      - message
      - error
      - status_code
    BaselineDto:
      type: object
      properties:
        items:
          description: 'The baseline values, starting from timestamp `start`.


            This is the `active` power that will be imported/exported. A positive number indicates grid import and negative indicates grid export.'
          minItems: 1
          maxItems: 192
          type: array
          items:
            type: string
      required:
      - items
    NotFoundDto_UmVzb3VyY2UgZG9lcyBub3QgZXhpc3Q:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example: Resource does not exist
        error:
          type: string
          description: Not Found
          example: Not Found
        status_code:
          type: number
          description: '404'
          example: 404
      required:
      - message
      - error
      - status_code
    NotFoundDto_U2l0ZSBkb2VzIG5vdCBleGlzdA:
      type: object
      properties:
        message:
          description: One or more specific error messages
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          example: Site does not exist
        error:
          type: string
          description: Not Found
          example: Not Found
        status_code:
          type: number
          description: '404'
          example: 404
      required:
      - message
      - error
      - status_code
  securitySchemes:
    cloud-cloud:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: A bearer token obtained from the token endpoint.
    token:
      type: http
      scheme: basic
      description: Your client id and secret to obtain a bearer token for cloud-cloud authentication.
    edge-cloud:
      type: http
      scheme: basic
      description: Basic credentials used for edge-cloud authentication. They can be obtained when creating a site.
x-tagGroups:
- name: Authentication
  tags:
  - authentication
- name: Managing resources
  tags:
  - sites
  - resources
- name: Markets
  tags:
  - markets
- name: Reporting flexibility
  tags:
  - baselining
  - creating_bids
  - metrics
- name: Activating flexibility
  tags:
  - accepting_bids
- name: Managing bids
  tags:
  - managing_bids
- name: Forecasting
  tags:
  - getting_forecasts
  - uploading_forecasts
  - events
- name: Sensor data
  tags:
  - sensor_data
- name: Historical Data
  tags:
  - historical_data