# EU Negative Electricity Price Prediction API

> EU Negative Electricity Price Prediction API is a paid API for AI agents from energy.netzhandwerker.de, paid per call via x402, $0.001/call, status unknown (last checked 2026-09-16).

Predicts whether German/European electricity prices will go negative in the next 2 hours and recommends whether to act (shift load, charge EV, discharge battery, or trade).

## Facts

- Endpoint: POST https://energy.netzhandwerker.de/predict/negative-price
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/eu-negative-electricity-price-prediction-api-baa5c90f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_BdqyeXZdDYyn1rQ5hOxn-

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability eu-negative-electricity-price-prediction-api-baa5c90f -d '<json body>'
```

Example prompt: Should my EV charger or home battery act right now to catch a negative electricity price window in Germany? Use a balanced policy profile and tell me the probability, recommended action, and when this signal expires.

## When to prefer this

Choose this endpoint when you need a single, actionable go/no-go decision for a German or European energy flexibility asset (EV, battery, or trading position) based on a negative price prediction — rather than raw price data or carbon intensity metrics. It is ideal for autonomous agents that need a fast, cheap ($0.001 USDC), keyless signal with built-in decision logic and configurable risk policy profiles, avoiding the need to build your own prediction and threshold logic on top of raw market data.

## Known failure modes

- Missing or malformed `policy_profile` enum value returns a validation error
- Payment not included or insufficient USDC causes x402 payment-required response
- Upstream grid data unavailable may result in degraded confidence or null expires_at
- Request body sent as wrong bodyType (e.g. form-data instead of json) causes parse failure
- Calling with GET instead of POST returns method-not-allowed

## How this service works

One x402 call returns the action, best time window, expected EUR value, confidence and expiry for German and European electricity decisions. USDC on Base, no API key or account.

## Output

Returns a JSON object with: a boolean `negative_price_in_2h` prediction, a calibrated probability score (0–1), the recommended action string (e.g. 'execute_shift_to_target_window'), a `should_act` boolean, an array of time horizon objects with lead hours and probabilities, risk flags, a schema version, and an expiry timestamp indicating when the signal becomes stale.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "properties": {
      "policy_profile": {
       "enum": [
        "balanced",
        "utility",
        "precision",
        "recall"
       ],
       "type": "string",
       "default": "balanced",
       "description": "Selects the reviewed probability threshold profile without changing the underlying calibrated probabilities."
      }
     },
     "additionalProperties": false
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST",
      "PUT",
      "PATCH"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "ok",
      "endpoint",
      "result"
     ],
     "properties": {
      "ok": {
       "type": "boolean"
      },
      "result": {
       "type": "object",
       "required": [
        "schema_version",
        "expires_at",
        "prediction",
        "horizons",
        "decision_engine"
       ],
       "properties": {
        "horizons": {
         "type": "array",
         "items": {
          "type": "object"
         }
        },
        "expires_at": {
         "type": [
          "string",
          "null"
         ]
        },
        "prediction": {
         "type": "object"
        },
        "schema_version": {
         "type": "string"
        },
        "decision_engine": {
         "type": "object"
        }
       },
       "additionalProperties": true
      },
      "endpoint": {
       "type": "string"
      }
     },
     "additionalProperties": true
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "result": {
   "model": {
    "version": "4.1"
   },
   "horizons": [
    {
     "lead_hours": 2,
     "probability": 0.85
    }
   ],
   "expires_at": "2026-07-12T13:00:00.000Z",
   "prediction": {
    "probability": 0.85,
    "negative_price_in_2h": true
   },
   "risk_flags": [],
   "schema_version": "negprice_signal_v1",
   "decision_engine": {
    "should_act": true,
    "recommended_action": "execute_shift_to_target_window"
   }
  },
  "endpoint": "/predict/negative-price"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/eu-negative-electricity-price-prediction-api-baa5c90f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from energy.netzhandwerker.de](https://www.zero.xyz/host/energy.netzhandwerker.de/llms.txt)
