Skip to main content
April 20, 2026
Python SDK resource clients, validation initial conditions, capacity calculation fix

Python SDK resource clients

The Python SDK gains typed sub-clients for managing Studio resources programmatically. You can now create, list, retrieve, update, and delete projects, models, parameterized models, studies, protocols, and optimizations directly from the Ionworks client — for example, client.project.list(), client.model.get(id), or client.study.create(...). A new “Managing resources” section in the Python API docs walks through each sub-client with usage examples, and requests for Projects, Models, and Studies no longer require your organization to be specified separately — it’s resolved from your account automatically.

Validation initial conditions and UX polish

Validations now let you choose how the simulation is initialized: auto-detect from the measurement, a custom starting voltage, or a custom state of charge. Each validation row in the Report tab can be removed individually with a confirmation dialog, and a dedup bug that caused two measurements sharing the same initial voltage to overwrite each other’s drive cycle has been fixed. Validation error plots also now render with grid lines for easier reading.

Capacity calculation fix for multi-electrode cells

A capacity calculation was reading a non-canonical parameter name for the number of electrodes connected in parallel, causing the maximum concentration to be over-computed by a factor of N when users set the correct key. The fix aligns all lookups with PyBaMM’s canonical parameter name so multi-electrode cells parameterize correctly.
Improvements
  • Studies with simulations of a single experiment type now auto-select that type so the visualization view is immediately accessible.
  • Failed variable-evaluation jobs now surface an error state with a Retry button instead of spinning indefinitely.
  • Studies list and parameterized models list now support pagination.
Fixes
  • Fixed a crash when rendering time-series measurements with thousands of short steps (e.g. HPPC pulse protocols with ~1500 steps) — the dashboard can now load these measurements.
  • Fixed coupled custom variables being silently dropped when their resolution failed, which could remove convenience variables like “Temperature [degC]” from simulation outputs.
  • Fixed an issue where an overly large page size on the models list could cause an error.
Improvements
  • Bumped PyBaMM to 26.3.1, which falls back to a base model with a warning when a custom model references a package that isn’t installed in the run environment.
  • Improved reliability of OCP-related fitting objectives so they work correctly in Validation pipelines.
Fixes
  • Fixed an issue where a data fit submitted with a single objective could fail unexpectedly.
Improvements
  • Added typed sub-clients for Models, Studies, Optimizations, Projects, Protocols, and ParameterizedModels, replacing raw HTTP requests for resource management.
  • Requests no longer require your organization to be specified in resource paths — it’s resolved from your account automatically.
  • Simulation polling now propagates errors immediately instead of swallowing them, and uses typed job status objects with clearer completion/failure fields.
Fixes
  • Fixed the simulation job poll endpoint, which was pointing at an incorrect route.
Fixes
  • Fixed a sign-detection bug in the ECM validator where a symmetric current profile (charge / discharge / charge returning to the same net charge) was incorrectly rejected despite having a non-zero SOC span.