# Solar Autonomy Forecast

> Solar Autonomy Forecast is a paid API for AI agents from solar.halowerk.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-15).

Calculates how many days a battery system can run autonomously given daily solar harvest, load profile, and battery state — no weather data fetched, pure energy balance computation.

## Facts

- Endpoint: POST https://solar.halowerk.com/autonomy-forecast
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/solar-autonomy-forecast-75724424
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_eBuv1WM5_N12B9HKcGOEQ

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 solar-autonomy-forecast-75724424 -d '<json body>'
```

Example prompt: How many days of autonomy do I have? My battery is 200Ah at 12V nominal, currently at 80% SOC with a 20% reserve floor. I'm getting 1200Wh of solar per day. My loads are a fridge at 45W running 24 hours (DC), and lights at 30W for 6 hours (AC). My inverter runs 8 hours a day, idles at 15W, and is 90% efficient.

## When to prefer this

Choose this endpoint when you need a fast, deterministic energy balance calculation from known figures — no weather API, no location, no assumptions. Ideal for off-grid solar sizing checks, trip planning, and autonomy estimation when the user already has their solar harvest figure. Prefer over weather-integrated solar forecasts when the user controls the input data and wants a pure arithmetic result. Does not model battery ageing, temperature, or Peukert effects, so best suited for LiFePO4 chemistries.

## Known failure modes

- Missing required soc_percent field returns a validation error
- Providing neither capacity_ah nor capacity_wh makes battery size indeterminate
- Loads array empty or missing causes rejection (minItems: 1)
- Specifying hours_per_day > 24 or watts < 0 fails schema validation
- Very high daily_solar_input_wh exceeding total load results in infinite autonomy (may return unbounded or max value)
- Inverter efficiency below 0.5 rejected by schema

## How this service works

Daily energy balance and straight run-down from the figures supplied. Solar input is caller data in watt-hours per day; nothing is fetched and no weather is assumed. Time to empty means time to the reserve floor, not to zero. Idle draw and conversion efficiency apply to AC loads only. Ageing, temperature and Peukert behaviour are not modelled, which matters for lead acid far more than for LiFePO4.

## Output

Returns a daily energy balance breakdown showing net Wh generated vs consumed, the number of days of autonomy remaining before the battery reaches the reserve SOC floor, and the effective daily surplus or deficit — all based purely on the caller-supplied figures with no external data fetched.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "loads": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "name",
     "watts"
    ],
    "properties": {
     "dc": {
      "type": "boolean",
      "default": false,
      "description": "True for loads fed straight from the battery."
     },
     "name": {
      "type": "string"
     },
     "watts": {
      "type": "number",
      "maximum": 50000,
      "minimum": 0
     },
     "hours_per_day": {
      "type": "number",
      "default": 24,
      "maximum": 24,
      "minimum": 0
     }
    },
    "additionalProperties": false
   },
   "maxItems": 60,
   "minItems": 1
  },
  "battery": {
   "type": "object",
   "required": [
    "soc_percent"
   ],
   "properties": {
    "capacity_ah": {
     "type": "number",
     "maximum": 100000,
     "minimum": 1
    },
    "capacity_wh": {
     "type": "number",
     "maximum": 10000000,
     "minimum": 10
    },
    "soc_percent": {
     "type": "number",
     "maximum": 100,
     "minimum": 0
    },
    "nominal_voltage_v": {
     "type": "number",
     "default": 12,
     "maximum": 1000,
     "minimum": 6
    },
    "reserve_soc_percent": {
     "type": "number",
     "default": 20,
     "maximum": 90,
     "minimum": 0,
     "description": "Floor not to be crossed."
    }
   },
   "additionalProperties": false
  },
  "inverter": {
   "type": "object",
   "properties": {
    "idle_w": {
     "type": "number",
     "default": 15,
     "maximum": 500,
     "minimum": 0
    },
    "efficiency": {
     "type": "number",
     "default": 0.9,
     "maximum": 1,
     "minimum": 0.5
    },
    "hours_powered_per_day": {
     "type": "number",
     "default": 24,
     "maximum": 24,
     "minimum": 0
    }
   },
   "additionalProperties": false
  },
  "daily_solar_input_wh": {
   "type": "number",
   "default": 0,
   "maximum": 1000000,
   "minimum": 0,
   "description": "Expected harvest per day."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/solar-autonomy-forecast-75724424/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from solar.halowerk.com](https://www.zero.xyz/host/solar.halowerk.com/llms.txt)
