StarSling
APITime

Break down CI wall-clock time

Phase decomposition: job/attempt level splits wall-clock into the frozen phase enum with a per-step breakdown; run level adds a timing-inferred critical path, parallelism efficiency, and the blocking job; repo level aggregates p50/p95 per phase per runner label. Scoped to the caller's orgs by membership.

View Markdown
GET/api/time

Authorization

bearerAuth
AuthorizationBearer <token>

Session token from sling login.

In: header

Query Parameters

org*string

GitHub organization login. Required — timings are always org-scoped.

Length1 <= length
level*string

Granularity of the breakdown — it selects which id you pass.

Value in

  • "job"
  • "attempt"
  • "run"
  • "repo"
job_id?string

Target job, for level=job or level=attempt.

run_id?string

Target run, for level=run.

attempt?|

Pin a run to one attempt. Defaults to the latest.

Range1 <= value <= 4294967295
repo?string

Target repository, for level=repo, as owner/name.

window?string

Relative lookback, e.g. 30d. Mutually exclusive with month and from/to.

month?string

A whole calendar month, YYYY-MM.

from?string

Start of the range, inclusive. Required with to.

to?string

End of the range, exclusive. Required with from.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/time?org=acme&level=attempt"
{  "level": "attempt",  "id": "att_88886665361.1",  "run_id": "2990884649",  "job_id": "88886665361",  "attempt": 1,  "job_name": "typecheck",  "wall_clock_ms": 89000,  "phases": [    {      "key": "queue_wait",      "ms": 16000,      "pct": 18    },    {      "key": "provision",      "ms": 9000,      "pct": 10.1,      "detail": {        "instance_type": "c7a.2xlarge"      }    },    {      "key": "steps",      "ms": 61000,      "pct": 68.5    },    {      "key": "teardown",      "ms": 3000,      "pct": 3.4    }  ],  "steps": [    {      "key": "Set up job",      "ms": 2000,      "conclusion": "success"    },    {      "key": "Run e2e tests",      "ms": 59000,      "conclusion": "failure"    }  ],  "meta": {    "source": "steps",    "truncated": [      {        "key": "image_pull",        "reason": "bundled into provision — no v1 facts source"      }    ]  }}