Creating a run
prompt are keyword-only.
runs.create returns a RunHandle (or AsyncRunHandle) that holds
run_id, canvas_id, and a reference back to the client.
Uploading files
The SDK normalises several shapes so you can mix them freely:Waiting for completion
handle.wait() polls the server with exponential backoff until the run
reaches a terminal state, then returns the RunResult:
wait raises SpineAPIError if the run terminates with status
failed. Partial successes (some blocks failed, some succeeded)
return normally — inspect handle.refresh().errors afterwards.
Streaming progress
Drive a progress bar withhandle.stream_progress(). It yields a
RunProgress snapshot on each poll and exits silently when the run
terminates — call wait() or refresh() afterwards to get the result.
Manual polling
If you want full control, callclient.runs.get() directly: