Skip to main content
GET
Get a verification run

Authorizations

Authorization
string
header
required

An API key, sent as Authorization: Bearer <key>. An organization admin creates one in the Trunk app under Settings → Developer → API Keys and chooses the merge-queue permissions it holds; a key with none can read merge queues but change nothing. Those permissions scope merge queue only: every key can use the Flaky Tests and Dynamic CI endpoints, including their writes, whatever permissions it holds.

Path Parameters

id
string
required

The verification run's id.

Example:

"a1b2c3d4-e5f6-4718-9a0b-1c2d3e4f5061"

Response

The verification run

id
string
required
Example:

"a1b2c3d4-e5f6-4718-9a0b-1c2d3e4f5061"

isBisection
boolean
required

True when this run exists to attribute a failed batch to a specific entry, rather than to verify new work.

Example:

false

testBranch
string
required

The ephemeral branch the queue built to run this verification on.

Example:

"trunk-merge/01HX3K"

testBranchSha
string
required
Example:

"1f0a9b8c7d6e5f40312233445566778899aabbcc"

createdAt
string<date-time>
required

When the run was created.

Example:

"2026-07-28T11:05:00.000Z"

updatedAt
string<date-time>
required

When the run last changed. For a finished run this approximates when it concluded; there is no separate finishedAt yet.

Example:

"2026-07-28T11:35:00.000Z"

status
enum<string>
required

inProgress — checks are still running. succeeded — every required check passed. failed — a required check failed, or the run exceeded the queue's testingTimeoutMinutes (the two are not distinguished today). cancelled — the engine abandoned the run, typically because the entry left the queue or an entry ahead of it failed.

Available options:
inProgress,
failed,
cancelled,
succeeded
Example:

"succeeded"

requiredStatuses
string[]
required

Names of the checks that were required for this run, snapshotted when it started (resolved from the queue's configured statuses, then .trunk/trunk.yaml, then the branch's GitHub protection contexts). A check in checks is required iff its name is in this list; the checks themselves carry no required flag. Empty means nothing was required.

Maximum array length: 10000
Example:
checks
object[]
required

Every check the run observed, provider check runs and commit statuses normalized to one shape. A failure here is the usual reason an entry left testing for failed.

Maximum array length: 10000
testedPullRequests
object[]
required

The pull requests included in this run. More than one means the entries were batched, so a failure is attributable to any of them until bisection narrows it.

Maximum array length: 10000
dependentPullRequests
object[]
required

Pull requests whose commits were merged into the test branch to build the predicted base, but which this run is not testing. A merged-in commit is absent here when it belongs to no pull request (a plain base-branch commit) or when that pull request's branch has moved since the run, so this list is usually shorter than what the run carried. It can also be longer: a commit is matched by (repository, sha), which is indexed but not unique, so one merged-in commit resolves to every pull request in the repository whose head is that sha.

Maximum array length: 10000
testBranchCommitUrl
string

The tested commit on the provider, for a human to open — v1 publishes this same link as testBranchUrl, which addresses the commit rather than the branch. Absent for a non-GitHub repository, and for a run that never got a tested commit (one cancelled before it started).

Example:

"https://github.com/acme/widgets/commit/1f0a9b8c7d6e5f40312233445566778899aabbcc"

requiredStatusesSource
enum<string>

Where the queue resolved a run's required checks from, in the order it tries them: mergeInstance — the queue's own configured list; trunkConfig — merge.required_statuses in the repository's .trunk/trunk.yaml, read off the test branch; repoProviderBranchProtection — the target branch's protection rules at the provider. Absent in two cases: a run recorded before Trunk stored the source (before 2024-01-24), and a run cancelled before it started, which resolved no statuses at all and carries an empty requiredStatuses with it. v1 reports both as trunk_config, which is its merge service's default rather than an observation.

Available options:
trunkConfig,
repoProviderBranchProtection,
mergeInstance
Example:

"trunkConfig"

testBranchPullRequest
object

The pull request or merge request the queue opened for the test branch, where its checks and logs are. On GitHub, the pull request the queue opened for the test branch, present only when the queue is configured to open one. On GitLab, the draft merge request the queue always opens for the test branch; number is its iid and url its web URL, e.g. https://gitlab.com/acme/widgets/-/merge_requests/42.

impactedTargets
object

The impacted targets uploaded for the run's commits (PUT /impacted-targets). Returned only when a single run is fetched by ID, never in a list, and absent when no commit on the run has an upload. all spans every commit the run carried: the pull requests under test and the commits merged in beneath them to build the predicted base. testedPullRequestsOnly spans the tested pull requests' commits alone, and is absent when none of them uploaded. A commit with no upload contributes nothing to either set.