Cernion Settlement (Abrechnung) API
Redispatch compensation (§13a/14 EnWG), EEG revenue calculation, and A96 settlement export. Based on EDM timeseries, generation forecasts, and ENTSO-E market prices with KRITIS fallbacks.
Redispatch compensation (§13a/14 EnWG), EEG revenue calculation, and A96 settlement export. Based on EDM timeseries, generation forecasts, and ENTSO-E market prices with KRITIS fallbacks.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/cernion-de:cernion-de-settlement-abrechnung-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 3.2.0
info:
title: Cernion Energy Tools Settlement (Abrechnung) API
version: 0.99.22
description: 'MicroService Agent System for Energy Markets - REST API with AI integration.
CERNION_TOKEN: request at https://cernion.de/ or by email: dev@stromdao.com.
For the public instance at https://api.cernion.de/, create your token at https://cernion.de/cet-token/.'
servers:
- url: https://api.cernion.de
description: API Server
tags:
- name: Settlement (Abrechnung)
description: Redispatch compensation (§13a/14 EnWG), EEG revenue calculation, and A96 settlement export. Based on EDM timeseries, generation forecasts, and ENTSO-E market prices with KRITIS fallbacks.
paths:
/api/bilanzkreis:
post:
summary: Create a Bilanzkreis (real or virtual)
tags:
- Settlement (Abrechnung)
operationId: bilanzkreis_create
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
description: Creates a balance group definition. Real BKs map to MaBiS interfaces. Virtual BKs aggregate multiple MeLos for internal settlement.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- name
- type
- participants
properties:
id:
type: string
example: bk_es_test
name:
type: string
example: Energy Sharing Test-Quartier
type:
type: string
enum:
- real
- virtual_energy_sharing
- virtual_mieterstrom
- virtual_arealnetz
- virtual_vpp
example: virtual_energy_sharing
participants:
type: array
example:
- meloId: BK_TEST_PV
role: producer
share: 1
- meloId: BK_TEST_CONSUMER
role: consumer
share: 1
items:
type: object
gridOperatorMastrId:
type: string
example: SNB935578300972
validFrom:
type: string
example: '2026-01-01'
validTo:
type: string
example: '2026-12-31'
metadata:
type: object
example:
source: manual
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
default:
value:
id: bk_es_test
name: Energy Sharing Test-Quartier
type: virtual_energy_sharing
participants:
- meloId: BK_TEST_PV
role: producer
share: 1
- meloId: BK_TEST_CONSUMER
role: consumer
share: 1
get:
summary: List Bilanzkreise
tags:
- Settlement (Abrechnung)
operationId: bilanzkreis_list
parameters:
- name: type
in: query
required: false
schema:
type: string
example: virtual_energy_sharing
- name: status
in: query
required: false
schema:
type: string
enum:
- active
- archived
example: active
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
/api/bilanzkreis/:id:
get:
summary: Get a Bilanzkreis
tags:
- Settlement (Abrechnung)
operationId: bilanzkreis_get
parameters:
- name: id
in: path
required: true
schema:
type: string
example: bk_es_test
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
delete:
summary: Delete a Bilanzkreis
tags:
- Settlement (Abrechnung)
operationId: bilanzkreis_delete
parameters:
- name: id
in: path
required: true
schema:
type: string
example: bk_es_test
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
/api/bilanzkreis/:id/calculate:
post:
summary: Calculate balance for a Bilanzkreis over a time period
tags:
- Settlement (Abrechnung)
operationId: bilanzkreis_calculate
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
description: Loads timeseries for all participants from EDM, calculates saldo per 15-min interval, and returns summary with self-consumption and autarky rates.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- from
- to
properties:
id:
type: string
example: bk_es_test
from:
type: string
example: '2026-04-01T00:00:00Z'
to:
type: string
example: '2026-04-01T01:00:00Z'
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
default:
value:
id: bk_es_test
from: '2026-04-01T00:00:00Z'
to: '2026-04-01T01:00:00Z'
/api/bilanzkreis/:id/readiness:
get:
summary: Check settlement readiness for a Bilanzkreis
tags:
- Settlement (Abrechnung)
operationId: bilanzkreis_checkReadiness
parameters:
- name: id
in: path
required: true
schema:
type: string
example: bk_es_test
- name: from
in: query
required: true
schema:
type: string
example: '2026-04-01T00:00:00Z'
- name: to
in: query
required: true
schema:
type: string
example: '2026-04-01T01:00:00Z'
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
description: Verifies data completeness and quality for all participants before running settlement calculations.
/api/bilanzkreis/:id/feature-flags:
get:
summary: Get feature flags for a Bilanzkreis
tags:
- Settlement (Abrechnung)
operationId: bilanzkreis_getFeatureFlags
parameters:
- name: id
in: path
required: true
schema:
type: string
example: bk_hoeheinoed_es_001
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Feature flags for the Bilanzkreis
content:
application/json:
example:
success: true
id: bk_hoeheinoed_es_001
flags:
virtual_energy_sharing.enabled: true
description: 'Returns per-Bilanzkreis feature flags. The flag `virtual_energy_sharing.enabled` controls whether A96 export and §42c Energieteilen is active for this BK. Sub-Track G (v0.47.0) — Rollback-Plan: set to false to block A96 export on rollback.'
patch:
summary: Update feature flags for a Bilanzkreis
tags:
- Settlement (Abrechnung)
operationId: bilanzkreis_updateFeatureFlags
parameters:
- name: id
in: path
required: true
schema:
type: string
example: bk_hoeheinoed_es_001
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Feature flags updated
'404':
description: Bilanzkreis not found
description: 'Updates per-Bilanzkreis feature flags. Set `virtual_energy_sharing.enabled: false` to block A96 export (rollback gate). Sub-Track G (v0.47.0) — Rollback-Plan.'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- flags
properties:
flags:
type: object
example:
virtual_energy_sharing.enabled: false
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
/api/settlement/redispatch/calculate:
post:
summary: Calculate Redispatch compensation (§13a/14 EnWG)
tags:
- Settlement (Abrechnung)
operationId: settlement_calculateRedispatch
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
description: Calculates compensation for curtailment events based on forecast vs. actual generation and market prices. Supports market_price, eeg_minimum and actual_loss (max of both).
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- installations
- period
properties:
installations:
type: array
example:
- mastrNummer: SEE999952467552
meloId: DE0003966698900000000000052335107
curtailmentEvents:
- start: '2026-04-01T10:00:00Z'
end: '2026-04-01T12:00:00Z'
items:
type: object
period:
type: object
example:
from: '2026-04-01'
to: '2026-04-30'
properties:
from:
type: string
example: '2026-04-01'
to:
type: string
example: '2026-04-30'
compensationMethod:
type: string
enum:
- market_price
- eeg_minimum
- actual_loss
default: actual_loss
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
default:
value:
installations:
- mastrNummer: SEE999952467552
meloId: DE0003966698900000000000052335107
capacityKw: 2103.7
commissioningDate: '2009-12-16'
type: solar
curtailmentEvents:
- start: '2026-04-01T10:00:00Z'
end: '2026-04-01T12:00:00Z'
reason: grid_congestion
period:
from: '2026-04-01'
to: '2026-04-30'
compensationMethod: actual_loss
/api/settlement/redispatch/report/:settlementId:
get:
summary: Get a stored Redispatch settlement report
tags:
- Settlement (Abrechnung)
operationId: settlement_getRedispatchReport
parameters:
- name: settlementId
in: path
required: true
schema:
type: string
example: redispatch_2026q2_SEE999952467552
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
/api/settlement/eeg/calculate:
post:
summary: Calculate EEG revenue for an installation
tags:
- Settlement (Abrechnung)
operationId: settlement_calculateEeg
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- mastrNummer
- period
properties:
mastrNummer:
type: string
example: SEE999952467552
meloId:
type: string
example: DE0003966698900000000000052335107
period:
type: object
example:
from: '2026-04-01'
to: '2026-04-30'
properties:
from:
type: string
example: '2026-04-01'
to:
type: string
example: '2026-04-30'
commissioningDate:
type: string
example: '2010-05-12'
capacityKwp:
type: number
example: 9.8
type:
type: string
enum:
- solar
- wind
- biomass
example: solar
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
default:
value:
mastrNummer: SEE999952467552
meloId: DE0003966698900000000000052335107
period:
from: '2026-04-01'
to: '2026-04-30'
commissioningDate: '2009-12-16'
capacityKwp: 2103.7
type: solar
/api/settlement/eeg/report/:settlementId:
get:
summary: Get a stored EEG settlement report
tags:
- Settlement (Abrechnung)
operationId: settlement_getEegReport
parameters:
- name: settlementId
in: path
required: true
schema:
type: string
example: eeg_2026q2_SEE999952467552
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
/api/settlement/a96/prepare:
post:
summary: Prepare A96 export rows from a Redispatch settlement
tags:
- Settlement (Abrechnung)
operationId: settlement_prepareA96
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- settlementId
properties:
settlementId:
type: string
example: redispatch_2026q2_SEE999952467552
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
default:
value:
settlementId: redispatch_2026q2_SEE999952467552
/api/settlement/a96/export/:settlementId:
get:
summary: Export A96 rows as CSV or JSON
tags:
- Settlement (Abrechnung)
operationId: settlement_exportA96
parameters:
- name: settlementId
in: path
required: true
schema:
type: string
example: redispatch_2026q2_SEE999952467552
- name: format
in: query
required: false
schema:
type: string
enum:
- csv
- json
default: csv
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
/api/settlement/a96/reconcile:
post:
summary: Reconcile inbound A96 rows against internal settlement baseline
tags:
- Settlement (Abrechnung)
operationId: settlement_reconcileA96
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- settlementId
- incomingRows
properties:
settlementId:
type: string
example: redispatch_2026q2_SEE999952467552
toleranceEur:
type: number
example: 0.01
default: 0.01
incomingRows:
type: array
items:
type: object
required:
- anlageId
- timeSlice
properties:
anlageId:
type: string
example: SEE999952467552
timeSlice:
type: string
example: 2026-04-01T10:00:00.000Z/2026-04-01T12:00:00.000Z
compensationEur:
type: number
example: 132.42
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
/api/settlement/eeg-tariff:
get:
summary: Read-only EEG tariff lookup
tags:
- Settlement (Abrechnung)
operationId: settlement_lookupEegTariff
parameters:
- name: commissioningDate
in: query
required: true
schema:
type: string
example: '2024-03-15'
- name: capacityKwp
in: query
required: true
schema:
type: number
example: 10
- name: type
in: query
required: true
schema:
type: string
enum:
- solar
- wind
- biomass
example: solar
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
/api/settlement:
get:
summary: List stored settlements
tags:
- Settlement (Abrechnung)
operationId: settlement_listSettlements
parameters:
- name: type
in: query
required: false
schema:
type: string
enum:
- redispatch
- eeg
- all
default: all
- name: period
in: query
required: false
schema:
type: string
example: 2026q2
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
components:
parameters:
TokenQuery:
name: token
in: query
required: false
schema:
type: string
description: Optional Cernion MCP token as URL query parameter. If provided, it overrides CERNION_TOKEN for this request. Prefer Authorization Bearer header in production to reduce token exposure in URLs/logs.
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Optional Cernion MCP token. If not provided, falls back to CERNION_TOKEN from environment. Request token at https://cernion.de/ or by email: dev@stromdao.com.'