---
title: "Start a new BenchmarkRun."
method: POST
path: "/v1/benchmarks/start_run"
tags: ["Benchmark"]
---

# Start a new BenchmarkRun.

`POST /v1/benchmarks/start_run`

Start a new BenchmarkRun based on the provided Benchmark.

## Request body

- StartBenchmarkRunParameters
  - `benchmark_id` string, required — ID of the Benchmark to run.
  - `run_name` string, nullable — Display name of the run.
  - `metadata` object, nullable — User defined metadata to attach to the benchmark run for organization.
  - `runProfile` RunProfile
    - `purpose` string, nullable — Purpose of the run.
    - `envVars` object, nullable — Mapping of Environment Variable to Value. May be shown in devbox logging. Example: {"DB_PASS": "DATABASE_PASSWORD"} would set the environment variable 'DB_PASS' to the value 'DATABASE_PASSWORD_VALUE'.
    - `secrets` object, nullable — Mapping of Environment Variable to User Secret Name. Never shown in devbox logging. Example: {"DB_PASS": "DATABASE_PASSWORD"} would set the environment variable 'DB_PASS' to the value of the secret 'DATABASE_PASSWORD'.
    - `launchParameters` LaunchParameters — LaunchParameters enable you to customize the resources available to your Devbox as well as the environment set up that should be completed before the Devbox is marked as 'running'.
      - `launch_commands` string[], nullable — Set of commands to be run at launch time, before the entrypoint process is run.
      - `resource_size_request` 'X_SMALL' | 'SMALL' | 'MEDIUM' | 'LARGE' | 'X_LARGE' | 'XX_LARGE' | 'CUSTOM_SIZE' — The size of the Devbox resources for Runloop to allocate. X_SMALL: 0.5 cpu x 1GiB memory x 4GiB disk SMALL: 1 cpu x 2GiB memory x 4GiB disk MEDIUM: 2 cpu x 4GiB memory x 8GiB disk LARGE: 2 cpu x 8GiB memory x 16GiB disk X_LARGE: 4 cpu x 16GiB memory x 16GiB disk XX_LARGE: 8 cpu x 32GiB memory x 16GiB disk CUSTOM_SIZE: To choose a custom size, set this enum and also the custom_cpu_cores, custom_gb_memory, and optionally custom_disk_size in launch parameters. CPU must be 0.5, 1, or a multiple of 2 (max 16). Memory must be 1 or a multiple of 2 (max 64GiB). Disk must be a multiple of 2 (min 2GiB, max 64GiB). The cpu:memory ratio must be between 1:2 and 1:8 inclusive.
      - `keep_alive_time_seconds` integer, nullable — Time in seconds after which Devbox will automatically shutdown. Default is 1 hour. Maximum is 48 hours (172800 seconds).
      - `available_ports` integer[], nullable — A list of ports to make available on the Devbox. Only ports made available will be surfaced to create tunnels via the 'createTunnel' API.
      - `after_idle` IdleConfigurationParameters
        - `idle_time_seconds` integer, required — After idle_time_seconds, on_idle action will be taken.
        - `on_idle` 'shutdown' | 'suspend', required — Action to take after Devbox idle timer is triggered. shutdown: Shutdown the Devbox. suspend: Suspend the Devbox.
      - `custom_cpu_cores` integer, nullable — Custom CPU cores. Must be 0.5, 1, or a multiple of 2. Max is 16.
      - `custom_gb_memory` integer, nullable — Custom memory size in GiB. Must be 1 or a multiple of 2. Max is 64GiB.
      - `custom_disk_size` integer, nullable — Custom disk size in GiB. Must be a multiple of 2. Min is 2GiB, max is 64GiB.
      - `architecture` 'x86_64' | 'arm64'
      - `user_parameters` UserParameters — Configuration for the Linux user in the Devbox environment.
        - `username` string, required — Username for the Linux user.
        - `uid` integer, required — User ID (UID) for the Linux user. Must be a non-negative integer.
      - `required_services` string[], nullable — A list of ContainerizedService names to be started when a Devbox is created. A valid ContainerizedService must be specified in Blueprint to be started.
      - `network_policy_id` string, nullable — (Optional) ID of the network policy to apply to Devboxes launched with these parameters. When set on a Blueprint launch parameters, Devboxes created from it will inherit this policy unless explicitly overridden.
    - `mounts` Mount[], nullable — A list of mounts to be included in the scenario run.
      - union
        - ObjectMount
          - `object_id` string, required — The ID of the object to write.
          - `object_path` string, required — The path to write the object on the Devbox. Use absolute path of object (ie /home/user/object.txt, or directory if archive /home/user/archive_dir)
          - `type` 'object_mount', required
        - AgentMount
          - `agent_id` string, nullable, required — The ID of the agent to mount. Either agent_id or name must be set.
          - `agent_name` string, nullable, required — The name of the agent to mount. Returns the most recent agent with a matching name if no agent id string provided. Either agent id or name must be set
          - `agent_path` string, nullable — Path to mount the agent on the Devbox. Required for git and object agents. Use absolute path (e.g., /home/user/agent)
          - `auth_token` string, nullable — Optional auth token for private repositories. Only used for git agents.
          - `type` 'agent_mount', required
        - CodeMount
          - `repo_name` string, required — The name of the repo to mount. By default, code will be mounted at /home/user/{repo_name}s.
          - `repo_owner` string, required — The owner of the repo.
          - `install_command` string, nullable — Installation command to install and setup repository.
          - `token` string, nullable — The authentication token necessary to pull repo.
          - `type` 'code_mount', required
        - FileMount
          - `target` string, required — Target path where the file should be mounted.
          - `content` string, required — Content of the file to mount.
          - `type` 'file_mount', required

