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.
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.
jobType'PULL_REQUEST_REVIEW' | 'ISSUE_REVIEW' | 'CONVERSATION_REVIEW' | 'DOCUMENT_REVIEW' required
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
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.
retryCountinteger required
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
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