---
title: "List recent disruption events for a specific test."
method: GET
path: "/api/tests/{id}/results"
tags: ["Tests"]
---

# List recent disruption events for a specific test.

`GET /api/tests/{id}/results`

## Request

- Base URL: `https://platform.buildpulse.io`
- URL: `https://platform.buildpulse.io/api/tests/{id}/results`
- Auth: one of:
  - API key in header `Authorization`
  - HTTP bearer

Returns up to 10 most-recent disruption events for the given
disruptor (test) ID, newest first, within the organization's
flaky-test reporting window (the plan's reporting period, default
14 days — the same window as `GET /api/v1/flaky/tests`). The test
must belong to a repository in the caller's organization.

Each event is one disruptive result: the failing run the detector
flagged, with the CI `build_url` and `commit_oid` of the result set
it came from, its `conclusion` (`failure` or `error`), and the
failure `message` (null when the reporter sent none). Tests flagged
purely by failure ratio fall back to their failing results in the
window when no cohort disruption is recorded.

## Path parameters

- `id` string, required

## Response `200`

Recent disruption events.

- TestResultsResponse
  - `results` TestResult[], required
    - `id` string, required
    - `build_url` string, uri, required
    - `commit_oid` string, required
    - `conclusion` string, required: Disruption conclusion — `failure` or `error`.
    - `recorded_at` string, date-time, required
    - `message` string, nullable, required

## Other responses

- `401`: Missing, malformed, or invalid token; or — for legacy 40-hex tokens only — the organization has no active plan (`marketplacePurchases.unitCount > 0`). The new `bp_<64-hex>` path has no plan gate, so a 401 there means the token shape was wrong, the hash didn't match, or the token has expired. Response body is empty (matches legacy Rails).
- `402`: The organization is over its plan's monthly test-result limit and data-read access is restricted (staged-overage stage `soft` or `hard`). At `soft` the data is locked but safe — ingestion keeps recording. At `hard` ingestion is also paused (raw retained ~30 days) and an upgrade resumes processing. Read `GET /api/v1/usage` for the current stage and usage, and visit `upgradeUrl` to restore access. Only returned for organizations positively identified as over the enforced limit while enforcement is enabled.
- `404`: Resource not found.

---

[API](https://skmtc.dev/buildpulse/apis/buildpulse-platform-api.md) · [All operations](https://skmtc.dev/buildpulse/apis/buildpulse-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/buildpulse/apis/buildpulse-platform-api/revisions/2e68b4b2df6a?raw)
