---
title: "Ingest a natural-language planning assumption into the graph (AI)"
method: POST
path: "/api/znp/projects/:projectId/assumptions"
tags: ["Zielnetzplanung (ZNP)"]
---

# Ingest a natural-language planning assumption into the graph (AI)

`POST /api/znp/projects/:projectId/assumptions`

## Request

- Base URL: `https://api.cernion.de`
- URL: `https://api.cernion.de/api/znp/projects/:projectId/assumptions`
- Auth: none declared

Uses Gemini (structured JSON schema) to extract asset type, capacity (kW), status, and §14a flex-NAV flag from free-text German input. Inserts a StrategicAssumption node at layer=2.5 and a CONTRIBUTES_LOAD edge to SUB_1. In calculateGFactor, nodes with hasFlexibleNav=true are throttled to a realistic emergency minimum (legally curtailable under §14a EnWG — g=0.45). On success, backend emits `znp.project.updated` with payload { type: "assumption-confirmed", data: { id: "<assumptionId>", text: "<originalText>" } } for NovaFeedStore/SSE consumers. Requires GEMINI_API_KEY — returns HTTP 503 if not configured.

## Path parameters

- `projectId` string, required

## Query parameters

- `token` string

## Request body

- object
  - `text` string, required
  - `token` string: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.

## Response `200`

Assumption node inserted

- object
  - `projectId` string
  - `assumptionId` string
  - `nodeKey` string
  - `extracted` object
  - `hasFlexibleNav` boolean
  - `graphStats` object

## Other responses

- `422`: HTTP 422 ASSUMPTION_EXTRACTION_FAILED — LLM could not extract valid capacity
- `503`: HTTP 503 LLM_NOT_CONFIGURED — GEMINI_API_KEY not set

---

[API](https://skmtc.dev/cernion/apis/cernion-energy-tools-api.md) · [All operations](https://skmtc.dev/cernion/apis/cernion-energy-tools-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cernion/apis/cernion-energy-tools-api/revisions/cdb94473b538?raw)
