Inspect samples
List samples when you need per-row debugging. You can filter bytask_id, model, or status.
- 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 returndataset_row: null). - Fetch only specific sample indices using
sample_index(comma-separated indices).
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 inlinedata: 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).
{ object, audio, sample_index, task_id, model } where audio is a base64 data: URI or a URL.
Fetch artifacts
Completed runs create result files withpurpose=evals.
Use the artifacts endpoint to find the result and sample artifact file IDs.
Bash
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. Eachmetrics.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:
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, whichGET /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 withPOST /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: