---
title: "/projects"
method: GET
path: "/projects"
tags: ["Projects"]
---

# /projects

`GET /projects`

## Request

- Base URL: `https://api.productbyte.com/v1`
- URL: `https://api.productbyte.com/v1/projects`
- Auth: HTTP bearer

Lists the projects this key may act on, by name. Start here: every other path is scoped to a project, and this is the only way to learn its id.

A key with no project allowlist sees every project in the workspace; a restricted key sees only the ones it was issued for.

Paginate with `cursor`: pass the `next_cursor` from the previous page. It is absent on the last page.

## Query parameters

- `limit` integer: Page size, 1–100.
- `cursor` string: A `next_cursor` from a previous page.

## Response `200`

A page of projects.

- object
  - `projects` object[], required: Projects this key may act on, by name.
    - `id` string, required: Identifier for this project. Use it in every project-scoped path.
    - `name` string, required: The project’s display name.
    - `website` string: The website the project publishes for, when one is set.
  - `next_cursor` string: Pass as `cursor` to fetch the next page. Absent when there are no more.

## Other responses

- `401`: Missing, unknown, revoked, or expired key (`API_KEY_UNAUTHORIZED`).
- `429`: Too many requests for this key (`API_RATE_LIMITED`). Back off and retry; `Retry-After` gives the window length.

---

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