Where the pipelines of these runs stand
const url = 'https://beta-api.plune.ai/v1/projects/example/integrations/ci/launches?runs=example';const options = {method: 'GET', headers: {cookie: 'plune_session=<plune_session>'}};
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/projects/example/integrations/ci/launches?runs=example' \ --cookie plune_session=<plune_session>Every member, a reader too. ?runs= names 1 to 200 runs of the project (a list, or the key repeated); the answer holds a launch for each that has one, and nothing for the rest — another project’s run among them included. Plune asks GitHub about every pipeline still going once a minute; this reads what it last saw. Session cookie only.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”An id from GET /v1/projects
Query Parameters
Section titled “Query Parameters ”Run ids, comma-separated
Responses
Section titled “ Responses ”The launches of the runs named
object
A run’s automated part started in CI, and where Plune last saw its pipeline. state: scheduled (saved, nothing sent) · refused (GitHub would not start it; code says why) · queued · running · completed (it ended, nothing in the run yet: 5 more minutes for the reporter) · reported · not_started (queued 15 minutes; Plune cancelled it) · no_report · lost (24 hours after the dispatch) · cancelled (a person ended the run while its pipeline went on). In the last three and not_started the automated part is closed: an automated run is terminated, a mixed one goes on with its automated cases not run.
object
The branch or tag tested. The workflow file is read from the connection’s own.
refused: why. A watched state: why the CI cannot be asked right now (not_connected: the connection was removed since).
The HTTP status of an unexpected answer.
The run or pipeline page on the CI, from the dispatch’s own answer.
The CI’s word for how it ended: success, failure, cancelled, failed, canceled, …
Since when the CI has not answered; Plune keeps waiting.
Example
{ "launches": [ { "runId": "6f1c2b3a-0000-4000-8000-0000000000d1", "provider": "github", "repository": "plune-ai/cli", "workflow": ".github/workflows/plune.yml", "ref": "main", "state": "queued", "code": null, "status": null, "runUrl": "https://github.com/plune-ai/cli/actions/runs/900001", "conclusion": null, "dispatchedBy": "u-shop", "dispatchedAt": "2026-09-16T09:12:04.151Z", "startedAt": null, "completedAt": null, "unreachableSince": null, "updatedAt": "2026-09-16T09:12:04.151Z" } ]}runs names none, or more than 200
object
Example generated
{ "error": "example"}No / invalid session — a CLI token is refused here
No such project among yours
object
Example generated
{ "error": "example"}The server has no key to keep tokens under
object
Example
{ "error": "integrations are not configured on this server — contact your operator"}