Raw schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude, decimal degrees",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"description": "Longitude, decimal degrees",
"minimum": -180,
"maximum": 180
},
"basis": {
"type": "string",
"enum": [
"tmy",
"amy"
],
"description": "Weather file basis (default: tmy)"
},
"amy_year": {
"type": "integer",
"description": "Year for AMY basis"
},
"ssp": {
"type": "string",
"enum": [
"ssp126",
"ssp245",
"ssp370",
"ssp585"
],
"description": "CMIP6 emission scenario. ssp370 is the recommended high-end for design; ssp585 (SSP5-8.5) is an opt-in extreme stress-test pathway (~4.4°C, low likelihood per IPCC AR6 / CMIP7) for worst-case analysis."
},
"year": {
"type": "integer",
"enum": [
2030,
2035,
2040,
2045,
2050,
2060,
2070,
2080,
2090,
2100
],
"description": "Future horizon"
},
"percentile": {
"type": "integer",
"enum": [
5,
10,
25,
50,
75,
90,
95
],
"description": "Warming percentile (default: 50)"
},
"uhi": {
"type": "string",
"enum": [
"none",
"suburban",
"urban",
"dense_urban"
],
"description": "Urban Heat Island preset"
},
"events": {
"type": "string",
"description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind)."
},
"event_duration": {
"type": "integer",
"minimum": 3,
"maximum": 30,
"description": "Event length in days (3-30, default 14). **For stress-test scenarios use 14-21 days** — shorter durations don't capture sustained operational impact (charging schedules, occupancy patterns, equipment cycling). 7 days is too short for any design or resilience analysis. Use 7-10 only for transient short-duration events."
},
"intensity": {
"type": "string",
"description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return."
},
"intensity_auto": {
"type": "boolean",
"description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)"
},
"smoke": {
"type": "boolean",
"description": "Enable wildfire smoke overlay"
},
"smoke_intensity": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Smoke severity 1-10 → peak AOD 0.1-6.0"
},
"smoke_duration": {
"type": "integer",
"minimum": 3,
"maximum": 30,
"description": "Smoke days (3-30, default: 7)"
},
"tmy_period": {
"type": "string",
"enum": [
"full",
"2011-2025",
"2009-2023",
"2007-2021",
"2004-2018"
],
"description": "TMYx vintage. Default 2011-2025."
},
"format": {
"type": "string",
"enum": [
"epw",
"ddy"
],
"description": "Output format (default: epw)"
},
"ensemble": {
"type": "boolean",
"description": "Generate a per-model CMIP6 ensemble (~20 EPWs, one per climate model). Costs 10 credits. Requires ssp + year."
},
"scenarios": {
"type": "array",
"maxItems": 10,
"description": "Batch mode — array of configs, each generated in parallel. Same shape as the top-level config. When set, top-level config params are ignored. Costs 1 credit per scenario (up to 10).",
"items": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude, decimal degrees",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"description": "Longitude, decimal degrees",
"minimum": -180,
"maximum": 180
},
"basis": {
"type": "string",
"enum": [
"tmy",
"amy"
],
"description": "Weather file basis (default: tmy)"
},
"amy_year": {
"type": "integer",
"description": "Year for AMY basis"
},
"ssp": {
"type": "string",
"enum": [
"ssp126",
"ssp245",
"ssp370",
"ssp585"
],
"description": "CMIP6 emission scenario. ssp370 is the recommended high-end for design; ssp585 (SSP5-8.5) is an opt-in extreme stress-test pathway (~4.4°C, low likelihood per IPCC AR6 / CMIP7) for worst-case analysis."
},
"year": {
"type": "integer",
"enum": [
2030,
2035,
2040,
2045,
2050,
2060,
2070,
2080,
2090,
2100
],
"description": "Future horizon"
},
"percentile": {
"type": "integer",
"enum": [
5,
10,
25,
50,
75,
90,
95
],
"description": "Warming percentile (default: 50)"
},
"uhi": {
"type": "string",
"enum": [
"none",
"suburban",
"urban",
"dense_urban"
],
"description": "Urban Heat Island preset"
},
"events": {
"type": "string",
"description": "Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind)."
},
"event_duration": {
"type": "integer",
"minimum": 3,
"maximum": 30,
"description": "Event length in days (3-30, default 14). **For stress-test scenarios use 14-21 days** — shorter durations don't capture sustained operational impact (charging schedules, occupancy patterns, equipment cycling). 7 days is too short for any design or resilience analysis. Use 7-10 only for transient short-duration events."
},
"intensity": {
"type": "string",
"description": "Per-event \"type:1-7\" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return."
},
"intensity_auto": {
"type": "boolean",
"description": "Auto-fill unspecified intensities from IPCC AR6 (default: true)"
},
"smoke": {
"type": "boolean",
"description": "Enable wildfire smoke overlay"
},
"smoke_intensity": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Smoke severity 1-10 → peak AOD 0.1-6.0"
},
"smoke_duration": {
"type": "integer",
"minimum": 3,
"maximum": 30,
"description": "Smoke days (3-30, default: 7)"
},
"tmy_period": {
"type": "string",
"enum": [
"full",
"2011-2025",
"2009-2023",
"2007-2021",
"2004-2018"
],
"description": "TMYx vintage. Default 2011-2025."
},
"label": {
"type": "string"
}
},
"required": [
"lat",
"lon"
]
}
},
"stress_test": {
"type": "boolean",
"description": "Unlock intensity 8-10. Default false."
},
"include_ddy": {
"type": "boolean",
"description": "When format=epw, also include the matching DDY in the response (single-file only)."
}
},
"required": [
"lat",
"lon"
]
}