Get a verification run
Returns one merge-queue verification run, including its normalized CI checks, the pull requests it tested, and the impacted targets uploaded for its commits.
Authorizations
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
The verification run's id.
"a1b2c3d4-e5f6-4718-9a0b-1c2d3e4f5061"
Response
The verification run
"a1b2c3d4-e5f6-4718-9a0b-1c2d3e4f5061"
True when this run exists to attribute a failed batch to a specific entry, rather than to verify new work.
false
The ephemeral branch the queue built to run this verification on.
"trunk-merge/01HX3K"
"1f0a9b8c7d6e5f40312233445566778899aabbcc"
When the run was created.
"2026-07-28T11:05:00.000Z"
When the run last changed. For a finished run this approximates when it concluded; there is no separate finishedAt yet.
"2026-07-28T11:35:00.000Z"
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.
inProgress, failed, cancelled, succeeded "succeeded"
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.
10000Every 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.
10000The 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.
10000Pull 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.
10000The 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).
"https://github.com/acme/widgets/commit/1f0a9b8c7d6e5f40312233445566778899aabbcc"
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.
trunkConfig, repoProviderBranchProtection, mergeInstance "trunkConfig"
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.
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.