---
title: "Bulk list projects"
method: GET
path: "/v1/projects/bulk"
tags: ["Bulk Export"]
---

# Bulk list projects

`GET /v1/projects/bulk`

Returns an org-wide, paginated list of projects across every space the calling user is a member of. Rows are flat and denormalized (space name, status, owners, tags) so external tools can consume them without follow-up calls. Ordered by projectId ascending for stable pagination.

## Query parameters

- `spaceId` integer
- `status` string
- `updatedSince` string, date-time
- `includeDeleted` boolean
- `page` integer
- `size` integer

## Headers

- `X-Org-Id` integer, required

## Response `200`

Projects fetched successfully

- ApiSuccessResponseBulkPageResponseBulkProjectDto — Standard API success response structure
  - `success` boolean — Indicates if the operation was successful
  - `message` string — Message describing the result of the operation
  - `code` integer — HTTP status code of the response
  - `data` BulkPageResponseBulkProjectDto — Paginated bulk export response
    - `items` BulkProjectDto[] — Rows for the requested page
      - `projectId` integer — Project ID
      - `projectName` string — Project name
      - `spaceId` integer — Space ID the project belongs to
      - `spaceName` string — Space name
      - `status` string — Project status name
      - `statusCategory` string — Project status category
      - `priority` string — Project priority label
      - `completion` integer — Completion percentage
      - `startDate` string, date-time — Planned start date (epoch millis)
      - `dueDate` string, date-time — Planned due date (epoch millis)
      - `completedTime` string, date-time — Completion timestamp (epoch millis)
      - `owners` BulkOwnerDto[] — Project admins
        - `userId` integer — User ID
        - `name` string — Display name of the user
        - `email` string — Email of the user
      - `tags` string[] — Tag names on the project
      - `archived` boolean — Whether the project is archived
      - `deleted` boolean — Whether the project is soft-deleted; only present when includeDeleted=true
      - `deletedTime` string, date-time — Deletion timestamp (epoch millis); only for deleted rows
      - `createdTime` string, date-time — Creation timestamp (epoch millis)
      - `modifiedTime` string, date-time — Last modification timestamp (epoch millis)
    - `totalCount` integer — Total number of rows matching the filters
    - `page` integer — Current page number (zero-based)
    - `size` integer — Page size
    - `totalPages` integer — Total number of pages
    - `hasNext` boolean — Whether there is a next page
    - `hasPrevious` boolean — Whether there is a previous page
  - `timestamp` string, date-time — Timestamp of the response

## Changes

- **2026-08-27** `cab522570150` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/astravue/apis/astravue-api/changes/v1/projects/bulk/get.md)

---

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