## Response `200`

OK

- BenchmarkRunView — A BenchmarkRunView represents a run of a complete set of Scenarios, organized under a Benchmark or created by a BenchmarkJob.
  - `id` string, required — The ID of the BenchmarkRun.
  - `benchmark_id` string, nullable — The ID of the Benchmark definition. Present if run was created from a benchmark definition.
  - `name` string, nullable — The name of the BenchmarkRun.
  - `start_time_ms` integer, required — The time the benchmark run execution started (Unix timestamp milliseconds).
  - `duration_ms` integer, nullable — The duration for the BenchmarkRun to complete.
  - `state` 'running' | 'canceled' | 'completed', required
  - `score` number, float, nullable — The final score across the BenchmarkRun, present once completed. Calculated as sum of scenario scores / number of scenario runs.
  - `metadata` object, required — User defined metadata to attach to the benchmark run for organization.
  - `purpose` string, nullable — Purpose of the run.
  - `environment_variables` object, nullable — Environment variables used to run the benchmark.
  - `secrets_provided` object, nullable — User secrets used to run the benchmark. Example: {"DB_PASS": "DATABASE_PASSWORD"} would set the environment variable 'DB_PASS' on all scenario devboxes to the value of the secret 'DATABASE_PASSWORD'.

## Changes

- **2026-01-19** `8ebd9dbfacb1` — 2 breaking, 1 info
  - the response property `benchmark_id` became nullable for the status `200`
  - the response property `benchmark_id` became optional for the status `200`
  - added the new optional request property `runProfile/launchParameters/network_policy_id`
- **2025-12-13** `370a5d676ff0` — 1 info
  - added the new optional request property `runProfile/mounts`

[Change history](https://skmtc.dev/runloopai/apis/runloop-api/changes/v1/benchmarks/start_run/post.md)

---

[API](https://skmtc.dev/runloopai/apis/runloop-api.md) · [All operations](https://skmtc.dev/runloopai/apis/runloop-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/runloopai/runloop-api/revisions/c8d61a0c8b88/schema)
