Job Monitoring and Result Downloads
The workflow for following runtime progress, handling completion or failure, and downloading outputs or logs.
Jobs are pipeline executions. They move through queue, reservation, runtime, terminal status, and optional runtime log archive states.
List jobs
Use GET /v1/jobs to show the job queue and history currently visible to the
signed-in user. Jobs are organization-owned. The API applies final
JobsView=Allow together with the Job's current cluster and location visibility
before sorting and pagination; organization membership by itself does not make
a Job visible.
GET /v1/jobs?status=queued&sortBy=createdAt&sortDir=desc
Authorization: Bearer <personal-access-token>Useful filters:
status:queued,reserved,running,succeeded,failed,cancelled, orexpired.ownerTypeandownerId: restrict to one organization.ownerType=useris unsupported.locationId: show work for one spatial location.inputBundleId: show jobs started from one uploaded bundle.outputBundleId: find the job that produced a generated bundle.pipeline: filter by pipeline id.search: match pipeline metadata, capability class, and failure details.
The response includes the pipeline, user-facing pipelineDisplayName, current status, resource requirements, timestamps, and outputBundleId when a successful job created a model bundle.
Queued jobs can also include:
queueReason: a stable short code for why the job is still waiting.retryState: short retry context when a previous attempt had to be retried.pendingCapacityState: capacity-wait context when no currently available worker can run the job yet.statusMessage: a user-safe sentence such as waiting for a larger GPU, more memory, or more worker data space.
These fields are intended for frontend queue views. They do not expose internal worker names or backend execution technology.
Get one job
GET /v1/jobs/{jobId}
Authorization: Bearer <personal-access-token>Use this endpoint for detail panes and polling. For active terminal UX, combine it with the event endpoints.
Job detail requires the same final tier-capped JobsView=Allow and spatial
visibility as the list. A hidden or unknown identifier returns an opaque
404 Not Found.
If a job is waiting for local or no-burst capacity, keep polling the job detail or list endpoint and display statusMessage. The job remains queued until matching capacity appears, a worker starts it, or the job is cancelled. Cloud-provider capacity failures can still surface as terminal failures when provisioning was allowed but could not be satisfied.
Stream runtime events
GET /v1/jobs/{jobId}/events
GET /v1/jobs/{jobId}/events/streamevents returns recent history. events/stream uses server-sent events and emits log entries as workers report progress.
Both routes re-evaluate JobsView and the Job's current resource visibility on
every request. Losing cluster/location access or moving to a tier where Job view
is unavailable removes detail, event, and archive access without deleting the
Job.
Download archived logs
GET /v1/jobs/{jobId}/archiveWhen runtime log archiving is available for the job, the response contains a temporary download URL. If the archive is not available, the response still returns available: false and may include a short summary.
Retry and delete queued jobs
POST /v1/jobs/{jobId}/retry
DELETE /v1/jobs/{jobId}
Authorization: Bearer <personal-access-token>Retry and queued deletion require final tier-capped JobsManage=Allow in the
Job's current cluster/location context. Neither action grants Job read access:
retry returns 202 Accepted without a Job body, and deletion returns
204 No Content. Retrying resets the same logical Job to the current pipeline
resource configuration. It does not create another Job or consume another
monthly or organization-lifetime admission slot. Failure, cancellation, and
deletion never refund either accepted-Job limit.
During output finalization, failureReason can temporarily be
authorization_changed or capacity_changed while the Job and active attempt
remain retryable. No output Bundle is visible in either state. Restoring every
current permission and capacity prerequisite lets the worker retry the same
full output set without creating another logical usage charge.
Cancel a known job
POST /v1/jobs/{jobId}/cancel
Authorization: Bearer <personal-access-token>
Content-Type: application/json
{
"reason": "No longer needed"
}Cancellation is deliberately narrower than Job management. An already accepted
known queued or active Job can be cancelled by a caller with underlying
JobsCancel, by its persisted requester, by a protected organization owner, or
by platform authority. This exact-target cleanup remains available when a tier
disables Job product visibility, but it returns only 204 No Content and grants
no list/detail/event/archive/result/artifact, input/output, retry, delete, or
other management access. Unknown and unauthorized identifiers use the same
opaque 404 Not Found response. The optional reason is limited to 1,000
characters.
Outputs
Successful pipeline jobs create a generated artifact bundle. Use the returned
outputBundleId with the bundle metadata, file listing, and download endpoints
to display or fetch the result. JobsView does not grant Bundle access: every
result metadata, file-list, content, ZIP, range-download, and presigned-download
request independently requires current final LocationBundles=Read plus the
same cluster/location visibility. A caller allowed only to cancel the Job cannot
read its input or output Bundle.