---
title: "Start Task Diagnostics"
method: POST
path: "/api/v1/diagnostics/task/run"
tags: ["diagnostics"]
---

# Start Task Diagnostics

`POST /api/v1/diagnostics/task/run`

## Request

- Base URL: `https://api.trajectory.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.trajectory.ai/api/v1/diagnostics/task/run`
- Auth: none declared

Start diagnostics for up to 10 tasks in an existing benchmark after its images are ready.

## Request body

- StartBenchmarkDiagnosticsRequest
  - `bench_id` string, required
  - `base_model_slug` 'thinkingmachines/Inkling-Small' | 'Qwen/Qwen3.5-4B' | 'Qwen/Qwen3.5-397B-A17B' | 'Qwen/Qwen3.6-35B-A3B' | 'Qwen/Qwen3.8-27B' | 'nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16' | 'nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16' | 'nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16' | 'nvidia/NVIDIA-Nemotron-3.5-Super-120B-A12B-BF16' | 'openai/gpt-6.1-sol' | 'openai/gpt-6-sol' | 'openai/gpt-6-astra' | 'openai/gpt-5.6-sol' | 'openai/gpt-5.6-luna' | 'anthropic/claude-opus-5.5' | 'anthropic/claude-sonnet-5.5' | 'openai/gpt-5-mini' | 'openai/gpt-5.4-mini' | 'openai/gpt-5.5' | 'anthropic/claude-sonnet-4.6' | 'google/gemini-3.1-pro-preview' | 'z-ai/glm-5.3' | 'z-ai/glm-5.3-flash' | 'moonshotai/kimi-k3'
  - `options` RunOptions
    - `load_weights_only` boolean, nullable: Load parent checkpoint weights with fresh training state. Defaults to false, which resumes the optimizer, LR schedule, and global step. With validation enabled, evaluate the starting policy, run validation when global_step % val_interval_steps == 0, and evaluate the final policy on normal completion. Resuming preserves the global step and validation cadence.
    - `density_aware_training` boolean, nullable: Train each task at four output-token budgets, with group_size trajectories per budget. batch_size sets the total number of task groups per batch; each budget counts as a separate group. Learn more: https://www.trajectory.ai/field-notes/intelligence-density
    - `algorithm` 'gspo' | 'grpo'
    - `train_on_truncation` boolean, nullable: Include trajectories that hit token or turn limits in training, with reward 0. Defaults to false; set to true to discourage reward hacking through truncated submissions.
    - `train_on_error` boolean, nullable: Train on errored trajectories, including execution errors, grading errors, and missing grades, using reward 0 when no reward is recorded.
    - `train_on_timeout` boolean, nullable: Include timed-out trajectories in training, with reward 0. Defaults to false; set to true to discourage reward hacking through timed-out submissions.
    - `val_enabled` boolean, nullable: Enable validation during training.
    - `val_interval_steps` integer, nullable: Training steps between validations; 0 disables validation.
    - `val_num_tasks` integer, nullable: Maximum distinct tasks per evaluation. Standalone evals run every task in the selected scope when omitted.
    - `val_trajectories_per_task` integer, nullable: Number of trajectories generated for each task in a validation round.
    - `val_max_concurrent_trajectories` integer, nullable: Maximum number of validation trajectories running concurrently.
    - `val_final_wait_timeout_seconds` number, nullable: Maximum seconds to wait for outstanding validation rounds at training end.
    - `learning_rate` number, nullable: Base optimizer learning rate.
    - `lr_warmup_steps` integer, nullable: Reported training steps used for warmup, including skipped optimizer updates.
    - `lr_hold_steps` integer, nullable: Training steps to hold the base rate after warmup, including skipped updates, before cosine decay.
    - `lr_min_ratio` number, nullable: Cosine decay floor as a fraction of the base learning rate.
    - `reasoning_effort` 'off' | 'on' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max', nullable: Model reasoning effort. null selects the lowest supported thinking level; off disables thinking where supported. Levels: minimal, low, medium, high, xhigh, max, depending on the model. Qwen3.5-4B, Qwen3.6-35B-A3B, Qwen3.5-397B-A17B, and Nemotron-3.5-Lightning-30B-A3B support only on/off; null selects on.
    - `temperature` number, nullable: Sampling temperature; defaults to 1.0.
    - `top_p` number, nullable: Nucleus sampling probability; null preserves the model default.
    - `top_k` integer, nullable: Sample from the top k tokens; -1 disables the limit, and null preserves the model default.
    - `val_reasoning_effort` 'off' | 'on' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max', nullable: Validation reasoning effort. null inherits training defaults. Supports the same model-specific levels and on/off options as reasoning_effort.
    - `val_temperature` number, nullable: Validation sampling temperature. null inherits training defaults.
    - `val_top_p` number, nullable: Validation nucleus sampling probability. null inherits training defaults.
    - `val_top_k` integer, nullable: Validation top-k token limit. null inherits training defaults; -1 disables it.
    - `val_max_output_tokens_per_turn` integer, nullable: Maximum output tokens per turn in each validation trajectory. null inherits training defaults.
    - `val_max_output_tokens_per_trajectory` integer, nullable: Maximum output tokens across one validation trajectory. null inherits training defaults.
    - `val_max_turns_per_trajectory` integer, nullable: Maximum agent and environment turns per validation trajectory. null inherits training defaults.
    - `val_trajectory_timeout_seconds` integer, nullable: Maximum execution seconds per validation trajectory, including grading. null inherits training defaults.
    - `num_steps` integer, nullable: Number of optimizer steps to run.
    - `batch_size` integer, nullable: Eligible task-instance groups per optimizer update.
    - `group_size` integer, nullable: Trajectories generated for each training instance; GSPO and GRPO require at least 2.
    - `min_trajectories_per_group` integer, nullable: Minimum eligible trajectories per training group. null uses half of group_size, rounded down.
    - `max_concurrent_trajectories` integer, nullable: Maximum active training trajectories. null uses batch_size × group_size × 2, allowing 2× batch oversampling for throughput and asynchronous RL. Recommended: set above batch_size × group_size to keep collection ahead of training.
    - `max_staleness` integer, nullable: Maximum optimizer steps a training rollout’s starting policy may trail the current policy. Older in-flight rollouts are cancelled and older completed rollouts are discarded; 0 trains only on rollouts started from the current policy.
    - `train_on_all_fail` boolean, nullable: Train on groups whose eligible rewards are all at or below zero; false excludes them.
    - `train_on_all_pass` boolean, nullable: Train on groups whose eligible rewards are all at or above one; false excludes them.
    - `train_on_zero_advantage` boolean, nullable: Train on groups with identical eligible rewards; false excludes them.
    - `trajectory_timeout_seconds` integer, nullable: Maximum execution seconds per trajectory, including grading. Excludes queueing and sandbox startup. Collection timeouts must cover this budget.
    - `batch_timeout_seconds` integer, nullable: Maximum wall-clock time to assemble one training batch. The clock starts when collection begins and does not reset as groups or in-flight trajectories arrive. Must cover trajectory execution and is not adjusted automatically.
    - `max_output_tokens_per_turn` integer, nullable: Maximum output tokens per model response. null uses the model’s maximum, bounded by remaining context.
    - `max_output_tokens_per_trajectory` integer, nullable: Maximum output tokens across one trajectory, including after context compaction. null uses the model’s maximum supported context length.
    - `max_turns_per_trajectory` integer, nullable: Maximum agent and environment turns allowed in each trajectory.

