Cernion Utility Report API
The Utility Report API from Cernion — 7 operation(s) for utility report.
The Utility Report API from Cernion — 7 operation(s) for utility report.
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-utility-report-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 Utility Report 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: Utility Report
paths:
/api/utility-report/get-bdew-options:
post:
summary: Get available BDEW codes for a utility name
tags:
- Utility Report
operationId: utility_report_getBdewOptions
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Available BDEW code options
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
utilityName:
type: string
optionsCount:
type: number
options:
type: array
items:
type: object
properties:
bdew:
type: string
description: BDEW code (e.g., "9907462000006")
name:
type: string
description: VNB name
city:
type:
- string
- 'null'
roles:
type: array
items:
type: string
description: Market roles (e.g., ["Lieferant", "Bilanzgruppe"])
message:
type: string
description: 'Returns all BDEW codes available for the given utility name, grouped by market role.
This is useful when a user wants to generate a report but doesn''t know the BDEW code.
A single Stadtwerk may have multiple BDEW codes for different roles (Lieferant, Bilanzgruppe, etc.).'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- utilityName
properties:
utilityName:
type: string
description: Name of the energy utility
example: Stadtwerke Frankenthal
region:
type: string
description: Optional region/city for context
example: Frankenthal
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
frankenthalOptions:
summary: Find BDEW options for Stadtwerke Frankenthal
value:
utilityName: Stadtwerke Frankenthal
region: Frankenthal
/api/utility-report/generate:
post:
summary: Generate a 360° Management Report for an energy utility (Stadtwerk)
tags:
- Utility Report
operationId: utility_report_generate
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Cached report (gateway/internal) or direct result (internal call)
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
reportId:
type: string
status:
type: string
enum:
- generating
- completed
- cached
message:
type: string
downloadUrl:
type: string
'202':
description: REST/Gateway call accepted as async job
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
jobId:
type: string
status:
type: string
enum:
- queued
message:
type: string
statusUrl:
type: string
resultUrl:
type: string
progressUrl:
type: string
reportId:
type: string
downloadUrl:
type: string
description: 'Starts (or resumes) the generation of a comprehensive ~50-section HTML management report for German energy utilities.
**Report sections:**
1. Netzbetrieb & Netzplanung (capacity utilization, redispatch, residual load, CO₂)
2. Erneuerbare Energien & Einspeiser (PV, Wind, Storage from MaStR)
3. Energiemarkt & Preise (EPEX, ENTSO-E, SMARD)
4. Gasinfrastruktur & Versorgungssicherheit (AGSI/GIE)
5. Regulierung, Compliance & Marktprozesse (BNetzA EWK)
6. Kundenmanagement, Vertrieb & Prosumer (churn, leads)
7. Investitionsplanung & Business Cases
8. Digitalisierung & Systemübersicht
**Caching:** Reports are cached for 7 days (UUID filename). Identical requests return the cached report.
**Resumability:** Generation progress is saved after each phase. If generation is interrupted, retry the same request to resume.
**PDF:** Open the downloaded HTML in a browser and use Print → Save as PDF.'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- utilityName
properties:
utilityName:
type: string
description: Name of the energy utility
example: Stadtwerke Heidelberg GmbH
region:
type: string
description: Region, city or postal code for context
example: Heidelberg
bdew:
type: string
description: BDEW code of the grid operator (optional, improves data quality)
example: '9907462000006'
forceRefresh:
type: boolean
description: Force regeneration even if a cached report exists
default: false
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
stadtwerkeHeidelberg:
summary: Stadtwerke Heidelberg
value:
utilityName: Stadtwerke Heidelberg GmbH
region: Heidelberg
bdew: '9907462000006'
stromdaoNetze:
summary: STROMDAO Netze GmbH
value:
utilityName: STROMDAO Netze GmbH
region: Ludwigshafen
bdew: '9907462000013'
/api/utility-report/status/:reportId:
get:
summary: Poll generation status of a utility report
tags:
- Utility Report
operationId: utility_report_status
parameters:
- name: reportId
in: path
required: true
schema:
type: string
example: 2a70e478-90ce-4fa5-b996-6f98efdba7cf
description: Report UUID returned by /utility-report/generate
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Report status
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
reportId:
type: string
status:
type: string
enum:
- generating
- completed
- error
phase:
type: number
phaseName:
type: string
progress:
type: number
description: 0–100 completion percentage
error:
type:
- string
- 'null'
downloadUrl:
type:
- string
- 'null'
description: Returns current phase, completion percentage and any errors.
/api/utility-report/health:
get:
summary: Check MCP connection health and token validity
tags:
- Utility Report
operationId: utility_report_health
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Health check result
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
status:
type: string
enum:
- ok
- error
tokenPresent:
type: boolean
mcpReachable:
type: boolean
toolCount:
type: number
phase3Tools:
type:
- object
- 'null'
properties:
available:
type: number
unavailable:
type: number
unavailableList:
type: array
items:
type: string
latencyMs:
type: number
error:
type:
- string
- 'null'
description: 'Tests the Cernion MCP connection using the configured token. Returns `status: "ok"` only when the token is present and the MCP server responds successfully. Use this endpoint to diagnose why report generation fails with MCP_CONNECTION_ERROR.'
/api/utility-report/rebuild/:reportId:
post:
summary: Re-render an existing report from cached data
tags:
- Utility Report
operationId: utility_report_rebuild
parameters:
- name: reportId
in: path
required: true
schema:
type: string
example: 2a70e478-90ce-4fa5-b996-6f98efdba7cf
description: Report UUID to rebuild
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Report re-rendered successfully
'404':
description: No progress data found for reportId
'409':
description: Report pipeline has not completed yet
description: Reads the stored `.progress.json` for the given reportId and re-runs `buildHtmlReport()` to overwrite the `.html` file. Instant – no MCP calls needed. Useful after a report-builder bug fix to refresh already-generated reports.
requestBody:
required: false
content:
application/json:
schema:
type: object
description: No request body required for this endpoint.
properties:
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
noBody:
summary: No payload needed
value: {}
/api/utility-report/rebuild-all:
post:
summary: Re-render all completed reports from cached data
tags:
- Utility Report
operationId: utility_report_rebuildAll
parameters:
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: Batch rebuild summary
description: Iterates every `.progress.json` in the reports directory and re-renders the HTML for every completed report. Returns a summary with counts of rebuilt/skipped/failed entries.
requestBody:
required: false
content:
application/json:
schema:
type: object
description: No request body required for this endpoint.
properties:
token:
type: string
description: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.
examples:
noBody:
summary: No payload needed
value: {}
/api/utility-report/download/:reportId:
get:
summary: Download a completed HTML report
tags:
- Utility Report
operationId: utility_report_download
parameters:
- name: reportId
in: path
required: true
schema:
type: string
example: 2a70e478-90ce-4fa5-b996-6f98efdba7cf
description: Report UUID to download
- $ref: '#/components/parameters/TokenQuery'
responses:
'200':
description: HTML report document
'404':
description: Report not found or not yet complete
description: Returns the raw HTML document. Open in a browser and use Print → Save as PDF.
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.'