Skip to content

List your runs (newest first)

GET
/v1/runs
curl --request GET \
--url 'https://beta-api.plune.ai/v1/runs?limit=50&offset=0' \
--header 'Authorization: Bearer <token>'
limit
integer
default: 50 >= 1 <= 200
offset
integer
0
environment
string

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.

Your runs

Media type application/json
object
runs
required
Array<object>

A run as it appears in the list — identity + the headline numbers, derived from the run.

object
id
required
string format: uuid
createdAt
required
string format: date-time
title

What the run is called, or null while nobody has said.

string
nullable
environment

Where it ran, or null while nobody has said.

string
nullable
labels

How the run is marked. Empty when unmarked.

Array<string>
source
required

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.

string
Allowed values: cli cairn
total
required
integer
passed
required
integer
failed
required
integer
costUsd
required
number
durationMs
required
integer
measured
required

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.

boolean
running
required

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.

boolean
Example
{
"runs": [
{
"source": "cli"
}
]
}

No / invalid token or session