Skip to main content

Modeling Object Inputs

Before running energy model simulations, integrations usually create and reuse modeling objects.

Location (POST /locations)

Body model: LocationCreateRequest
FieldTypeRequiredNotes
namestringyesDisplay name
latitude / longitudenumberyeslat / lng are accepted as deprecated aliases
elevationnumbernoAuto-enriched if omitted
ashraenumbernoClimate zone metadata
streetAddressstringnoAddress metadata
farShadingobjectnoHorizon profile wrapper
soilingmonthly dictnoMonthly 0-1 factors
weatherDataobjectnoOptional nested weather create payload

Weather Data (POST /weatherdata)

Body model: WeatherDataCreateRequest
FieldTypeRequiredNotes
weatherDataSourcestringconditionalUse non-provided for provider-backed sourcing
locationId or globalLocationIdinteger/stringnoOptional association to an existing location
ghi, dhi, windSpeed, temperaturenumber arraysconditionalRequired when providing inline arrays
dateinteger arrayconditionalRequired unless exactly 8760 rows
dni, relativeHumidity, poanumber arraysnoOptional enrichments
soilingmonthly dictnoMonthly 0-1 factors
Weather arrays must have equal lengths. Validation errors return 400 for invalid payload semantics.

Module

File Upload (POST /modules)

  • Content type: multipart form-data
  • Required part: file (.pan)
  • API parses and stores properties and optional AOI curve automatically.

JSON (POST /modules/json)

Body model: ModuleCreateRequest
FieldTypeRequiredNotes
namestringyesDisplay name
propertiesobjectyesParsed or manually authored module properties
aoiobjectnoAOI curve data

Inverter

File Upload (POST /inverters)

  • Content type: multipart form-data
  • Required part: file (.ond)
  • API parses and stores properties and optional efficiency points.

JSON (POST /inverters/json)

Body model: InverterCreateRequest
FieldTypeRequiredNotes
namestringyesDisplay name
propertiesobjectyesParsed or manually authored inverter properties
efficiencyobjectnoEfficiency curve data

Shading Scene

Canonical JSON Create (POST /shadingscenes)

Body model: ShadingSceneCreateRequest
FieldTypeRequiredNotes
namestringyesScene display name
sceneSourcestringyesSource label such as api-json, pvc, pvcomplete, or helioscope
sceneJson.tableListarrayyesAt least one table
sceneJson.obstructionsarraynoDefaults to []
sceneJson.modelInputsobjectnoDefaults diodesReadIn=true, diffuseTableIndex=0
sceneJson.propertiesobjectnoDefaults to meter-based import metadata
sceneJson.shadingSceneSummaryobjectnoAuto-derived when omitted
trackingParametersobjectnoRequired fields become mandatory when object is present
Validation notes:
  • Each table must provide either outline or all of xpoints/ypoints/zpoints.
  • Table geometry is rectangular: exactly 4 corner points.
  • torqueTubePoint_1, torqueTubePoint_2, and torqueTubeVector are optional and auto-derived when omitted.
  • transverseDiodes and stringsPerLength must be positive integers and default to 10 and 1.
  • Obstruction outlines need at least 3 points.
  • Top-level extra fields are rejected; nested sceneJson objects allow pass-through metadata.

File Import (POST /shadingscenes/import)

Content type: multipart form-data
FieldTypeRequiredNotes
fileuploadyesScene file (pvc/shd workflow)
namestringyesScene name
file_typestringnoDefaults to pvc
read_diodesbooleannoDefaults to true
gcr, azimuth, axis_tilt, back_tracking, max_anglemixednoOptional tracking config
terrain_aware, terrain_aware_diode_threshold, terrain_aware_methodmixednoOptional terrain-aware controls

Tracking Inputs (POST /shadingscenes/{scene_id}/trackinginputs)

  • Required form field: gcr
  • Optional fields: azimuth, axis_tilt, back_tracking, max_angle, terrain_aware, terrain_aware_diode_threshold, terrain_aware_method

Reuse Pattern

  1. Create modeling objects once per workspace.
  2. Store returned IDs.
  3. Reference those IDs in EnergyModelInput block/root payloads.