---
title: "Get Query Folder Tree"
method: GET
path: "/data/projects/{projectId}/queries/folders/tree"
tags: ["Data -- Query Folders"]
---

# Get Query Folder Tree

`GET /data/projects/{projectId}/queries/folders/tree`

## Request

- Base URL: `https://partner.peaka.studio/api/v1`
- URL: `https://partner.peaka.studio/api/v1/data/projects/{projectId}/queries/folders/tree`
- Auth: HTTP bearer

Returns the folder hierarchy as a tree structure. Optionally includes queries within each folder node. Use rootFolderId to get a subtree starting from a specific folder.

## Path parameters

- `projectId` string, required

## Query parameters

- `includeQueries` boolean
- `rootFolderId` string

## Response `200`

Folder tree retrieved successfully

- QueryFolderTreeResponse: Response containing the folder tree hierarchy
  - `tree` QueryFolderTreeNode[]: Root-level nodes of the folder tree
    - `id` string: Unique identifier of the folder (UUID)
    - `name` string: Display name of the folder
    - `path` string: Full path of the folder
    - `children` QueryFolderTreeNode[]: Child folder nodes
    - `queries` Query[]: Queries in this folder (present only when includeQueries=true)
      - `id` string: The ID of the query.
      - `displayName` string: The display name of the query.
      - `name` string: The name of the query used in SQL, e.g. SELECT * FROM "peaka"."query"."<name>". For a MATERIALIZED query the materialized result is queryable as "peaka"."mtquery"."<name>".
      - `inputQuery` string: The SQL query. For a materialized query created from an existing query (via inputQueryRefId), this holds the snapshot of the source query's SQL resolved when the query was created or last updated with the reference.
      - `queryType` 'PLAIN' | 'MATERIALIZED': The type of the query.
      - `schedule` MaterializedQuerySchedule, nullable: Schedule configuration of a materialized query. Provide EITHER an interval schedule (`type=interval` with `repeatDuration`) OR a cron schedule (`type=cron` with `cronExpression` and optional `timezone`). Use `type=none` for no schedule. The fields that do not apply to the chosen type are omitted.
        - `type` 'interval' | 'cron' | 'none': Type of schedule.
        - `cronExpression` string, nullable: UNIX cron expression (minute hour day-of-month month day-of-week), e.g. '0 0 * * *' for every day at midnight. Set only when the schedule type is 'cron'.
        - `repeatDuration` string, nullable: ISO-8601 duration between refreshes, e.g. 'PT6H' (every 6 hours), 'PT12H' (twice daily), 'P1D' (daily). Set only when the schedule type is 'interval'.
        - `timezone` string, nullable: IANA timezone used to evaluate the cron expression, e.g. 'UTC' or 'Europe/Istanbul'. Set only when the schedule type is 'cron'.
      - `path` string, nullable: The folder path of the query (e.g. "/analytics/dashboards"). Null if not in any folder.
      - `folderId` string, nullable: The ID of the folder containing this query. Null if not in any folder.

---

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