Import a finished coding-agent run
Uploads one completed harness job — the run and its trials — directly, so results never round-trip through external storage the way the Hugging Face importer does. Every task_id must already exist in the target suite version’s manifest; unknown ids are rejected rather than invented, because a typo would otherwise import as a task the suite does not have and read as a model that never covered the version. The run is recorded as completed and is not executed: this is a write, not a run request, so no workflow is started. Trials that cover every task of the version get task_ids: null, which is what lets the run rank as a complete sweep. Trajectories are NOT part of this payload — a full 91-task run measured 8.3 MB of them — so upload each one against PUT /evals/runs/{run_id}/samples/{sample_index}/trajectory afterwards. Pass idempotency_key and a retried upload returns the first run instead of doubling the trials behind a board row.
Authorizations
Gateway auth: send Authorization: Bearer <mka1-api-key>. For multi-user server-side integrations, you can also send X-On-Behalf-Of: <external-user-id>.
Headers
Optional external end-user identifier forwarded by the API gateway.
Body
Existing suite to import into. Its manifest defines the task set, so create the suite first.
1The harness agent, e.g. omp.
1 - 1281 - 255Defaults to the suite's active version.
1 <= x <= 214748364764Reasoning-effort setting, e.g. medium. Part of the leaderboard's row identity, so the same agent and model at two efforts stay two rows.
32Total spend for the job. Falls back to the sum of the trials' own costs when omitted.
x >= 0When the job ran, unix seconds. Defaults to now — set it when backfilling, since the board orders by this.
-9007199254740991 < x <= 9007199254740991Reusing a key returns the run created the first time instead of importing a second copy. Without one, a retried upload silently doubles the trials behind a board row.
1 - 255May be empty when opening a run to stream trials into. A one-shot import sends them all here.
1000How many trials the job will produce. Sets the run's total up front so the console shows real progress (12/89) while it streams, instead of 12/12 that grows.
0 <= x <= 1000False opens the run in_progress for POST /evals/runs/{run_id}/trials to fill. Leaderboards only count completed runs, so a streaming run stays off the board until it is finalized.
Response
OK
-9007199254740991 <= x <= 9007199254740991The org that owns this run.
The team that owns this run.
queued, in_progress, finalizing, completed, failed, cancelling, cancelled Coding-agent harness that produced this run (e.g. omp, claude-code). Null for every non-harness eval kind — a null here is not a missing value, it means the run is not an agent run.
Version of agent_name, as the harness reported it. Null when agent_name is.
Reasoning-effort setting the agent ran at (e.g. medium, xhigh). Part of the leaderboard's row identity: the same agent and model at two efforts are two rows, not one. Null when agent_name is.
Total spend for the run in USD. Null when the harness did not report cost.
-9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991