---
title: "Create Component Analysis"
method: POST
path: "/v1/component_analyses"
tags: ["v1", "component_analyses"]
---

# Create Component Analysis

`POST /v1/component_analyses`

## Request

- Base URL: `https://thrustlab.com`
- URL: `https://thrustlab.com/v1/component_analyses`
- Auth: HTTP bearer

Submit a bounded analysis. Results expire 24 hours after submission.

Point, sweep, target, optimization, sensitivity and model comparison share
component-level production physics. Constraints alone never identify a winner.

## Request body

- ComponentAnalysisRequest
  - `candidate_ids` string[], nullable
  - `component_id` string, nullable
  - `component_type` 'propeller' | 'motor' | 'battery', required
  - `conditions` AnalysisCondition[]
    - `inputs` union, required
      - PropellerInputs
        - `a_sound_mps` number, nullable
        - `airspeed_mps` number, nullable
        - `altitude_m` number, nullable
        - `ambient_temp_c` number, nullable
        - `blade_angle_offset_deg` number, nullable
        - `density_kg_m3` number, nullable
        - `freestream_angle_deg` number, nullable
        - `freestream_speed_mps` number, nullable
        - `n_crit` number, nullable
        - `nu_air_m2_s` number, nullable
        - `rpm` number, nullable
        - `tilt_deg` number, nullable
        - `v_axial_mps` number, nullable
        - `v_edge_mps` number, nullable
        - `vertical_speed_mps` number, nullable
      - MotorInputs
        - `ambient_temp_c` number, nullable
        - `duration_s` number, nullable
        - `esc_pwm_frequency_khz` number, nullable
        - `esc_resistance_mohm` number, nullable
        - `esc_sync_rectification` boolean, nullable
        - `esc_timing` 'low' | 'medium' | 'high' | 'auto', nullable
        - `esc_type` 'six_step' | 'foc', nullable
        - `motor_cooling_velocity_mps` number, nullable
        - `motor_thermal_resistance_k_w` number, nullable
        - `rpm` number, nullable
        - `shaft_power_w` number, nullable
        - `shaft_torque_nm` number, nullable
        - `supply_voltage_v` number, nullable
        - `thermal_on` boolean, nullable
        - `throttle` number, nullable
      - BatteryInputs
        - `ambient_temp_c` number, nullable
        - `cell_voltage_cutoff_v` number, nullable
        - `cooling_regime` 'static_bench' | 'prop_wash_mild' | 'prop_wash_strong' | 'forced_air', nullable
        - `current_a` number, nullable
        - `duration_s` number, nullable
        - `entropic_on` boolean, nullable
        - `initial_soc_pct` number, nullable
        - `initial_temp_c` number, nullable
        - `load_profile` BatteryLoad[], nullable
          - `current_a` number, nullable
          - `load_resistance_ohm` number, nullable
          - `power_w` number, nullable
          - `time_s` number, required
        - `load_resistance_ohm` number, nullable
        - `power_w` number, nullable
        - `soc_cutoff_pct` number, nullable
        - `thermal_on` boolean, nullable
        - `thermal_resistance_k_w` number, nullable
        - `timestep_s` number, nullable
      - DynamicPropellerInputs
        - `a_sound_mps` number, nullable
        - `airspeed_mps` number, nullable
        - `altitude_m` number, nullable
        - `ambient_temp_c` number, nullable
        - `blade_angle_offset_deg` number, nullable
        - `density_kg_m3` number, nullable
        - `freestream_angle_deg` number, nullable
        - `freestream_speed_mps` number, nullable
        - `n_crit` number, nullable
        - `nu_air_m2_s` number, nullable
        - `rpm` number, nullable
        - `shaft_torque_nm` number, nullable
        - `tilt_deg` number, nullable
        - `v_axial_mps` number, nullable
        - `v_edge_mps` number, nullable
        - `vertical_speed_mps` number, nullable
      - DynamicMotorInputs
        - `ambient_temp_c` number, nullable
        - `duration_s` number, nullable
        - `esc_pwm_frequency_khz` number, nullable
        - `esc_resistance_mohm` number, nullable
        - `esc_sync_rectification` boolean, nullable
        - `esc_timing` 'low' | 'medium' | 'high' | 'auto', nullable
        - `esc_type` 'six_step' | 'foc', nullable
        - `motor_cooling_velocity_mps` number, nullable
        - `motor_thermal_resistance_k_w` number, nullable
        - `rpm` number, nullable
        - `shaft_power_w` number, nullable
        - `shaft_torque_nm` number, nullable
        - `supply_voltage_v` number, nullable
        - `thermal_on` boolean, nullable
        - `throttle` number, nullable
        - `vd_v` number, nullable
        - `vq_v` number, nullable
    - `label` string, required
    - `weight` number, required
  - `constraints` AnalysisConstraint[]
    - `metric` string, required
    - `operator` 'gte' | 'lte' | 'eq', required
    - `tolerance` number
    - `value` number, required
  - `custom_spec` object, nullable
  - `dynamics` union
    - PropellerDynamics
      - `control_mode` 'prescribed_rpm' | 'shaft_torque'
      - `duration_s` number, required
      - `inertia_kg_m2` number, nullable
      - `inertia_policy` 'fixed' | 'similarity', nullable
      - `initial_state` PropellerInitialState
        - `rpm` number
      - `initial_wake` 'zero' | 'equilibrium'
      - `max_internal_steps` integer
      - `max_internal_steps_total` integer
      - `max_step_s` number
      - `output_event` DynamicOutputEvent
        - `dwell_s` number
        - `metric` string, required
        - `operator` 'gte' | 'lte', required
        - `value` number, required
      - `output_interval_s` number
      - `profile` DynamicProfile
        - `interpolation` 'hold' | 'linear'
        - `rows` DynamicProfileRow[], required
          - `inputs` union, required
            - DynamicPropellerInputs
              - …
            - DynamicMotorInputs
              - …
            - BatteryInputs
              - …
          - `time_s` number, required
      - `wake_on` boolean
      - `wake_tau1_s` number, nullable
    - MotorDynamics
      - `drive` 'throttle' | 'dq_voltage'
      - `duration_s` number, required
      - `external_inertia_kg_m2` number
      - `initial_state` MotorInitialState
        - `id_a` number
        - `iq_a` number
        - `magnet_temp_c` number, nullable
        - `rpm` number
        - `winding_temp_c` number, nullable
      - `max_internal_steps` integer
      - `max_internal_steps_total` integer
      - `max_step_s` number
      - `output_event` DynamicOutputEvent
        - `dwell_s` number
        - `metric` string, required
        - `operator` 'gte' | 'lte', required
        - `value` number, required
      - `output_interval_s` number
      - `profile` DynamicProfile
        - `interpolation` 'hold' | 'linear'
        - `rows` DynamicProfileRow[], required
          - `inputs` union, required
            - DynamicPropellerInputs
              - …
            - DynamicMotorInputs
              - …
            - BatteryInputs
              - …
          - `time_s` number, required
    - BatteryDynamics
      - `duration_s` number, required
      - `initial_state` BatteryInitialState
        - `initial_soc_pct` number
        - `initial_temp_c` number, nullable
        - `polarization_voltages_v` number[], nullable
      - `max_internal_steps` integer
      - `max_internal_steps_total` integer
      - `max_step_s` number
      - `output_event` DynamicOutputEvent
        - `dwell_s` number
        - `metric` string, required
        - `operator` 'gte' | 'lte', required
        - `value` number, required
      - `output_interval_s` number
      - `profile` DynamicProfile
        - `interpolation` 'hold' | 'linear'
        - `rows` DynamicProfileRow[], required
          - `inputs` union, required
            - DynamicPropellerInputs
              - …
            - DynamicMotorInputs
              - …
            - BatteryInputs
              - …
          - `time_s` number, required
  - `evaluation` 'steady' | 'dynamic'
  - `inputs` union, required
    - PropellerInputs
      - `a_sound_mps` number, nullable
      - `airspeed_mps` number, nullable
      - `altitude_m` number, nullable
      - `ambient_temp_c` number, nullable
      - `blade_angle_offset_deg` number, nullable
      - `density_kg_m3` number, nullable
      - `freestream_angle_deg` number, nullable
      - `freestream_speed_mps` number, nullable
      - `n_crit` number, nullable
      - `nu_air_m2_s` number, nullable
      - `rpm` number, nullable
      - `tilt_deg` number, nullable
      - `v_axial_mps` number, nullable
      - `v_edge_mps` number, nullable
      - `vertical_speed_mps` number, nullable
    - MotorInputs
      - `ambient_temp_c` number, nullable
      - `duration_s` number, nullable
      - `esc_pwm_frequency_khz` number, nullable
      - `esc_resistance_mohm` number, nullable
      - `esc_sync_rectification` boolean, nullable
      - `esc_timing` 'low' | 'medium' | 'high' | 'auto', nullable
      - `esc_type` 'six_step' | 'foc', nullable
      - `motor_cooling_velocity_mps` number, nullable
      - `motor_thermal_resistance_k_w` number, nullable
      - `rpm` number, nullable
      - `shaft_power_w` number, nullable
      - `shaft_torque_nm` number, nullable
      - `supply_voltage_v` number, nullable
      - `thermal_on` boolean, nullable
      - `throttle` number, nullable
    - BatteryInputs
      - `ambient_temp_c` number, nullable
      - `cell_voltage_cutoff_v` number, nullable
      - `cooling_regime` 'static_bench' | 'prop_wash_mild' | 'prop_wash_strong' | 'forced_air', nullable
      - `current_a` number, nullable
      - `duration_s` number, nullable
      - `entropic_on` boolean, nullable
      - `initial_soc_pct` number, nullable
      - `initial_temp_c` number, nullable
      - `load_profile` BatteryLoad[], nullable
        - `current_a` number, nullable
        - `load_resistance_ohm` number, nullable
        - `power_w` number, nullable
        - `time_s` number, required
      - `load_resistance_ohm` number, nullable
      - `power_w` number, nullable
      - `soc_cutoff_pct` number, nullable
      - `thermal_on` boolean, nullable
      - `thermal_resistance_k_w` number, nullable
      - `timestep_s` number, nullable
    - DynamicPropellerInputs
      - `a_sound_mps` number, nullable
      - `airspeed_mps` number, nullable
      - `altitude_m` number, nullable
      - `ambient_temp_c` number, nullable
      - `blade_angle_offset_deg` number, nullable
      - `density_kg_m3` number, nullable
      - `freestream_angle_deg` number, nullable
      - `freestream_speed_mps` number, nullable
      - `n_crit` number, nullable
      - `nu_air_m2_s` number, nullable
      - `rpm` number, nullable
      - `shaft_torque_nm` number, nullable
      - `tilt_deg` number, nullable
      - `v_axial_mps` number, nullable
      - `v_edge_mps` number, nullable
      - `vertical_speed_mps` number, nullable
    - DynamicMotorInputs
      - `ambient_temp_c` number, nullable
      - `duration_s` number, nullable
      - `esc_pwm_frequency_khz` number, nullable
      - `esc_resistance_mohm` number, nullable
      - `esc_sync_rectification` boolean, nullable
      - `esc_timing` 'low' | 'medium' | 'high' | 'auto', nullable
      - `esc_type` 'six_step' | 'foc', nullable
      - `motor_cooling_velocity_mps` number, nullable
      - `motor_thermal_resistance_k_w` number, nullable
      - `rpm` number, nullable
      - `shaft_power_w` number, nullable
      - `shaft_torque_nm` number, nullable
      - `supply_voltage_v` number, nullable
      - `thermal_on` boolean, nullable
      - `throttle` number, nullable
      - `vd_v` number, nullable
      - `vq_v` number, nullable
  - `max_evaluations` integer
  - `mode` 'point' | 'sweep' | 'solve_target' | 'optimize' | 'sensitivity' | 'compare_models'
  - `model` 'fast' | 'full', nullable
  - `objective` AnalysisObjective
    - `aggregation` 'mean' | 'worst', required
    - `direction` 'minimize' | 'maximize' | 'target', required
    - `metric` string, required
    - `target` number, nullable
  - `seed` integer
  - `target` AnalysisTarget
    - `metric` string, required
    - `tolerance` number, required
    - `value` number, required
  - `variables` AnalysisVariable[]
    - `max` number, nullable
    - `min` number, nullable
    - `parameter` string, required
    - `steps` integer
    - `values` number[], nullable

## Response `202`

Successful Response

- ComponentAnalysisAccepted
  - `id` string, required
  - `object` 'component_analysis'
  - `status` 'queued' | 'running' | 'cancelling' | 'completed' | 'failed' | 'cancelled'

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/thrustlab/apis/thrustlab-api.md) · [All operations](https://skmtc.dev/thrustlab/apis/thrustlab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thrustlab/apis/thrustlab-api/revisions/c19717e52529?raw)
