---
title: "List workspaces of a project"
method: GET
path: "/runners/projects/{projectId}/workspaces"
tags: ["Projects"]
---

# List workspaces of a project

`GET /runners/projects/{projectId}/workspaces`

Retrieves all workspaces of a specified project

## Path parameters

- `projectId` string, required

## Query parameters

- `searchQuery` string — Search query
- `pageSize` integer
- `offset` integer
- `poolId` string
- `variableSetId` string
- `explicitConsumption` boolean

## Response `200`

Workspaces retrieved successfully

- RunnersWorkspace[]
  - `id` string — Unique identifier for the workspace
  - `name` string, required — Name of the workspace
  - `description` string — Description of the workspace
  - `accountId` string — ID of the account the workspace belongs to
  - `repository` string, required — Repository URL for the workspace
  - `workingDirectory` string — Working directory within the repository
  - `vcsIntegrationId` string, required — ID of the VCS integration
  - `vcs` string, required — VCS type (e.g., github, gitlab)
  - `defaultBranch` string, required — Default branch for the workspace
  - `cronExecutionPattern` string — Cron pattern for scheduled executions
  - `iacProvisioner` IacProvisioner, required — Infrastructure as Code provisioner configuration
    - `type` 'terraform' | 'opentofu', required — Type of IaC provisioner
    - `version` string, required — Version of the provisioner
  - `multiEnvProvisioner` MultiEnvProvisioner — Multi-environment provisioner configuration
    - `type` 'terragrunt', required — Type of multi-environment provisioner
    - `version` string, required — Version of the multi-environment provisioner. Should be a valid semver when provided.
    - `applyAll` boolean — Whether to apply all environments or not
    - `stopOnError` boolean — Whether to stop on error during multi-environment provisioning
  - `labels` string[] — Labels assigned to the workspace
  - `poolId` string — ID of the runner pool associated with the workspace
  - `triggerConfig` WorkspaceTriggerConfig
    - `runOnPullRequest` boolean
    - `runOnPush` boolean
    - `autoApply` boolean
  - `oidcAuthentication` boolean, nullable — OIDC authentication setting. If null, inherits from parent project.
  - `isRemote` boolean — Whether this workspace uses the internal remote backend for state management

## Other responses

- `400` — Bad Request Error
- `401` — Unauthorized Error
- `403` — Insufficient permissions
- `404` — Not Found Error
- `500` — Internal Server Error

---

[API](https://skmtc.net/firefly/apis/api-gateway.md) · [All operations](https://skmtc.net/firefly/apis/api-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/firefly/api-gateway/revisions/eea119b4113f/schema)
