メインコンテンツへスキップ
ionworks-api Python パッケージは、Ionworks Studio でリソースの管理、シミュレーションの実行、パイプラインの送信、データのアップロードを行うためのプログラマブルなインターフェースを提供します。
コーディングエージェントから Ionworks を操作しますか?Ionworks エージェントツールキット は、Claude Code、Codex、その他のエージェント向けに SDK 対応のスキルを提供します。このページのセットアップを代行する install スキルも含まれています。

インストール

リポジトリからパッケージをインストールします:
pip install ionworks-api

認証

Ionworks のアカウント設定から API キーを取得し、設定します:
from ionworks import Ionworks

# Option 1: Environment variable (recommended)
# Set IONWORKS_API_KEY in your environment or .env file
client = Ionworks()

# Option 2: Direct configuration
client = Ionworks(api_key="your_key")

# Option 3: Custom timeout and retry settings
client = Ionworks(
    timeout=30,       # Request timeout in seconds (default: 10)
    max_retries=3     # Max retries on failure (default: 5)
)
API キーをバージョン管理にコミットしないでください。資格情報の管理には環境変数または .env ファイルを使用してください。

API キーを検証する

client.whoami() を使用して、設定された API キーがどのユーザーと組織に解決されるかを確認します。これは 401/403 エラーをデバッグしたり、間違った組織のデータが表示される理由を確認したりするための推奨方法です。
me = client.whoami()
print(me["email"], me["authorized_organization"])
# [email protected] {'id': 'org_abc123', 'name': 'Acme Battery'}
レスポンスには 2 つの組織フィールドがあり、その違いは重要です:
  • authorized_organization — このリクエストが 認可されている 組織。SDK 呼び出しの場合、これは設定された API キーが発行された組織であり、クライアントが行うすべてのリクエストの権限チェックに使用される唯一の情報源です。組織コンテキストを解決できない場合は None になります。
  • organizations — ユーザーの完全なメンバーシップリスト(所属するすべての組織)。これは別の情報であり、権限チェックには 使用されません
authorized_organizationid または name が期待と異なる場合は、誤ったキーが使用されています。アカウント設定から正しい組織用に再生成してください。

デフォルトプロジェクト

ほとんどのサブクライアント(pipelines、studies、optimizations、cell specifications、…)はプロジェクト内で動作します。すべての呼び出しに project_id を渡す代わりに、クライアントに一度デフォルトを設定できます。project_id 引数を取るサブクライアントメソッドは、明示的に渡されない場合このデフォルトにフォールバックします。 クライアントはデフォルトを次の順序で解決します:
  1. Ionworks(...) に渡される project_id= 引数。
  2. IONWORKS_PROJECT_ID 環境変数。
  3. それ以外の場合、デフォルトは設定されません。プロジェクトを必要とするメソッドは、呼び出し時に project_id が渡されない限り ValueError を発生させます。
# Option 1: Environment variable (recommended)
# Set IONWORKS_PROJECT_ID in your environment or .env file
client = Ionworks()

# Option 2: Pass to the client constructor
client = Ionworks(project_id="your-project-id")

# Override on a per-call basis when needed
client.study.list(project_id="other-project-id")
プロジェクト ID はプロジェクト設定ページの URL で確認できます: https://app.ionworks.com/dashboard/projects/<project-id>/settings
PROJECT_ID 環境変数は後方互換のため引き続き受け入れられますが、非推奨です。代わりに IONWORKS_PROJECT_ID を設定してください。古い名前を使用すると DeprecationWarning が発生し、将来のリリースで動作しなくなります。

環境変数

クライアントは python-dotenv を介して .env ファイルを自動的に読み込みます。
変数必須デフォルト説明
IONWORKS_API_KEYはいアカウント設定からの API キー。
IONWORKS_API_URLいいえhttps://api.ionworks.comAPI ベース URL。
IONWORKS_PROJECT_IDプロジェクトスコープの呼び出しでは必須サブクライアントメソッドのデフォルトプロジェクト ID。
IONWORKS_DATAFRAME_BACKENDいいえpolarsDataFrame バックエンド: polars または pandas

DataFrame バックエンド

デフォルトでは、クライアントはデータを polars DataFrame として返します。ワークフローで必要な場合は pandas に切り替えられます。
# Option 1: Set via constructor
client = Ionworks(dataframe_backend="pandas")

# Option 2: Set via environment variable
# IONWORKS_DATAFRAME_BACKEND=pandas

# Option 3: Set at runtime
from ionworks import set_dataframe_backend, get_dataframe_backend

set_dataframe_backend("pandas")
print(get_dataframe_backend())  # "pandas"
DataFrame を返すすべてのメソッド(時系列、ステップ、サイクル)はこの設定に従います。

タイムアウトとリトライの挙動

クライアントは接続エラー、タイムアウト、サーバーエラー(5xx)で失敗したリクエストを自動的にリトライします。デフォルトでは:
  • リクエストは 10 秒 でタイムアウト
  • 失敗したリクエストは指数バックオフで最大 5 回 リトライ
  • リトライされるのは GETDELETE のみ。重複操作を防ぐため、POST と PATCH リクエストはリトライされません。
これらの設定はカスタマイズできます:
# Longer timeout for large uploads
client = Ionworks(timeout=60)

# Disable retries
client = Ionworks(max_retries=0)

サブクライアント

Ionworks クライアントはドメイン固有のサブクライアントを公開しています:
サブクライアントアクセスドキュメント
Projectsclient.projectCore Concepts API
Modelsclient.modelBuild API
Parameterized modelsclient.parameterized_modelBuild API
Studiesclient.studySimulate API
Protocolsclient.protocolSimulate API
Simulationsclient.simulationSimulate API
Pipelinesclient.pipelineSimulate API
Simple pipelinesclient.simple_pipelineSimulate API
Optimizationsclient.optimizationOptimize API
Cell specificationsclient.cell_specデータのアップロード
Cell instancesclient.cell_instanceデータのアップロード
Cell measurementsclient.cell_measurement測定
Jobsclient.jobジョブのキャンセル

ジョブのキャンセル

Python API を使用して、実行中のジョブ(シミュレーション、パイプライン、最適化)をキャンセルできます。各ジョブには一意の ID があり、それを使用してキャンセルできます。
# Cancel a job by ID
client.job.cancel(job_id="job_abc123")
親ジョブをキャンセルすると、そのすべての子ジョブも自動的にキャンセルされます。例えば、パイプラインをキャンセルすると、実行中のすべての要素がキャンセルされます。