---
title: "Start a ModelLab benchmark"
method: POST
path: "/api/model-eval"
tags: ["model-eval"]
---

# Start a ModelLab benchmark

`POST /api/model-eval`

Starts an asynchronous local benchmark. Candidate and judge calls use the configured
OpenRouter API key and may incur provider costs. Progress is streamed through
`/api/ws/model-eval/{job_id}`.

## Request body

- object
  - `models` string[], required
  - `judge` string, nullable
  - `timeout` number
  - `max_tokens` integer
  - `runs` integer
  - `concurrency` integer
  - `suite_id` 'quick-v2' | 'advanced-v1'

## Response `200`

Benchmark job accepted

## Other responses

- `400` — Unsupported provider, invalid model selection, or call budget exceeded
- `429` — Too many ModelLab jobs are already running

## Changes

- **2026-07-27** `312bfc1148dc` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/bugtraceai/apis/bugtraceai-cli-api/changes/api/model-eval/post.md)

---

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