Statements
A statement is a typed engine call. SDK methods submit statements and return their results.
| Kind | Execution | State |
|---|---|---|
| Operation | Asynchronous | Updates versioned project state. Changes are undoable. |
| Action | Synchronous | Updates unversioned engine state. |
| Task | Asynchronous | Updates unversioned engine state. |
For example, creating a project node is an operation. Spawning a temporary scene shape is an action. Loading data into unversioned engine state can be a task.
Synchronous and asynchronous describe how the engine executes the statement. A network call to a synchronous action still requires your application to wait for its response.
The SDK includes statement documentation and generated method signatures.
Ordering
Blocking Python calls complete before the next call starts. Async Python and TypeScript callers choose the order by awaiting results.
Submit dependent calls in sequence. For example, await the node creation before updating that node. Submit independent work concurrently when ordering does not matter.
Transactions
Transactions group project operations into one undoable edit. They do not make concurrently submitted calls execute in source order.
A completed operation can be visible while its transaction remains uncommitted. Commit retains the batch. Cancellation discards it.
Failures
Python raises typed engine exceptions. TypeScript calls reject on failure. Handle failures at the application boundary and decide whether to retry, cancel an edit, or report an error.
An operation on a node removed by undo can fail even if your application still retains the old ID. Read current state when a UI action depends on that node’s continued existence.