Skip to main content
A job runs selected tasks against one or more agent/model combinations. Each combination is an arm. Each attempt is a trial.
For every method’s inputs, return values, and language differences, see the jobs method reference.
Examples reuse the SDK setup. Run Python snippets inside the async function shown in the Python guide.

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.
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.
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.
Supply an idempotency key when repeating a submission must return the same accepted job:Here, config is the job input shown above. requestId / request_id is a stable string you assign to this submission.
Use one stable request id for the same resolved request. Reusing it for a different request is refused.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

The same handle can instead be consumed with 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

Use full ids returned by create/list calls. 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

Download requires a terminal job. Without 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.
Last modified on November 9, 2026