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

# List project statuses

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

## Request

- Base URL: `https://api.ybug.io`
- URL: `https://api.ybug.io/v1/projects/{projectId}/statuses`
- Auth: HTTP bearer

Returns the statuses valid for feedback in this project, ordered by `position`, and therefore the
exact set of ids `status_id` accepts when updating feedback. Every team status is valid in every
one of its projects, so this is the same list as `GET /v1/teams/{teamId}/statuses`, reached through
project access instead of team access. A project may hide a status from its own board and quick
filters; that is a display preference and such statuses are still listed, assignable and filterable.

## Response `200`

Successful retrieval of the project's statuses.

- StatusList
  - `statuses` Status[]
    - `status_id` integer: The status identifier, unique **within its team**. The built-in statuses hold the same ids in every team (1 Open, 2 In progress, 3 Resolved, 4 Closed, and 5 Backlog for teams that have it) and can only be renamed, recoloured and repositioned. Custom statuses are numbered per team from 100 up, so id 100 means a different status in another team. Within a team an id is stable and never reused, even after the status is deleted.
    - `name` string
    - `category` 'backlog' | 'open' | 'in_progress' | 'resolved' | 'closed': The workflow meaning of the status. Branch on this rather than on the name, which teams are free to change, or on `status_id`, which is stable but says nothing about meaning: a team may have several statuses of one category, or none of another.
    - `color` 'blue' | 'indigo' | 'purple' | 'pink' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'slate' | 'gray': The colour the status is drawn in, as a palette token rather than a hex value. Teams pick from this fixed set, so the value is always one of the ones below. Always present: a status with no colour of its own takes the colour of its `category` (`open` blue, `in_progress` orange, `resolved` green, `closed` slate, `backlog` gray). A token is stable; the hex behind it is not, and may be retuned in a redesign. Map it to your own palette rather than storing our pixels. The hex Ybug currently draws each token in, as `text` on `background`: | Token | Text | Background | | ----- | ---- | ---------- | | `blue` | `#0284FF` | `#E0F2FE` | | `indigo` | `#4444DD` | `#EDEDFB` | | `purple` | `#9333EA` | `#F3E8FF` | | `pink` | `#DB2777` | `#FCE7F3` | | `red` | `#E5231B` | `#FFE3E0` | | `orange` | `#FF8800` | `#FFF1DB` | | `yellow` | `#CA8A04` | `#FEF9C3` | | `green` | `#16C264` | `#DCFCE7` | | `teal` | `#0D9488` | `#CCFBF1` | | `slate` | `#5B6678` | `#EEF1F6` | | `gray` | `#98A2B3` | `#F2F4F7` |
    - `position` integer: Sort order within the team, ascending. Ordering is free-form and does not follow `category`.
    - `built_in` boolean: Whether this is a built-in status, i.e. one Ybug ships rather than one the team added. Built-ins can be renamed and recoloured but never deleted, and always have a `status_id` below 100; custom statuses start at 100. Ids 1-5 are the built-in slots (Open, In progress, Resolved, Closed, Backlog) and 6-99 are reserved for future built-ins. Do not assume a team has all of them: teams created before Backlog existed start with 1-4 only. List the statuses instead.

## Other responses

- `401`: Unauthorized. Missing or invalid API token.
- `403`: Forbidden. The user does not have permission to access the resource, or the operation is restricted by the account plan.
- `404`: Not Found. The requested resource (team or project ID) could not be found.
- `429`: Too Many Requests. The rate limit for the client has been exceeded.
- `500`: Internal Server Error. An unexpected error occurred on the server.

---

[API](https://skmtc.dev/ybug/apis/ybug-api.md) · [All operations](https://skmtc.dev/ybug/apis/ybug-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ybug/apis/ybug-api/revisions/50f50cb05459?raw)
