For developers & AI systems
The website is one interface to a calculation engine. That engine is API-first: the same functions power every calculator, the Solar Decision Engine and the Solar Advisor, and they are documented so an AI assistant or agent can eventually call them directly.
Today the engine runs client-side as window.SI.engine in /assets/data.js. There is no hosted REST endpoint or MCP server yet — but the function contracts are stable and specified, so integrations built against them will carry over.
/api/openapi.yamlSizes a residential system and estimates its economics.
In: { zip, monthly_bill, annual_kwh?, roof_area?, roof_orientation?, shading?, battery_interest?, offset?, rate_escalation? }
Out: { system_size, production, annual_consumption, coverage_pct, gross_cost, incentives_total, net_cost, annual_savings, payback, savings_10yr, savings_20yr, savings_25yr, roi_pct, monthly_loan, assumptions[] }
Amortizes a solar loan and estimates payback against savings.
In: { system_cost, down_payment?, apr?, term?, annual_savings? }
Out: { loan_amount, apr, term, monthly_payment, total_interest, total_cost, net_monthly_impact, payback, assumptions[] }
Returns structured incentive records — federal first, then state — each with a source URL and a last_verified date.
In: { state | zip, technology? }
Out: { state, incentives: [{ id, name, level, jurisdiction, eligibility, value, value_type, expiration, source_name, source_url, last_verified, technologies[] }], note, source }
Installers that publicly serve a state, ranked 0–100 by a transparent, fixed-weight match score. Weights: service-area 25, experience 15, reputation 20, product 10, warranty 10, financing 10, verification 10. Reputation/warranty/verification currently use a neutral baseline (records are not independently verified). Ranking is algorithmic and may include commercial relationships.
In: { zip | state, system_size?, battery?, financing?, limit? }
Out: { state, count, weights, disclosure, installers: [{ name, website, hq, founded, profile_url, match_score, match_breakdown }] }
Compares 2–3 proposals and names the cheapest, best value, best warranty, best financing, highest production and best overall, with a rationale for each.
In: { quotes: [{ label?, system_size, price, ppw?, battery_kwh?, warranty_years?, apr?, monthly_payment?, production? }] }
Out: { quotes[], best_price, best_value, best_financing, best_warranty, best_production, overall_recommendation, rationale{} }
Helpers over the above: scenarios(input) → cash / loan / solar+battery; sensitivity(input) → payback and 25-year savings at 2/4/6%/yr escalation plus optimistic/base/conservative; verdict({payback, rate, coverage_pct}) → { rating, why }.
/api/v0 matching the OpenAPI specInterested in an integration or early API access? Get in touch.