gridX KPIs API

The KPIs API from gridX — 1 operation(s) for kpis.

Operations 1

GET /systems/{systemID}/costs-kpi Get historical costs KPIs #

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/gridx-ai:gridx-ai-kpis-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

gridx-ai-kpis-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Gridx Ai KPIs API
  version: 2.0.0
  contact:
    name: gridX
    url: https://www.gridx.ai/module/api
    email: developer-community@gridx.de
  license:
    name: All rights reserved.
    url: https://www.gridx.ai/
  x-api-id: ba9d6a25-ae1a-4ac8-af7a-70b76db17021
  x-audience: public-external
  description: 'Operations tagged KPIs across 2 of this provider''s published API definitions: gridx-api.json, gridx-ai-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.gridx.de
  description: Production
tags:
- name: KPIs
  x-displayName: KPIs
paths:
  /systems/{systemID}/costs-kpi:
    get:
      summary: Get historical costs KPIs
      description: 'Retrieves a set of Key Performance Indicators for a specific system over a custom time interval and in a specified currency.

        If no currency is provided, the system currency defined via `/systems/{systemID}/tariff` is used.'
      operationId: getCostsKpiForSystem
      tags:
      - KPIs
      parameters:
      - name: systemID
        description: 'Unique identifier used to access a system.

          '
        in: path
        required: true
        schema:
          type: string
          format: uuid
        example: aa3e5a93-bb38-4b15-b7f2-af40daf3a1dc
      - name: interval
        in: query
        required: false
        schema:
          type: string
          format: datetime
          example: 2018-04-01T15:00:00Z/2018-04-25T00:00:00Z
        description: 'A time interval [start_timestamp, end_timestamp] encoded as a unique string start_timestamp/end_timestamp.


          Each timestamp should be specified in the RFC3339 format.


          The maximum time interval that can be requested is 48 hours.


          IMPORTANT: it has to be fully URL encoded (also known as Percent-encoding), including the `/`.'
      - name: currency
        in: query
        description: 'The currency for cost and price values, specified as an ISO 4217 code.

          All values are converted to this currency, unless they are already in the desired currency.'
        schema:
          type: string
          example: EUR
          maxLength: 3
          minLength: 3
          description: The currency for cost and price values, specified as an ISO 4217 code.
          x-readme-ref-name: Currency
      responses:
        '200':
          description: Successfully retrieved the KPIs for the specified interval.
          content:
            application/json:
              schema:
                type: object
                description: Represents the response containing a list of cost KPI periods and their aggregation.
                properties:
                  periods:
                    type: array
                    description: A list containing the cost KPIs for each period in the requested interval.
                    items:
                      type: object
                      description: Represents the cost KPIs for a single time period.
                      required:
                      - from
                      - to
                      - currency
                      properties:
                        from:
                          type: string
                          format: date-time
                          description: The start timestamp of the period in ISO 8601 format.
                          example: '2018-04-01T15:00:00Z'
                        to:
                          type: string
                          format: date-time
                          description: The end timestamp of the period in ISO 8601 format.
                          example: '2018-04-25T00:00:00Z'
                        currency:
                          type: string
                          example: EUR
                          maxLength: 3
                          minLength: 3
                          description: The currency for cost and price values, specified as an ISO 4217 code.
                          x-readme-ref-name: Currency
                        costGridSupplyActual:
                          type: number
                          format: double
                          description: Actual cost of energy supplied from the grid.
                        earningsGridFeedinActual:
                          type: number
                          format: double
                          description: Actual earnings from feeding energy into the grid.
                        totalCostActual:
                          type: number
                          format: double
                          description: Total actual cost.
                        avoidedCostGridSupplyActual:
                          type: number
                          format: double
                          description: Actual avoided costs due to local energy production and storage.
                        averagePriceActual:
                          type: number
                          format: double
                          description: Actual average price of energy per kWh during the period.
                        costGridSupplyBaseCase:
                          type: number
                          format: double
                          description: A base-case scenario cost for grid supply.
                        earningsGridFeedinBaseCase:
                          type: number
                          format: double
                          description: A base-case scenario for grid feed-in earnings.
                        totalCostBaseCase:
                          type: number
                          format: double
                          description: Total cost in the base-case scenario.
                        avoidedCostGridSupplyBaseCase:
                          type: number
                          format: double
                          description: Avoided costs in the base-case scenario.
                        averagePriceBaseCase:
                          type: number
                          format: double
                          description: Average price of energy per kWh in the base-case scenario.
                        totalConsumptionBaseCase:
                          type: number
                          format: double
                          description: Total energy consumption in kWh used to calculate the different average price values in the base-case scenario.
                        totalConsumptionActual:
                          type: number
                          format: double
                          description: Actual total energy consumption in kWh used to calculate the different average price values. This also accounts for the difference in stored energy in the battery.
                        stepsEvaluated:
                          type: integer
                          format: int32
                          description: The number of discrete evaluation steps within the period.
                      x-readme-ref-name: GetCostsKPI
                  total:
                    allOf:
                    - type: object
                      description: Represents the cost KPIs for a single time period.
                      required:
                      - from
                      - to
                      - currency
                      properties:
                        from:
                          type: string
                          format: date-time
                          description: The start timestamp of the period in ISO 8601 format.
                          example: '2018-04-01T15:00:00Z'
                        to:
                          type: string
                          format: date-time
                          description: The end timestamp of the period in ISO 8601 format.
                          example: '2018-04-25T00:00:00Z'
                        currency:
                          type: string
                          example: EUR
                          maxLength: 3
                          minLength: 3
                          description: The currency for cost and price values, specified as an ISO 4217 code.
                          x-readme-ref-name: Currency
                        costGridSupplyActual:
                          type: number
                          format: double
                          description: Actual cost of energy supplied from the grid.
                        earningsGridFeedinActual:
                          type: number
                          format: double
                          description: Actual earnings from feeding energy into the grid.
                        totalCostActual:
                          type: number
                          format: double
                          description: Total actual cost.
                        avoidedCostGridSupplyActual:
                          type: number
                          format: double
                          description: Actual avoided costs due to local energy production and storage.
                        averagePriceActual:
                          type: number
                          format: double
                          description: Actual average price of energy per kWh during the period.
                        costGridSupplyBaseCase:
                          type: number
                          format: double
                          description: A base-case scenario cost for grid supply.
                        earningsGridFeedinBaseCase:
                          type: number
                          format: double
                          description: A base-case scenario for grid feed-in earnings.
                        totalCostBaseCase:
                          type: number
                          format: double
                          description: Total cost in the base-case scenario.
                        avoidedCostGridSupplyBaseCase:
                          type: number
                          format: double
                          description: Avoided costs in the base-case scenario.
                        averagePriceBaseCase:
                          type: number
                          format: double
                          description: Average price of energy per kWh in the base-case scenario.
                        totalConsumptionBaseCase:
                          type: number
                          format: double
                          description: Total energy consumption in kWh used to calculate the different average price values in the base-case scenario.
                        totalConsumptionActual:
                          type: number
                          format: double
                          description: Actual total energy consumption in kWh used to calculate the different average price values. This also accounts for the difference in stored energy in the battery.
                        stepsEvaluated:
                          type: integer
                          format: int32
                          description: The number of discrete evaluation steps within the period.
                      x-readme-ref-name: GetCostsKPI
                    description: An aggregation of all cost KPIs over the entire requested interval.
                  numberOfPeriods:
                    type: integer
                    description: The number of KPI periods returned in the `periods` array.
                    example: 30
                  expectedNumberOfPeriods:
                    type: integer
                    description: The number of KPI periods that were expected based on the requested time interval (one per day).
                    example: 30
                x-readme-ref-name: GetCostsKPIResponse
        '400':
          description: Malformed request.
          content:
            application/vnd.gridx.v2+json:
              schema:
                readOnly: true
                allOf:
                - title: General Exception
                  description: Represents a general error structure returned by our REST API.
                  type: object
                  properties:
                    message:
                      type: string
                      description: Message represents the message reported to the user.
                    details:
                      type: array
                      description: 'Details represents detail information for the user to fix this

                        problem

                        '
                      items:
                        type: string
                  required:
                  - message
                  x-readme-ref-name: GeneralException
                - title: ClientError - Bad Request
                  description: 'Bad Request indicates that the request body is not a valid JSON or

                    it contains a invalid json type.

                    '
                  example:
                    message: Problems parsing JSON
                x-readme-ref-name: BadRequestException
        '404':
          description: System not found
          content:
            application/vnd.gridx.v2+json:
              schema:
                readOnly: true
                allOf:
                - title: General Exception
                  description: Represents a general error structure returned by our REST API.
                  type: object
                  properties:
                    message:
                      type: string
                      description: Message represents the message reported to the user.
                    details:
                      type: array
                      description: 'Details represents detail information for the user to fix this

                        problem

                        '
                      items:
                        type: string
                  required:
                  - message
                  x-readme-ref-name: GeneralException
                - title: ClientError - Not Found
                  description: Not Found indicates that the entity was not found.
                  example:
                    message: Not Found
                x-readme-ref-name: NotFoundException
        '422':
          description: Validation failed.
          content:
            application/vnd.gridx.v2+json:
              schema:
                readOnly: true
                allOf:
                - title: General Exception
                  description: Represents a general error structure returned by our REST API.
                  type: object
                  properties:
                    message:
                      type: string
                      description: Message represents the message reported to the user.
                    details:
                      type: array
                      description: 'Details represents detail information for the user to fix this

                        problem

                        '
                      items:
                        type: string
                  required:
                  - message
                  x-readme-ref-name: GeneralException
                - title: ClientError - Validation
                  description: 'Validation indicates that the request body contains fields which

                    does not pass the validation.

                    '
                  type: object
                  required:
                  - message
                  - details
                  example:
                    message: Validation failed
                    details:
                    - email is not valid
                x-readme-ref-name: InvalidException
        '500':
          description: There has been an internal error on our side. We're looking into it.
          content:
            application/vnd.gridx.v2+json:
              schema:
                readOnly: true
                allOf:
                - title: General Exception
                  description: Represents a general error structure returned by our REST API.
                  type: object
                  properties:
                    message:
                      type: string
                      description: Message represents the message reported to the user.
                    details:
                      type: array
                      description: 'Details represents detail information for the user to fix this

                        problem

                        '
                      items:
                        type: string
                  required:
                  - message
                  x-readme-ref-name: GeneralException
                - title: ServerSideError - Internal Server Error
                  description: Internal Server Error
                  example:
                    message: Internal Server Error
                x-readme-ref-name: InternalException
        '502':
          description: There has been an error from an upstream server.
          content:
            application/vnd.gridx.v2+json:
              schema:
                readOnly: true
                allOf:
                - title: General Exception
                  description: Represents a general error structure returned by our REST API.
                  type: object
                  properties:
                    message:
                      type: string
                      description: Message represents the message reported to the user.
                    details:
                      type: array
                      description: 'Details represents detail information for the user to fix this

                        problem

                        '
                      items:
                        type: string
                  required:
                  - message
                  x-readme-ref-name: GeneralException
                - title: BadGatewayError
                  description: Indicates that there has been an error from an upstream server.
                  example:
                    message: Bad Gateway
                x-readme-ref-name: BadGateway
      x-code-samples:
      - lang: python
        label: Python
        source: 'import requests


          url = "https://api.gridx.de/systems/systemID/costs-kpi"


          headers = {"accept": "application/json"}


          response = requests.get(url, headers=headers)


          print(response.text)'
      - lang: shell
        label: Shell
        source: "curl --request GET \\\n     --url https://api.gridx.de/systems/systemID/costs-kpi \\\n     --header 'accept: application/json'"
      - lang: go
        label: Go
        source: "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"io\"\n)\n\nfunc main() {\n\n\turl := \"https://api.gridx.de/systems/systemID/costs-kpi\"\n\n\treq, _ := http.NewRequest(\"GET\", url, nil)\n\n\treq.Header.Add(\"accept\", \"application/json\")\n\n\tres, _ := http.DefaultClient.Do(req)\n\n\tdefer res.Body.Close()\n\tbody, _ := io.ReadAll(res.Body)\n\n\tfmt.Println(string(body))\n\n}"
      - lang: javascript
        label: Javascript
        source: "const options = {method: 'GET', headers: {accept: 'application/json'}};\n\nfetch('https://api.gridx.de/systems/systemID/costs-kpi', options)\n  .then(res => res.json())\n  .then(res => console.log(res))\n  .catch(err => console.error(err));"
      - lang: java
        label: Java
        source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n  .url(\"https://api.gridx.de/systems/systemID/costs-kpi\")\n  .get()\n  .addHeader(\"accept\", \"application/json\")\n  .build();\n\nResponse response = client.newCall(request).execute();"
      - lang: java
        label: Kotlin
        source: "val client = OkHttpClient()\n\nval request = Request.Builder()\n  .url(\"https://api.gridx.de/systems/systemID/costs-kpi\")\n  .get()\n  .addHeader(\"accept\", \"application/json\")\n  .build()\n\nval response = client.newCall(request).execute()"
      - lang: javascript
        label: Swift
        source: 'import Foundation


          let url = URL(string: "https://api.gridx.de/systems/systemID/costs-kpi")!

          var request = URLRequest(url: url)

          request.httpMethod = "GET"

          request.timeoutInterval = 10

          request.allHTTPHeaderFields = ["accept": "application/json"]


          let (data, _) = try await URLSession.shared.data(for: request)

          print(String(decoding: data, as: UTF8.self))'
      - lang: csharp
        label: C#
        source: 'using RestSharp;



          var options = new RestClientOptions("https://api.gridx.de/systems/systemID/costs-kpi");

          var client = new RestClient(options);

          var request = new RestRequest("");

          request.AddHeader("accept", "application/json");

          var response = await client.GetAsync(request);


          Console.WriteLine("{0}", response.Content);

          '
    servers:
    - url: https://api.gridx.de
      description: Production
components:
  securitySchemes:
    HeaderAuth:
      type: apiKey
      name: Authorization
      in: header
      description: Enter either the JWT token with the prefix `Bearer ` or an API token with the prefix `Token `
x-refined-from:
- gridx-api.json
- gridx-ai-openapi.yml