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

# List project issues

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

Returns a cursor-paginated page of issues in the project. Each item includes lifecycle `states` plus time-window stats: `firstSeenAt`, `lastSeenAt`, `occurrences`, `affectedTracesPercent`, `trend`, and `tags`.

## Path parameters

- `projectSlug` string, required — Project slug (human-readable identifier)

## Query parameters

- `cursor` string — Opaque cursor returned in a previous response's `nextCursor`. Omit on the first page.
- `limit` integer — Page size. Defaults to 50; max 200.
- `query` string — Free-text semantic search across the issues' names and descriptions.
- `lifecycleGroup` 'active' | 'archived' — `"active"` for unresolved/unignored issues; `"archived"` for the rest. Omit to include both.
- `sortBy` 'lastSeen' | 'occurrences' | 'state' — Sort field. `lastSeen` orders by most recent occurrence; `occurrences` by total count in the time window; `state` by lifecycle priority.
- `sortDirection` 'asc' | 'desc' — Sort direction. Defaults to `desc`.
- `fromIso` string, date-time — Lower bound (inclusive) of the time window. Defaults to ~6 days ago.
- `toIso` string, date-time — Upper bound (inclusive) of the time window. Defaults to now.

## Response `200`

Page of issues

- PaginatedIssues
  - `items` Issue[], required — Page of items, in the requested sort order.
    - `id` string, required — Stable issue identifier.
    - `organizationId` string, required — Organization that owns this issue.
    - `projectId` string, required — Project this issue belongs to.
    - `slug` string, required — URL-safe slug derived from `name`. Unique within the project.
    - `name` string, required — Human-readable name.
    - `description` string, required — Description of the issue.
    - `source` 'annotation' | 'flagger' | 'custom', required — Where the issue originated from.
    - `states` string[], required — Active lifecycle states. An issue may carry multiple states at once (e.g. `escalating` + `ongoing`).
    - `resolvedAt` string, nullable, required — ISO-8601 timestamp at which the issue was resolved, or `null`.
    - `ignoredAt` string, nullable, required — ISO-8601 timestamp at which the issue was ignored, or `null`.
    - `createdAt` string, required — ISO-8601 timestamp of creation.
    - `updatedAt` string, required — ISO-8601 timestamp of the last update.
    - `trend` IssueTrendBucket[], required — Daily occurrence counts over the past 14 days.
      - `bucket` string, required — UTC day bucket (`YYYY-MM-DD`).
      - `count` integer, required — Number of occurrences within the bucket.
    - `tags` string[], required — Tags seen on the issue's occurrences.
    - `firstSeenAt` string, required — ISO-8601 timestamp of the earliest occurrence in the time window.
    - `lastSeenAt` string, required — ISO-8601 timestamp of the latest occurrence in the time window.
    - `occurrences` integer, required — Number of occurrences in the time window.
    - `affectedTracesPercent` number, required — Fraction of project traces affected by this issue in the time window, in `[0, 1]`.
  - `nextCursor` string, nullable, required — Opaque cursor for fetching the next page. `null` when there are no more pages. Pass it back in `cursor` to continue.
  - `hasMore` boolean, required — `true` when there is at least one more page after this one.

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `404` — Not found

---

[API](https://skmtc.dev/latitude-dev/apis/latitude.md) · [All operations](https://skmtc.dev/latitude-dev/apis/latitude/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/latitude-dev/latitude/revisions/fc0da553a950/schema)
