---
title: "List project issues"
method: GET
path: "/v1/projects/{projectId}/issues"
tags: ["projects"]
---

# List project issues

`GET /v1/projects/{projectId}/issues`

List a project's tracked issues: bugs and warnings surfaced by QA runs, deduplicated across runs with occurrence counts and triage status. Open issues sort first, then by most recently seen.

## Path parameters

- `projectId` string, required

## Query parameters

- `status` 'open' | 'resolved' | 'false_positive' — Filter to one triage status.
- `environment` 'production' | 'staging' | 'preview' | 'custom' — Filter to issues seen on one deployment environment.
- `limit` string

## Headers

- `Authorization` string, required

## Response `200`

List of project issues

- ProjectsListProjectIssuesResponse200
  - `issues` ProjectIssue[], required
    - `id` string, uuid, required
    - `projectId` string, uuid, required
    - `testId` string, uuid, nullable, required
    - `status` 'open' | 'resolved' | 'false_positive', required — Triage status. Resolved issues reopen automatically if a run surfaces them again.
    - `issueType` 'issue' | 'warning', required
    - `source` 'agent_report' | 'step_failure', required — How the tracker learned about the issue: an explicit agent report or a failed test step.
    - `name` string, required
    - `description` string, required
    - `url` string, nullable, required
    - `severity` integer, nullable, required — 1 (low) to 5 (critical), when reported.
    - `category` string, nullable, required
    - `reproductionSteps` string[], nullable, required
    - `expectedBehavior` string, nullable, required
    - `actualBehavior` string, nullable, required
    - `screenshotUrl` string, nullable, required
    - `environment` 'production' | 'staging' | 'preview' | 'custom', required — Deployment bucket the issue is tracked on.
    - `environmentName` string, required — Resolved environment label ("Production", "Staging", "QA EU", ...). Issues are tracked per environment: the same bug on different environments is separate issues.
    - `occurrenceCount` integer, required — Number of runs that surfaced this issue.
    - `firstSeenRunId` string, uuid, nullable, required
    - `lastSeenRunId` string, uuid, nullable, required
    - `lastSeenAt` string, date-time, required
    - `resolvedAt` string, date-time, nullable, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `count` integer, required
  - `openCount` integer, required — Total open issues in the project.

## Other responses

- `400` — Bad Request - Invalid input parameters
- `401` — Unauthorized - Invalid or missing API key
- `404` — Project not found
- `429` — Too Many Requests - Usage limit exceeded
- `500` — Internal Server Error
- `504` — Gateway Timeout - Test execution exceeded time limit

---

[API](https://skmtc.net/tester/apis/testerarmy-api.md) · [All operations](https://skmtc.net/tester/apis/testerarmy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tester/testerarmy-api/revisions/008f119d866c/schema)
