Skip to main content
Analysis asks an agent to read a trial’s evidence against a rubric. It produces criterion outcomes and explanations. It does not replace the verifier’s reward.
For every method’s inputs, return values, and language differences, see the analyses method reference.
Examples reuse the SDK setup. Use IDs returned by the relevant list or create call. Run Python snippets inside the async function shown in the Python guide.

Start an analysis

Start work through the jobs client. Read analyzer runs through the analyses client.
Manual analysis requires a terminal job. It returns immediately after queuing work. Only one analysis wave can run for that job at a time. To analyze trials as they finish, pass analyze: {} / analyze={} when starting the job. Wait for job completion before calling the analysis watch.

Configuration

The field names are the same in both languages. TypeScript passes an object; Python uses keyword arguments on analyze() or a dictionary inside job creation. passing and failing cannot both be true. Cancelled trials are excluded. Explicit ids are filtered before the cap; unknown, duplicate, or empty ids are refused.
Polling slows to at most 30 seconds while the tally stays unchanged. Call the watch after starting analysis; a job never analyzed can have a null tally indefinitely.

Read current defaults

The response includes agent, model_name, rubric, prompt, reasoning_effort, and sandbox_provider. The prompt is the editable template text. Omit agent to read the current platform defaults. Pass it to read a specific harness’s analysis model default and that model’s default effort. See supported models and efforts. A custom analyze prompt may use {trial_path}, {task_section}, and {criteria_guidance}. The required result schema is appended by the platform. See analysis concepts for rubric design.

Read results

List options: scope, job, status list, limit, cursor. Status values are queued, running, completed, failed. trial.analysis prefers the latest completed Evolve result, then an imported Harbor result, then the newest Evolve result in any state. A newer pending or failed run can appear in trial.newer_analysis while the earlier completed result stays available. New criterion results use pass, fail, or not_applicable; older records can contain unknown. not_applicable can mean the criterion does not apply or essential evidence is unavailable; read its explanation. failure_modes lists separate findings supported by evidence. See result fields for imported results and nullable evidence. The API returns no overall verdict. Use checks for your own result handling; the dashboard’s summary label is computed from those outcomes.

Inspect the analyzer run

analysisId identifies the analyzer run, not the trial it read. since is an inclusive nonnegative event index; the transcript returns events, total, run metadata, and separate gateway_calls. TypeScript artifact selectors are trace-stdout, trace-stderr, and agent-home. The first two return text or null; agent-home returns a file map or null. Downloads return a wrapper-trial archive. See filesystem and download options.
Last modified on November 9, 2026