Skip to main content
First run an eval and keep its run ID. Results describe the suite version, model, inputs, and graders used for that run.

Inspect samples

List samples when you need per-row debugging. You can filter by task_id, model, or status.
You can also:
  • Filter by a numeric score band using score_metric + score_min/score_max.
  • Skip large rows (like inlined audio) by setting include_dataset_row=false (samples will return dataset_row: null).
  • Fetch only specific sample indices using sample_index (comma-separated indices).
Each sample includes the source row, rendered prompt, target, stored Responses response_id, raw model output, extracted output, scores, judge details, and error details. It also carries the tokens and time the sample spent, described in Token and time fields.

Fetch sample audio (transcription tasks)

For transcription evals, sample lists may redact inline data: audio blobs in dataset_row. To fetch a single sample’s clip reference, call: GET /api/v1/llm/evals/runs/{run_id}/samples/{sample_index}/audio sample_index is unique per task (and model), not per run. If a run includes more than one transcription task and the same sample_index could match multiple tasks, pass task_id or the API returns 400. Optionally pass model to choose which model row to read the clip from (the clip is identical across models within a task, so this does not change the audio).
The response includes { object, audio, sample_index, task_id, model } where audio is a base64 data: URI or a URL.

Fetch artifacts

Completed runs create result files with purpose=evals. Use the artifacts endpoint to find the result and sample artifact file IDs.
Then download the files through the Files API:
Bash
The result artifact summarizes run metadata and final metrics. The samples artifact preserves per-sample details for offline analysis.

Compare models

Open the leaderboard

In the console, open Evaluations and select an evaluation. Its Leaderboard lists every model with a completed run on the active version, scored task by task, with Token Usage and Cost charts above the table. To compare two models answer by answer, select both on the leaderboard and click Compare selected. The compare page shows both models’ answers to each sample of a task, and can narrow them to the samples only one model got right. Through the API, GET /api/v1/llm/evals/suites/{suite_id}/leaderboard-runs returns the runs behind the leaderboard. Pass suite_version, because scores are only comparable within one version of a suite.
data holds the full run objects, and groups places them on the board. Each group entry names a model, a task_id (null when the run covered every task), a rank (1 is the newest completed run), and the run_id. Build the board from groups, not from each run’s models. If truncated is true, request again with cursor set to next_cursor and combine the responses. The API reference lists the other parameters.

Token and time fields

Completed runs report what each model spent. Each metrics.by_task.<task>.<model> entry carries tokens and timing next to its scores when they were measured, and the run’s tokens field holds the run totals:
Each sample carries its own figures in input_tokens, output_tokens, and phase_timings. The generation phase records when the model call started and finished:
A figure that was never measured is null or absent, not zero. When the provider reports no token counts, the tokens are counted from the stored text and the sample’s tokens_estimated is true. Use those counts to compare how verbose models are, not as billing figures.

Cost per answer

The console prices answers at your organization’s effective rates, which GET /api/v1/llm/models/pricing/effective returns (Check effective prices). It applies those rates to the per-task token totals and divides by the number of answers. A model without a price has no cost per answer, so the Cost charts leave it out instead of showing it as free. Cost stays empty while your models are unpriced.

Compare more than 20 models

A run takes up to 20 models. The leaderboard is not limited to one run: it combines every completed run of a suite version and uses each model’s most recent result. To compare more than 20 models, split them across several runs of the same suite version.

Import external results

To put a coding-agent run you executed outside MKA1 on the leaderboard, import it with POST /api/v1/llm/evals/imports/agent-run. The import records a completed run against the suite version you name, or the active version by default, without executing anything. Every task_id in its trials must already exist in that version’s manifest. Pass an idempotency_key so a retried upload does not import the run twice. In the console, an evaluation of coding agents shows Import run in place of Run evaluation. The API reference describes the request body.

Pagination and filtering

List endpoints use cursor pagination. Example: