Build solar battery performance report API

Aggregate generation deviation, degradation, inverter faults, cycle aging, SOH, warranty, efficiency, self-consumption, and asset comparison from caller-supplied records only.

The Build solar battery performance report operation is part of the Solar, Battery & Distributed Energy Intelligence API on BRAINIAC.software. Aggregate generation deviation, degradation, inverter faults, cycle aging, SOH, warranty, efficiency, self-consumption, and asset comparison from caller-supplied records only. It is exposed as POST /api/v1/solar-battery/performance-report and priced at $0.08 USDC on Base. Payment uses the x402 exact scheme: an unpaid call returns HTTP 402 with payment requirements; after paying the exact USDC amount, retry the same request with a payment-signature header and Idempotency-Key. No account and no API key are required. Data sources for this product: Caller-supplied solar generation, panel measurements, inverter logs, battery telemetry, warranties, and consumption records Limitations: No inverter cloud platform or paid energy monitoring service is used and no API key is required. Degradation, SOH, efficiency, and deviation metrics use only supplied measurements. Missing values are not invented. Inverter fault labels come from caller-supplied fault maps or simple keyword signals in supplied messages. Warranty comparisons use only caller-supplied warranty thresholds and measured values. Legal warranty coverage is not determined. Performance reports aggregate only sections for which records were supplied. Outputs are compliance prechecks, drafts, or data lookups for human review. They are not official determinations, legal advice, identity confirmation, or certified filings. Related operations in this group include Detect solar generation deviations, Estimate solar panel degradation, Classify solar inverter faults, Analyze battery cycle aging. Open the group documentation for the full request schema, field notes, and response examples before integrating.

POST$0.08 USDC
/api/v1/solar-battery/performance-report

Example request

curl -i -X POST "https://www.brainiac.software/api/v1/solar-battery/performance-report" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "asOf": "2026-11-04T21:00:00.000Z",
  "assets": [
    {
      "id": "SITE-A",
      "name": "Rooftop A",
      "kind": "solar-storage",
      "capacityKw": 50,
      "capacityKwh": 60,
      "region": "NL",
      "installedAt": "2022-01-01"
    },
    {
      "id": "SITE-B",
      "name": "Rooftop B",
      "kind": "solar-storage",
      "capacityKw": 40,
      "capacityKwh": 40,
      "region": "NL",
      "installedAt": "2023-06-01"
    }
  ],
  "generation": [
    {
      "id": "G1",
      "assetId": "SITE-A",
      "at": "2026-11-01",
      "kwh": 180,
      "expectedKwh": 200,
      "irradiance": 4.2,
      "source": "Caller-supplied meter"
    },
    {
      "id": "G2",
      "assetId": "SITE-A",
      "at": "2026-11-02",
      "kwh": 210,
      "expectedKwh": 205,
      "source": "Caller-supplied meter"
    },
    {
      "id": "G3",
      "assetId": "SITE-B",
      "at": "2026-11-01",
      "kwh": 140,
      "expectedKwh": 150,
      "source": "Caller-supplied meter"
    }
  ],
  "panels": [
    {
      "id": "P1",
      "assetId": "SITE-A",
      "name": "Array 1",
      "installedAt": "2022-01-01",
      "nameplateKw": 50,
      "measuredKw": 46.5,
      "measuredAt": "2026-11-01",
      "source": "Caller-supplied IV curve"
    }
  ],
  "inverterEvents": [
    {
      "id": "E1",
      "assetId": "SITE-A",
      "at": "2026-11-01T10:00:00.000Z",
      "code": "F01",
      "message": "Grid overvoltage",
      "severity": "warn",
      "source": "Caller-supplied inverter log"
    },
    {
      "id": "E2",
      "assetId": "SITE-A",
      "at": "2026-11-01T11:00:00.000Z",
      "code": "ISO",
      "message": "Isolation fault detected",
      "severity": "fault",
      "source": "Caller-supplied inverter log"
    }
  ],
  "faultMap": [
    {
      "code": "F01",
      "label": "Grid overvoltage",
      "category": "grid"
    }
  ],
  "batteryCycles": [
    {
      "id": "C1",
      "assetId": "SITE-A",
      "at": "2026-01-01",
      "cycleCount": 400,
      "depthOfDischargePct": 80,
      "throughputKwh": 12000,
      "source": "Caller-supplied BMS"
    },
    {
      "id": "C2",
      "assetId": "SITE-A",
      "at": "2026-11-01",
      "cycleCount": 520,
      "depthOfDischargePct": 75,
      "throughputKwh": 3500,
      "source": "Caller-supplied BMS"
    }
  ],
  "batteryHealth": [
    {
      "id": "H1",
      "assetId": "SITE-A",
      "name": "Battery A",
      "nameplateKwh": 60,
      "measuredKwh": 54,
      "cycleCount": 520,
      "ratedCycles": 6000,
      "measuredAt": "2026-11-01",
      "source": "Caller-supplied BMS"
    }
  ],
  "warranties": [
    {
      "id": "W1",
      "assetId": "SITE-A",
      "kind": "capacity",
      "minSohPct": 70,
      "maxCycles": 6000,
      "maxCalendarYears": 10,
      "installedAt": "2022-01-01",
      "asOf": "2026-11-04",
      "source": "Caller-supplied warranty extract"
    }
  ],
  "efficiencyPeriods": [
    {
      "id": "R1",
      "assetId": "SITE-A",
      "periodStart": "2026-10-01",
      "periodEnd": "2026-10-31",
      "chargeKwh": 1000,
      "dischargeKwh": 920,
      "source": "Caller-supplied meter"
    }
  ],
  "consumption": [
    {
      "id": "N1",
      "assetId": "SITE-A",
      "at": "2026-11-01",
      "generationKwh": 180,
      "loadKwh": 120,
      "gridExportKwh": 50,
      "gridImportKwh": 10,
      "source": "Caller-supplied"
    },
    {
      "id": "N2",
      "assetId": "SITE-A",
      "at": "2026-11-02",
      "generationKwh": 210,
      "loadKwh": 150,
      "gridExportKwh": 55,
      "gridImportKwh": 5,
      "source": "Caller-supplied"
    }
  ]
}
JSON

An unpaid probe returns HTTP 402 with x402 payment requirements. After paying the exact USDC amount on Base, retry the identical request with a payment-signature header.

FAQ

  • Do I need an API key? No. Pay the listed USDC amount with x402.
  • What network? Base (eip155:8453), USDC.
  • Is this an official determination? No. Results are for human review against the cited sources.

Related APIs

Solar, Battery & Distributed Energy Intelligence APIFull docsHow it works