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

# List projects

`GET /projects`

## Request

- Base URL: `https://api.letsship.ai/v1`
- URL: `https://api.letsship.ai/v1/projects`
- Auth: HTTP bearer

Lists the organization's projects, oldest first. When more projects exist, the response gives a `nextCursor`. Send it back as `cursor` to get the next page.

## Query parameters

- `limit` integer
- `cursor` string
- `byTrackerConnectorId` string
- `byTrackerTeamId` string
- `byTrackerProjectId` string
- `byScmConnectorId` string
- `byScmOwner` string
- `byScmRepo` string

## Response `200`

Page

- object
  - `data` Project[], required
    - `id` string, required
    - `orgId` string, required
    - `slug` string, required
    - `name` string, required
    - `status` 'active' | 'paused' | 'archived', required
    - `tracker` 'linear' | 'github-issues' | 'none', required
    - `trackerConnectorId` string, nullable, required
    - `trackerTeamId` string, nullable, required
    - `trackerProjectId` string, nullable, required
    - `scmConnectorId` string, required
    - `scmOwner` string, required
    - `scmRepo` string, required
    - `llmConnectorId` string, required
    - `autoMerge` boolean, required
    - `issueCode` string, nullable, required
    - `defaultSandboxTemplateId` string, nullable, required
    - `createdAt` integer, required
    - `missingConnectorKinds` string[]
  - `nextCursor` string, nullable, required

## Other responses

- `400`: A cursor this API did not issue
- `401`: Unauthenticated
- `403`: Missing scope

---

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