---
title: "Get user's projects with filtering and pagination"
method: GET
path: "/v1/projects"
tags: ["Projects"]
---

# Get user's projects with filtering and pagination

`GET /v1/projects`

## Query parameters

- `type` 'renovation' | 'new_home_construction' | 'other'
- `search` string
- `sortBy` 'createdAt' | 'updatedAt' | 'lastActivityAt' | 'name'
- `sortDirection` 'asc' | 'desc'
- `includeSoftDeleted` boolean
- `limit` integer
- `cursor` string
- `direction` 'after' | 'before'

## Response `200`

Projects retrieved successfully

- UserProjectPaginatedApiResponseDto
  - `success` boolean, required — Indicates if the request was successful
  - `message` string, required — Human readable message
  - `data` object[], required — Array of data items
    - `id` string, uuid, required — Unique identifier of the project
    - `name` string, required — Name of the project
    - `type` 'renovation' | 'new_home_construction' | 'other', nullable — Type of project
    - `estimatedBudget` number, nullable — Budget of the project
    - `currency` string, nullable — Currency of project budget
    - `address` object, nullable
      - `id` string, uuid, required — Unique identifier of the address
      - `externalId` string, nullable, required — External location ID from geocoding service
      - `fullAddress` string, required — Full formatted address
      - `addressNumber` string, nullable, required — Street number
      - `addressName` string, nullable, required — Street name
      - `city` string, required — City name
      - `state` string, nullable, required — State or province
      - `zipCode` string, nullable, required — Postal/zip code
      - `country` string, required — Country name
      - `coordinates` union[], required — Coordinates as [longitude, latitude] tuple
        - union
          - number
          - number
      - `createdAt` unknown, required
      - `updatedAt` unknown, required
    - `unitSystem` 'imperial' | 'metric', required — Preferred measurement unit system for this project
    - `showLowerFloorShadow` boolean, required — Per-project editor setting: show the floor-below shadow underlay
    - `deletedAt` unknown
    - `createdAt` unknown, required
    - `updatedAt` unknown, required
    - `lastActivityAt` unknown, required
    - `assetsSummary` object, required
      - `recentAssetThumbnails` object[], required
        - `assetType` 'image' | 'document' | 'floorplan' | 'floorplan_template', required
        - `thumbnailUrls` string[], required
      - `totalAssets` integer, required
  - `meta` object, required — Pagination metadata
    - `hasNext` boolean, required — Whether there are more items after current set
    - `hasPrevious` boolean, required — Whether there are items before current set
    - `nextCursor` string, nullable, required — Cursor for next page
    - `prevCursor` string, nullable, required — Cursor for previous page
  - `timestamp` string, date-time, required — Timestamp of the response

---

[API](https://skmtc.dev/maket/apis/virtual-architect-api.md) · [All operations](https://skmtc.dev/maket/apis/virtual-architect-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/maket/virtual-architect-api/revisions/7635e6f94477/schema)
