Cancel a job and tear down its machine
cancelJobCancels the job and tears down its machine. Symbioza stops your workload and collects the files it has written to /workspace/artifacts/ before the machine is released, within a short bounded window; the copies Symbioza already took during the run are kept even if that last collection cannot finish, getArtifact returns them marked recovered, and a file that could not be collected is listed as not delivered. If we confirm the stop, you are charged for measured time up to then, and never for more than a minute past the moment you asked; if the machine cannot be reached, you are charged only up to the moment you asked. Never more than your spending limit. getStatus shows the request as cancelRequestedAtMs at once (cancelState requested), and the job reads cancelled only once the stop is CONFIRMED (cancelEnforcedAtMs set, cancelState enforced); if the stop cannot be proven the job reads lost with cancelState unconfirmed and the last evidence in cancelStopDetail. Pass an optional reason (short human-readable text, truncated at 500 chars) to record WHY; it is stored opaquely and returned by getStatus as cancelReason so a client can see why a job was cancelled.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional human-readable reason for the cancel, surfaced to the client via getStatus.cancelReason. Truncated at 500 chars; stored opaquely, never parsed. | |
| authKey | No | Usually omit this. The customer door — the OAuth-signed-in HTTPS connector at https://symbioza.dev/mcp — authenticates the session itself, so no key is passed per call. Only a self-hosted or test transport passes a key here. | |
| executionId | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| reason | No | ||
| status | No | ||
| cancelled | Yes | ||
| executionId | Yes | ||
| cancelReason | No | ||
| deadlineAtMs | No | ||
| alreadyTerminal | No | ||
| workloadFinished | No |