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

# List projects

`GET /api/v2/projects`

Return a list of projects.

By default, this returns the first 20 projects. Page through this list with the `limit` parameter and by following the `first`, `prev`, `next`, and `last` links in the `_links` field that returns. If those links do not appear, the pages they refer to don't exist. For example, the `first` and `prev` links will be missing from the response on the first page, because there is no previous page and you cannot return to the first page when you are already on the first page.

### Filtering projects

LaunchDarkly supports three fields for filters:
- `query` is a string that matches against the projects' names and keys. It is not case sensitive.
- `tags` is a `+`-separated list of project tags. It filters the list of projects that have all of the tags in the list.
- `keys` is a `|` separated list of project keys. It filters the list to projects that have any of the keys in the list.

For example, the filter `filter=query:abc,tags:tag-1+tag-2` matches projects with the string `abc` in their name or key and also are tagged with `tag-1` and `tag-2`. The filter is not case-sensitive.

The documented values for `filter` query parameters are prior to URL encoding. For example, the `+` in `filter=tags:tag-1+tag-2` must be encoded to `%2B`.

### Sorting projects

LaunchDarkly supports two fields for sorting:
- `name` sorts by project name.
- `createdOn` sorts by the creation date of the project.

For example, `sort=name` sorts the response by project name in ascending order.

### Expanding the projects response

LaunchDarkly supports one field for expanding the "List projects" response. By default, these fields are **not** included in the response.

To expand the response, append the `expand` query parameter and add a comma-separated list with the `environments` field.

* `environments` includes a paginated list of the project environments.

For example, `expand=environments` includes the `environments` field for each project in the response.

## Query parameters

- `limit` integer — The number of projects to return in the response. Defaults to 20.
- `offset` integer — Where to start in the list. Use this with pagination. For example, an offset of 10 skips the first ten items and returns the next `limit` items.
- `filter` string, string — A comma-separated list of filters. Each filter is constructed as `field:value`.
- `sort` string, string — A comma-separated list of fields to sort by. Fields prefixed by a dash ( - ) sort in descending order.
- `expand` string, string — A comma-separated list of properties that can reveal additional information in the response.

## Response `200`

Project collection response

