Agent Jobs

Get agent job details

get/workspaces/{workspaceSlug}/agents/jobs/{jobId}

Request

  • Base URL: / (relative, and the document was published on a file host, not at the API’s origin)
  • URL: /workspaces/{workspaceSlug}/agents/jobs/{jobId}
  • Auth: HTTP bearer

Path parameters

workspaceSlugstring required

Workspace slug

jobIdstring uuid required

Response

Job detail returned

availableAtstring date-time required

When this job becomes eligible to be claimed. In the future while the job is waiting — on a retry backoff, or on a hold. Read together with holdReason: a QUEUED job with availableAt in the future is waiting, not starved for workers.

cancellationReason'DRAIN_GRACEFUL' | 'DRAIN_IMMEDIATE' | 'BUDGET_EXHAUSTED' | 'MODEL_UNAVAILABLE' | 'MEMBER_AI_DECLINED' | 'PERSON_DATA_ERASED'

Why a CANCELLED job was cancelled; available on job detail, absent otherwise

completedAtstring date-time

Timestamp when the job completed

configSnapshotunknown required
coveringJobIdstring uuid

The newer review that replaced this one; set only when reviewOutcome is SUPERSEDED

createdAtstring date-time required

Timestamp when the job was created

deliveryCommentIdstring

Git provider comment/note ID for posted feedback

deliveryStatus'PENDING' | 'DELIVERED' | 'FAILED'

Result-processing status: null = not applicable, PENDING = awaiting processing, DELIVERED = processing finished, FAILED = processing error. Processing may include delivery; this status alone does not establish feedback publication.

errorMessagestring

Human-readable error message

executionStartedAtstring date-time

When the current attempt finished preparation, immediately before its sandbox was invoked, if it got that far. A retry resets it; absent on runs from before it was recorded.

exitCodeinteger

Container exit code

firstFeedbackPostedAtstring date-time

When this review first posted feedback on the work without waiting for an admin's approval; available on review detail, absent until then

firstFeedbackReadAtstring date-time

When a developer first read this review's feedback on their practice pages or in a conversation; available on review detail, absent until then

holdReasonstring

Why a QUEUED job is waiting rather than eligible, when the reason is one an admin can undo. BUDGET = the payer is over its monthly LLM cap and the job resumes by itself once the cap is raised or the month rolls over. Absent means no such hold — a future availableAt is then an ordinary retry backoff.

idstring uuid required

Job ID

jobType'PULL_REQUEST_REVIEW' | 'ISSUE_REVIEW' | 'CONVERSATION_REVIEW' | 'DOCUMENT_REVIEW' required

Job type

llmCacheReadTokensinteger

Tokens read from prompt cache

llmCacheWriteTokensinteger

Tokens written to prompt cache

llmModelstring

LLM model used (e.g. gpt-5.4-mini, openai/gpt-oss-120b)

llmModelVersionstring

Model version/snapshot date (e.g. 2026-03-17). Only jobs from before the model catalog carry one; absent on everything newer.

llmTotalCallsinteger

Total LLM API calls (steps) during execution

llmTotalInputTokensinteger

Total input tokens consumed

llmTotalOutputTokensinteger

Total output tokens generated

llmTotalReasoningTokensinteger

Total reasoning/thinking tokens

metadataunknown
modelstring

Upstream model this job was admitted on, frozen at submit time (e.g. gpt-5.4-mini). Available from submission, unlike llmModel, which the runner reports only once the job has run.

outputunknown
retryCountinteger required

Number of retry attempts

reviewOutcome'REVIEWED' | 'INSUFFICIENT_EVIDENCE' | 'COALESCED' | 'SUPERSEDED' required

Why a COMPLETED run produced the observations it did. INSUFFICIENT_EVIDENCE means no model ran because required evidence was missing, unreadable, stale, or unauthorized — so no observations means nothing was assessed, not that nothing was wrong. COALESCED means no model ran because a completed review had already answered every ready practice on exactly the same code — its answers are listed in answeredPractices, and this run assessed nothing anew. SUPERSEDED means the waiting attempt was replaced by an admitted newer review of the same author's current work, named in coveringJobId, which carries this review's practices and may still be waiting or running; the replacement makes no additional assessment, and earlier attempt history remains. REVIEWED means the model ran against sufficient evidence.

startedAtstring date-time

When a worker claimed the current attempt and began preparing it. A retry resets it, so it never describes an earlier attempt.

status'QUEUED' | 'RUNNING' | 'COMPLETED' | 'FAILED' | 'TIMED_OUT' | 'CANCELLED' required

Current job status

traceIdstring

The id the job's log lines and spans carry, to find them in the logs; available on job detail

workMergedAtstring date-time

When the reviewed pull request or merge request was merged; available on review detail, absent for other work and for work that is not merged

Changes

No recorded changes to this operation across all 1 revision of this API.