Progress of a submitted job by executionId: status/stage, units, budgetUsd, deadline, heartbeat age, transfer, storage, incidents. Status: queued = waiting for a machine (nothing booked or charged yet); running; completed = the command finished and every file was delivered (the web shows it as 'delivered'); a finished command with missing files is failed with deliveryOutcome partial — collect the files with getArtifact before considering a rerun; cancelled; lost. Status and artifact reads return text only and draw no card: a job's card is the one on its submitJob result (and the price card on estimateExecution), and that card keeps itself current while the job runs. budgetUsd is what you are willing to spend on the job, and you are never billed more than that. Once the job is over, priceUsd is what it has billed — including a run that failed or was cancelled, and never above budgetUsd — and priceStatus says whether that number can still move: "provisional" while it awaits provider confirmation, with no time bound promised; "final" once it is reconciled against the provider's own rows, or when nothing was charged. The charge shown after completion may change while billing is reconciled. Your total charge for the job, including retries, will not exceed your approved budget. artifactsReady is true once the job has finished and at least one file was delivered; getArtifact's deliveryComplete says whether every file arrived. nextAction is one machine-actionable hint from a fixed set ("poll getStatus", "getArtifact", "getArtifact; delivery incomplete, N of M files delivered", "getArtifact; delivery unconfirmed", "getArtifact; files recovered after the job stopped", "read cancelReason, fix, resubmit", "check incidents; workload failed, fix and resubmit", "check incidents; nothing of yours ran, resubmit", "check incidents; resubmit", "resubmit", "blocked: read recoveryAssessment; a new run needs a new estimate and approval"), or null. Read it before you touch the spec: a failed job says "nothing of yours ran" when every attempt died before your command started (provisioning, verification or data staging), and "fix and resubmit" only when your own workload ran and failed; either reads "blocked: read recoveryAssessment; a new run needs a new estimate and approval" instead when its recoveryAssessment calls the job blocked (a refused download, a pinned machine, a booking rule, a spending limit, an unconfirmed release). recoveryAssessment says what can happen next (mode none, resume, restart, blocked or user_stopped, with a reason and a next step in words); it never acts on its own, and any new run needs its own estimate and your approval. When status is "cancelled", cancelReason is your own reason when you cancelled (null if you gave none), else a note from Symbioza for you, else the fixed sentence "Stopped by Symbioza before it finished. You are charged only for the time used; the incidents say what was measured."; nextAction reads "read cancelReason, fix, resubmit" only when it carries your own reason or a note. priceStatusReason says which rule decided priceStatus ("reconciled", "awaiting provider confirmation" or "nothing was charged"). deliveryOutcome says what became of the files once the job is over ("delivered", "partial", "none" or "unconfirmed"), null while it is not. While queued, capacityWait.text says where the job stands: behind a real capacity gate "Waiting for a machine · 3rd of 3 in line · since 09:07 UTC · if none is free by 15:07 UTC the run ends and nothing is charged", otherwise "Queued · waiting for a machine · 2nd of 2 in line". cancelOrigin says who stopped it: "own" (you), "symbioza", or null when nothing was cancelled. Poll after submit.