v1
dynamic-simulations

Create Dynamic V1

Submit a transient (time-domain) powertrain run.

Pro-gated (free -> 403 pro_required); the schedule is validated and the credit cost (the coulombic upfront estimate) reserved server-side BEFORE the worker is dispatched. Returns 202 Accepted with a dyn_-prefixed resource; poll GET or stream progress via SSE.

post/v1/dynamic-simulations

Request

  • Base URL: https://thrustlab.com
  • URL: https://thrustlab.com/v1/dynamic-simulations
  • Auth: HTTP bearer

Headers

Idempotency-Keystring required

Unique key (max 255 chars) making this POST safe to retry. Required on all v1 write requests; replays return the cached response.

Request body

ambient_temp_cnumber
battery_charge_pctnumber
battery_component_idstring nullable
battery_esc_wire_resistance_mohmnumber
battery_initial_temp_cnumber nullable
density_kg_m3number required
motor_initial_temp_cnumber nullable
namestring nullable
project_idstring nullable

Project to file this run in (raw UUID or proj_<ksuid>). Omit to use the account's default project, which is created if absent.

propeller_model'fast' | 'full'

Propeller model for this mission. Dynamic runs are Full-model only; 'fast' is refused rather than silently substituted.

Response

Successful Response

battery_topologyobject nullable
cancel_requested_atstring nullable

When a cancel was requested for a RUNNING run. The status stays running until the worker stops at its next integration chunk boundary — at which point it keeps the results it has, refunds in full, and the run turns canceled with a partial result. Null when no cancel is pending, which includes every terminal run: the field reports a request in flight, not the history of one. A QUEUED run cancels immediately instead and never sets this.

created_atstring nullable

When the run was submitted.

credits_costinteger required
dispatched_atstring nullable

When the run was handed to the worker queue. A dynamic run is dispatched at creation, so this always equals created_at — it is NOT the start of execution.

display_labelsobject nullable
errorobject nullable
idstring required
input_snapshotobject nullable
is_starredboolean
namestring nullable
object'dynamic_simulation'
progressobject nullable

How far a running solve has got, refreshed at every integration chunk boundary: fraction (0-1, null when it cannot be estimated), sim_time_s reached, sim_time_total_s (null for a run to depletion, which has no fixed horizon — its fraction comes from the estimated duration and is capped at 0.99), wall_s of real time so far, and updated_at. Null before the first chunk completes.

project_idstring required
resultobject nullable
snapshot_versioninteger
solver_enginestring
started_atstring nullable

When a worker claimed the run and the solve began. Null until then. For a dynamic run this is the only field that shows how long it waited for a slot.

status'queued' | 'running' | 'completed' | 'failed' | 'canceled' required

Changes

No recorded changes to this operation across all 1 revision of this API.