List your runs (newest first)
const url = 'https://beta-api.plune.ai/v1/runs?limit=50&offset=0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://beta-api.plune.ai/v1/runs?limit=50&offset=0' \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Only runs that declared this environment. Blank or absent means every run — a caller building the query from an unset CI variable asks for everything, not for the empty string.
Responses
Section titled “ Responses ”Your runs
object
A run as it appears in the list — identity + the headline numbers, derived from the run.
object
What the run is called, or null while nobody has said.
Where it ran, or null while nobody has said.
How the run is marked. Empty when unmarked.
Where the run came from. cairn is an INGEST rather than an eval run: it groups the Results a Cairn run produced. total/passed/failed are counted from those Results and are real numbers. costUsd and durationMs are always 0 and mean “not applicable”: Cairn neither prices a run nor times one. cli covers BOTH a run uploaded by plune sync and one started through the run lifecycle — read measured to tell those apart, since only the first carries a cost and a duration.
Whether costUsd and durationMs are measurements or absences — otherwise both are the same 0. Do NOT re-derive this from source: a run started through the run lifecycle (POST /v1/runs with schemaVersion: 2) reports cli, because it did come from a client, and carries neither. Only a run uploaded by plune sync does.
Whether the platform is still expecting results for this run — true only between a lifecycle launch and its finish or terminate. Read this rather than deriving a verdict from the counts: a run that has just started has failed: 0 like a run that passed, and the two mean opposite things. A plune sync upload and a Cairn ingest both record a run that has already ended, so both are always false.
Example
{ "runs": [ { "source": "cli" } ]}No / invalid token or session