- Projects
  - `_links` object, required — A link to this resource.
  - `items` Project[], required — List of projects.
    - `_links` object, required — The location and content type of related resources
    - `_id` string, required — The ID of this project
    - `key` string, required — The key of this project
    - `includeInSnippetByDefault` boolean, required — Whether or not flags created in this project are made available to the client-side JavaScript SDK by default
    - `defaultClientSideAvailability` ClientSideAvailability
      - `usingMobileKey` boolean
      - `usingEnvironmentId` boolean
    - `name` string, required — A human-friendly name for the project
    - `_access` Access
      - `denied` AccessDenied[], required
        - `action` string, required
        - `reason` AccessDeniedReason, required
          - `resources` string[] — Resource specifier strings
          - `notResources` string[] — Targeted resources are the resources NOT in this list. The <code>resources</code> and <code>notActions</code> fields must be empty to use this field.
          - `actions` ActionSpecifier[] — Actions to perform on a resource
          - `notActions` ActionSpecifier[] — Targeted actions are the actions NOT in this list. The <code>actions</code> and <code>notResources</code> fields must be empty to use this field.
          - `effect` 'allow' | 'deny', required — Whether this statement should allow or deny actions on the resources.
          - `role_name` string
      - `allowed` AccessAllowedRep[], required
        - `action` string, required
        - `reason` AccessAllowedReason, required
          - `resources` string[] — Resource specifier strings
          - `notResources` string[] — Targeted resources are the resources NOT in this list. The <code>resources</code> and <code>notActions</code> fields must be empty to use this field.
          - `actions` ActionSpecifier[] — Actions to perform on a resource
          - `notActions` ActionSpecifier[] — Targeted actions are the actions NOT in this list. The <code>actions</code> and <code>notResources</code> fields must be empty to use this field.
          - `effect` 'allow' | 'deny', required — Whether this statement should allow or deny actions on the resources.
          - `role_name` string
    - `tags` string[], required — A list of tags for the project
    - `defaultReleasePipelineKey` string — The key of the default release pipeline for this project
    - `environments` Environments
      - `_links` object — The location and content type of related resources
      - `totalCount` integer — The number of environments returned
      - `items` Environment[], required — An array of environments
        - `_links` object, required — The location and content type of related resources
        - `_id` string, required — The ID for the environment. Use this as the client-side ID for authorization in some client-side SDKs, and to associate LaunchDarkly environments with CDN integrations in edge SDKs.
        - `key` string, required — A project-unique key for the new environment
        - `name` string, required — A human-friendly name for the new environment
        - `apiKey` string, required — The SDK key for the environment. Use this for authorization in server-side SDKs.
        - `mobileKey` string, required — The mobile key for the environment. Use this for authorization in mobile SDKs.
        - `color` string, required — The color used to indicate this environment in the UI
        - `defaultTtl` integer, required — The default time (in minutes) that the PHP SDK can cache feature flag rules locally
        - `secureMode` boolean, required — Ensures that one end user of the client-side SDK cannot inspect the variations for another end user
        - `_access` Access
          - `denied` AccessDenied[], required
            - `action` string, required
            - `reason` AccessDeniedReason, required
              - …
          - `allowed` AccessAllowedRep[], required
            - `action` string, required
            - `reason` AccessAllowedReason, required
              - …
        - `defaultTrackEvents` boolean, required — Enables tracking detailed information for new flags by default
        - `requireComments` boolean, required — Whether members who modify flags and segments through the LaunchDarkly user interface are required to add a comment
        - `confirmChanges` boolean, required — Whether members who modify flags and segments through the LaunchDarkly user interface are required to confirm those changes
        - `tags` string[], required — A list of tags for this environment
        - `approvalSettings` ApprovalSettings
          - `required` boolean, required — If approvals are required for this environment
          - `bypassApprovalsForPendingChanges` boolean, required — Whether to skip approvals for pending changes
          - `minNumApprovals` integer, required — Sets the amount of approvals required before a member can apply a change. The minimum is one and the maximum is five.
          - `canReviewOwnRequest` boolean, required — Allow someone who makes an approval request to apply their own change
          - `canApplyDeclinedChanges` boolean, required — Allow applying the change as long as at least one person has approved
          - `autoApplyApprovedChanges` boolean — Automatically apply changes that have been approved by all reviewers. This field is only applicable for approval services other than LaunchDarkly.
          - `serviceKind` string, required — Which service to use for managing approvals
          - `serviceConfig` object, required
          - `requiredApprovalTags` string[], required — Require approval only on flags with the provided tags. Otherwise all flags will require approval.
          - `serviceKindConfigurationId` string — Optional field for integration configuration ID of a custom approval integration. This is an Enterprise-only feature.
          - `resourceKind` string — The kind of resource for which the approval settings apply, for example, flag or segment
        - `resourceApprovalSettings` object — Details on the approval settings for this environment for each resource kind
        - `critical` boolean, required — Whether the environment is critical
  - `totalCount` integer

## Other responses

- `400` — Invalid request
- `401` — Invalid access token
- `403` — Forbidden
- `429` — Rate limited

## Changes

- **2026-02-28** `69c5c9aafe78` — 1 info
  - added the optional property `items/items/environments/items/items/_access` to the response with the `200` status

[Change history](https://skmtc.dev/launchdarkly/apis/launchdarkly-rest-api/changes/api/v2/projects/get.md)

---

[API](https://skmtc.dev/launchdarkly/apis/launchdarkly-rest-api.md) · [All operations](https://skmtc.dev/launchdarkly/apis/launchdarkly-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/launchdarkly/launchdarkly-rest-api/revisions/69c5c9aafe78/schema)
