Skip to main content
GET
Get a test-results upload

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<uuid>
required

The upload's id, as its create returned it.

Example:

"f47ac10b-58cc-4372-a567-0e02b2c3d479"

Response

The upload

A test-results upload: where it is, and what ingestion found.

id
string<uuid>
required

The upload's id.

Example:

"f47ac10b-58cc-4372-a567-0e02b2c3d479"

testCollectionId
string
required

The id of the test collection the upload belongs to.

Example:

"aB3xY9kQ"

repositoryId
string<uuid>
required

The repository the tests are stored under. The nil UUID for an upload without a repository.

Example:

"7a1f0e3d-2b4c-4d5e-8f90-123456789abc"

status
enum<string>
required

Where an upload is. awaitingData: Trunk has not read the bundle. Past expiresAt on the create, it was never uploaded or could not be read. received: ingestion has started and not finished. Ingestion retries for about 10 minutes, so an upload still received with updatedAt more than 15 minutes old was not ingested and will not change. ingested: ingestion has recorded the upload. Its results and defects are written just after, so defects can still grow for a few seconds; each one moves updatedAt. If writing them fails, the upload stays ingested with its results incomplete. An invalid defect names a part of the bundle that was left out. skipped: it was read, but so many of its tests failed that Trunk treated the run as an infrastructure failure and stored no results.

Available options:
awaitingData,
received,
ingested,
skipped
Example:

"ingested"

defects
object[]
required

The problems ingestion found, oldest first. Empty until the bundle has been read. At most 1000; past that, every invalid defect is kept before any suboptimal one.

Maximum array length: 1000
clientVersion
string
required

The version of the client that built the bundle, as ingestion read it from the bundle. Empty until the bundle has been read. It is not the clientVersion sent on the create.

Example:

"trunk-analytics-cli 0.12.3"

createdAt
string<date-time>
required

When the upload was created.

Example:

"2026-10-06T16:00:00.000Z"

updatedAt
string<date-time>
required

The last time ingestion touched the upload. Each ingestion attempt moves it, even when status stays the same.

Example:

"2026-10-06T16:00:04.000Z"