For every method’s inputs, return values, and language differences, see the jobs method reference.
Start a job
start returns the accepted Job. Read job.id to address it later.
Required inputs
Python also accepts
DatasetSelector and AgentArm dataclass instances in these lists.
Run settings
Spend caps keep six decimal places; extra decimals are rounded, half away from zero. Values outside the stated range are refused.
Organization and fleet capacity also constrain parallel work. A task may use another provider when the requested provider cannot support its requirements; read the trial for its actual provider.
Timeout multipliers
Timeout multipliers
All values are finite numbers greater than zero. They multiply task timeouts; they are not durations in seconds.
A phase override replaces the global multiplier for that phase. Values that exceed the runtime’s timer limit for the selected tasks are refused.
Automatic retry policy
Automatic retry policy
Only eligible infrastructure failures enter this retry policy. Scoring errors and low rewards do not automatically rerun the agent. Each retry receives a fresh per-trial cap.Provider capacity refusals have a separate bounded wait policy. They can wait even when
max_retries is zero.Idempotency and unsupported input
Idempotency and unsupported input
Supply an idempotency key when repeating a submission must return the same accepted job:Here, Use one stable request id for the same resolved request. Reusing it for a different request is refused.
config is the job input shown above. requestId / request_id is a stable string you assign to this submission.agent_env appears in SDK signatures, but the current platform refuses nonempty values. Use job secrets for credentials or registered-agent environment settings for a custom harness.Wait or show progress
for await / async for to receive events. Choose one style per handle. Job watches replay history and reconnect from the last event id.
A terminal job has finished scheduling/executing its trials. Completed does not mean every trial passed.
Read and compare
List scope is
my, shared, or org. Job list kind is job (default), check, or all; check rows have a different shape. Branch on row.kind before reading job-only fields.
grep searches parsed traces using a case-insensitive POSIX regular expression. See trial traces for per-trial filtering.
Cancel or run selected work again
Resume requires a terminal source job. Explicit retry ids may select settled trials from a job still running. Do not combine
trial_ids with failed_only.
Resume and retry accept the same idempotency option as start: a final options object in TypeScript, idempotency_key in Python. Regrade has no such SDK option.
Regrading uses the recorded verifier snapshot; it cannot replace the verifier or use edited tests. It needs retained inputs from an eligible separate verifier. Shared-verifier, judge-based, multi-step, and uploaded runs cannot be regraded. See jobs for eligibility.
Analyze traces
analyze(id, ...) starts a wave and returns immediately. watchAnalysis / watch_analysis waits for that wave. Configuration and examples are on analyses.
For a job created with embedded analysis, wait for the job first, then its analyses. A still-running job can temporarily have zero pending analyses.
Download or import results
to, it returns a Buffer / bytes; TypeScript also supports {stream: true}. See transfer behavior.
Callback names and timing use the same upload/watch conventions as datasets. Uploaded results become a terminal record. They can be analyzed, but cannot be resumed, retried, or regraded.
Share and delete
Sharing can send invitation email. Only the creator can manage shares or delete the job; team membership alone does not grant those actions. Deletion requires a terminal job with no running analysis or dependent regrade. The returned receipt counts deleted trials and analyses.

