Quick Optimization
Get instant optimal solar parameters without running a full optimization job. Ideal for rapid assessments and interactive applications.
Endpoint
POST /solar/optimization/quick
Request
{
"site": {
"latitude": 35.0,
"longitude": -110.0,
"capacity_kw": 1000
},
"objective": "energy"
}
Parameters
| Field |
Type |
Required |
Default |
Description |
site.latitude |
float |
Yes |
- |
Site latitude (-90 to 90) |
site.longitude |
float |
Yes |
- |
Site longitude (-180 to 180) |
site.capacity_kw |
float |
Yes |
- |
System DC capacity in kW |
objective |
string |
No |
energy |
Optimization objective |
Objectives
| Value |
Description |
energy |
Maximize annual energy production (MWh) |
lcoe |
Minimize Levelized Cost of Energy (¢/kWh) |
npv |
Maximize Net Present Value ($) |
irr |
Maximize Internal Rate of Return (%) |
Response
{
"optimal_parameters": {
"tilt": 32.5,
"azimuth": 180.0,
"dc_ac_ratio": 1.25,
"gcr": 0.35
},
"energy_metrics": {
"annual_energy_mwh": 1850.5,
"capacity_factor": 0.211,
"specific_yield": 1850.5,
"performance_ratio": 0.82
},
"financial_metrics": {
"lcoe_cents_per_kwh": 3.45,
"npv_dollars": 1250000,
"irr_percent": 14.5,
"payback_years": 6.2,
"total_capex": 850000
},
"solar_resource": {
"annual_ghi": 2150.5,
"annual_dni": 2450.3,
"avg_temp": 18.5,
"data_source": "NASA_POWER"
},
"optimization_time_ms": 245
}
Code Examples
import requests
response = requests.post(
"https://api.tessellaterenewables.com/solar/optimization/quick",
json={
"site": {
"latitude": 35.0,
"longitude": -110.0,
"capacity_kw": 1000
},
"objective": "energy"
}
)
result = response.json()
print("Optimal Parameters:")
print(f" Tilt: {result['optimal_parameters']['tilt']}°")
print(f" Azimuth: {result['optimal_parameters']['azimuth']}°")
print(f" DC/AC Ratio: {result['optimal_parameters']['dc_ac_ratio']}")
print(f" GCR: {result['optimal_parameters']['gcr']}")
print("\nEnergy Performance:")
print(f" Annual Energy: {result['energy_metrics']['annual_energy_mwh']:,.0f} MWh")
print(f" Capacity Factor: {result['energy_metrics']['capacity_factor']:.1%}")
print("\nFinancial Performance:")
print(f" LCOE: {result['financial_metrics']['lcoe_cents_per_kwh']:.2f} ¢/kWh")
print(f" NPV: ${result['financial_metrics']['npv_dollars']:,.0f}")
print(f" IRR: {result['financial_metrics']['irr_percent']:.1f}%")
async function optimizeSolar(lat, lon, capacityKw, objective = 'energy') {
const response = await fetch(
'https://api.tessellaterenewables.com/solar/optimization/quick',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
site: {
latitude: lat,
longitude: lon,
capacity_kw: capacityKw
},
objective: objective
})
}
);
return response.json();
}
// Usage
const result = await optimizeSolar(35.0, -110.0, 1000, 'energy');
console.log(`Optimal tilt: ${result.optimal_parameters.tilt}°`);
console.log(`Annual energy: ${result.energy_metrics.annual_energy_mwh} MWh`);
curl -X POST https://api.tessellaterenewables.com/solar/optimization/quick \
-H "Content-Type: application/json" \
-d '{
"site": {
"latitude": 35.0,
"longitude": -110.0,
"capacity_kw": 1000
},
"objective": "energy"
}'
Comparing Objectives
Different objectives yield different optimal parameters:
objectives = ['energy', 'lcoe', 'npv', 'irr']
for obj in objectives:
result = requests.post(
"https://api.tessellaterenewables.com/solar/optimization/quick",
json={
"site": {"latitude": 35.0, "longitude": -110.0, "capacity_kw": 1000},
"objective": obj
}
).json()
params = result['optimal_parameters']
print(f"{obj.upper()}: Tilt={params['tilt']:.1f}°, GCR={params['gcr']:.2f}")
When to Use Quick vs Full Optimization
- Response time: ~200-500ms
- No job polling required: Results returned immediately
- Caching: Solar resource data cached for faster repeated queries