cURL Examples¶
Command-line examples using cURL for testing and scripting.
Health Check¶
Solar Resource Data¶
curl -X POST https://api.tessellaterenewables.com/solar/resource \
-H "Content-Type: application/json" \
-d '{
"latitude": 35.0,
"longitude": -110.0
}'
Quick Optimization¶
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"
}'
With Pretty Output (jq)¶
curl -s -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"
}' | jq '.'
Extract Specific Fields¶
curl -s -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"
}' | jq '{
tilt: .optimal_parameters.tilt,
azimuth: .optimal_parameters.azimuth,
annual_energy: .energy_metrics.annual_energy_mwh,
lcoe: .financial_metrics.lcoe_cents_per_kwh
}'
Full Optimization with Polling¶
#!/bin/bash
# Submit optimization job
RESPONSE=$(curl -s -X POST \
https://api.tessellaterenewables.com/solar/optimization/run \
-H "Content-Type: application/json" \
-d '{
"site": {
"latitude": 35.0,
"longitude": -110.0,
"capacity_kw": 1000
},
"objective": "npv",
"max_iterations": 50
}')
JOB_ID=$(echo $RESPONSE | jq -r '.job_id')
echo "Job submitted: $JOB_ID"
# Poll for results
while true; do
RESULT=$(curl -s "https://api.tessellaterenewables.com/solar/optimization/$JOB_ID")
STATUS=$(echo $RESULT | jq -r '.status')
PROGRESS=$(echo $RESULT | jq -r '.progress // 0')
echo "Status: $STATUS ($PROGRESS%)"
if [ "$STATUS" = "completed" ]; then
echo ""
echo "Results:"
echo $RESULT | jq '.optimal_parameters'
echo ""
echo "Energy: $(echo $RESULT | jq '.energy_metrics.annual_energy_mwh') MWh"
echo "NPV: $(echo $RESULT | jq '.financial_metrics.npv_dollars')"
break
elif [ "$STATUS" = "failed" ]; then
echo "Error: $(echo $RESULT | jq -r '.error_message')"
exit 1
fi
sleep 2
done
Multi-Objective Optimization¶
curl -X POST https://api.tessellaterenewables.com/solar/optimization/multi \
-H "Content-Type: application/json" \
-d '{
"site": {
"latitude": 35.0,
"longitude": -110.0,
"capacity_kw": 1000
},
"objectives": ["energy", "lcoe"],
"generations": 100
}'
Power Prediction¶
curl -X POST https://api.tessellaterenewables.com/solar/predict \
-H "Content-Type: application/json" \
-d '{
"latitude": 35.0,
"longitude": -110.0,
"capacity_kw": 1000,
"tilt": 32.0,
"azimuth": 180.0,
"dc_ac_ratio": 1.25,
"gcr": 0.38
}'
With API Key Authentication¶
curl -X POST https://api.tessellaterenewables.com/solar/optimization/run \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key_here" \
-d '{
"site": {"latitude": 35.0, "longitude": -110.0, "capacity_kw": 1000},
"objective": "npv"
}'
Save Response to File¶
curl -s -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"
}' > optimization_result.json
Batch Site Comparison Script¶
#!/bin/bash
# Sites to compare
SITES='[
{"name": "Phoenix", "lat": 33.45, "lon": -112.07},
{"name": "Denver", "lat": 39.74, "lon": -104.99},
{"name": "Austin", "lat": 30.27, "lon": -97.74}
]'
echo "Site Comparison (1000 kW)"
echo "========================="
echo ""
echo "$SITES" | jq -c '.[]' | while read site; do
NAME=$(echo $site | jq -r '.name')
LAT=$(echo $site | jq -r '.lat')
LON=$(echo $site | jq -r '.lon')
RESULT=$(curl -s -X POST \
https://api.tessellaterenewables.com/solar/optimization/quick \
-H "Content-Type: application/json" \
-d "{
\"site\": {\"latitude\": $LAT, \"longitude\": $LON, \"capacity_kw\": 1000},
\"objective\": \"npv\"
}")
ENERGY=$(echo $RESULT | jq '.energy_metrics.annual_energy_mwh')
LCOE=$(echo $RESULT | jq '.financial_metrics.lcoe_cents_per_kwh')
NPV=$(echo $RESULT | jq '.financial_metrics.npv_dollars')
printf "%-10s Energy: %8.0f MWh LCOE: %5.2f ยข/kWh NPV: $%'d\n" \
"$NAME" "$ENERGY" "$LCOE" "${NPV%.*}"
done
Timing Requests¶
time curl -s -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}}' \
> /dev/null