## Response `201`

Successful Response

- StartBenchmarkDiagnosticsResponse
  - `benchmark_diagnostic_id` string, required
  - `bench_id` string, required
  - `status` 'pending', required

## Changes

- **2026-11-02** `5b5a8ae4b4a4`: 5 info
  - added the new optional request property `options/anyOf[subschema #1: RunOptions]/val_max_output_tokens_per_trajectory`
  - added the new optional request property `options/anyOf[subschema #1: RunOptions]/val_max_output_tokens_per_turn`
  - added the new optional request property `options/anyOf[subschema #1: RunOptions]/val_max_turns_per_trajectory`
  - added the new optional request property `options/anyOf[subschema #1: RunOptions]/val_trajectory_timeout_seconds`
  - …1 more
- **2026-11-02** `ac63eff4913f`: 1 breaking, 21 warning, 23 info
  - removed the enum value `reinforce_plus_plus` of the request property `options/anyOf[subschema #1: RunOptions]/algorithm/anyOf[subschema #1: TrainingAlgorithm]/`
  - removed the request property `options/anyOf[subschema #1: RunOptions]/batch_collection_idle_timeout_seconds`
  - removed the request property `options/anyOf[subschema #1: RunOptions]/evaluation_collection_timeout_seconds`
  - removed the request property `options/anyOf[subschema #1: RunOptions]/evaluation_enabled`
  - …41 more
- **2026-10-31** `7b218d495d5c`: 1 breaking, 1 info
  - removed the enum value `qwen/qwen3-235b-a22b` of the request property `base_model_slug`
  - added the new optional request property `options`
- …earlier changes not shown

[Operation history](https://skmtc.dev/trajectory/apis/trajectory-api/changes/api/v1/diagnostics/task/run/post.md)

---

[API](https://skmtc.dev/trajectory/apis/trajectory-api.md) - [All operations](https://skmtc.dev/trajectory/apis/trajectory-api/llms.txt) - [OpenAPI document](https://skmtc.dev/trajectory/apis/trajectory-api/revisions/5b5a8ae4b4a4?raw)
