---
title: "Retrieve the complete list of folders in your workspace. Use this endpoint to see the entire folder hierarchy - including subfolders and unassigned profiles."
method: GET
path: "/folders"
tags: ["Folder"]
---

# Retrieve the complete list of folders in your workspace. Use this endpoint to see the entire folder hierarchy - including subfolders and unassigned profiles.

`GET /folders`

## Request

- Base URL: `http://localhost:5050`
- URL: `http://localhost:5050/folders`
- Auth: none declared
- TypeScript: <https://skmtc.dev/kameleo-io/apis/kameleo-local-api/docs/folders/get.ts> (a function with typed inputs; its response is checked against the schema)

## Response `200`

OK.

- ListFoldersResponse
  - `folders` FolderResponse[], required: List of top-level folders, each folder may contain nested folders and cloud profiles.
    - `id` string, uuid, required: A unique identifier of the folder.
    - `name` string, required: The name of the folder.
    - `lastModifiedAt` string, date-time, required: Timestamp of the last modification.
    - `lastModifiedBy` string, required: Name of the user who last modified the folder.
    - `createdAt` string, date-time, required: Timestamp of the creation.
    - `createdBy` string, required: Name of the user who created the folder.
    - `profiles` ProfilePreview[], required: List of profiles in the current folder.
      - `id` string, uuid, required: A unique identifier of the profile
      - `name` string, required: The name of the profile
      - `tags` string[], required: Profile tags
      - `proxy` ProxyChoice, required
        - `value` 'none' | 'http' | 'socks5' | 'ssh', required: Proxy connection settings of the profiles. Possible values: 'none': Direct connection without any proxy. 'http': Use a HTTP proxy for upstream communication. 'socks5': Use a SOCKS5 proxy for upstream communication. 'ssh': Use an SSH connection for upstream communication. Basically a SOCKS5 proxy created at the given SSH host.
        - `extra` Server: Represents a server connection. It can be used as a proxy server connection as well.
          - `host` string, required: Gets or sets the hostname where the service is provided from.
          - `port` integer, required: Gets or sets the port where the service is provided from.
          - `id` string, nullable: Gets or sets the identity information provided for the service. This could be a custom id or username or anything which identifies a resource on the remote service. Use it as a proxy username. This field is optional.
          - `secret` string, nullable: Gets or sets the shared secret between the client and the service provider. Use it as a proxy password. This field is optional.
      - `createdAt` string, date-time, required: Date when the profile was created.
      - `device` Device, required
        - `type` string, required: Type of the device. Possible values are: 'desktop', 'mobile'.
        - `name` string, nullable: Name of the device. This is only available for mobile profiles.
      - `os` Os, required
        - `family` string, required: Specifies the operating system family. Possible values are 'windows', 'macos', 'linux', 'android', 'ios'.
        - `version` string, required: The specific version of the OS. For example it helps you determine the exact version of the macOS.
        - `platform` string, required: The OS's platform, indicating the processor architecture (e.g., 64-bit, 32-bit)
      - `browser` Browser, required
        - `product` string, required: Product of the browser. Possible values are 'chrome', 'firefox', 'edge', 'safari'.
        - `major` integer, required: Major version of the browser.
        - `version` string, required: Exact version of the browser.
      - `language` string, required: A language or a comma-separated list of languages for the profile. ISO 639-1 language and optionally ISO 3166-1 region code.
      - `status` StatusResponse, required: Status information about the profile
        - `lifetimeState` 'created' | 'starting' | 'running' | 'terminating' | 'terminated' | 'locked' | 'loading' | 'unknown', required: Represents the lifetime states of a profile, indicating which actions can be performed with the associated browser engine at each state. Possible values are: - Created: Profile is created; the associated browser engine is not started. - Starting: The associated browser engine is starting. - Running: The associated browser engine is currently running. - Terminating: The associated browser engine is in the process of terminating. - Terminated: The associated browser engine is not running but has been started at least once. - Locked: The profile is currently being used by another user. - Loading: The profile data or the browser engine is syncing with the cloud storage. - Unknown: State of the profile is undefined.
      - `storage` 'local' | 'cloud'
      - `folderId` string, uuid, nullable: A unique identifier of the containing folder, or empty (00000000-0000-0000-0000-000000000000) if not in a folder. This will always be empty for locally stored profiles, as only cloud profiles can be added to folders.
    - `shareAccesses` ShareAccess[], required: List of users accessing this folder.
      - `user` User, required
        - `id` string, uuid, required: Unique identifier of the user.
        - `name` string, required: Dispaly name of the user.
        - `email` string, required: Email address of the user.
      - `role` GroupRole, required
        - `id` string, uuid, required: Unique identifier of the role.
        - `name` string, required: Name of the role.
        - `description` string, required: Description of the role.
      - `sharedAt` string, date-time, required: Timestamp when the acess was granted to the user.
  - `profiles` ProfilePreview[], required: List of profiles not associated with any folder. This includes both cloud and local profiles.
    - `id` string, uuid, required: A unique identifier of the profile
    - `name` string, required: The name of the profile
    - `tags` string[], required: Profile tags
    - `proxy` ProxyChoice, required
      - `value` 'none' | 'http' | 'socks5' | 'ssh', required: Proxy connection settings of the profiles. Possible values: 'none': Direct connection without any proxy. 'http': Use a HTTP proxy for upstream communication. 'socks5': Use a SOCKS5 proxy for upstream communication. 'ssh': Use an SSH connection for upstream communication. Basically a SOCKS5 proxy created at the given SSH host.
      - `extra` Server: Represents a server connection. It can be used as a proxy server connection as well.
        - `host` string, required: Gets or sets the hostname where the service is provided from.
        - `port` integer, required: Gets or sets the port where the service is provided from.
        - `id` string, nullable: Gets or sets the identity information provided for the service. This could be a custom id or username or anything which identifies a resource on the remote service. Use it as a proxy username. This field is optional.
        - `secret` string, nullable: Gets or sets the shared secret between the client and the service provider. Use it as a proxy password. This field is optional.
    - `createdAt` string, date-time, required: Date when the profile was created.
    - `device` Device, required
      - `type` string, required: Type of the device. Possible values are: 'desktop', 'mobile'.
      - `name` string, nullable: Name of the device. This is only available for mobile profiles.
    - `os` Os, required
      - `family` string, required: Specifies the operating system family. Possible values are 'windows', 'macos', 'linux', 'android', 'ios'.
      - `version` string, required: The specific version of the OS. For example it helps you determine the exact version of the macOS.
      - `platform` string, required: The OS's platform, indicating the processor architecture (e.g., 64-bit, 32-bit)
    - `browser` Browser, required
      - `product` string, required: Product of the browser. Possible values are 'chrome', 'firefox', 'edge', 'safari'.
      - `major` integer, required: Major version of the browser.
      - `version` string, required: Exact version of the browser.
    - `language` string, required: A language or a comma-separated list of languages for the profile. ISO 639-1 language and optionally ISO 3166-1 region code.
    - `status` StatusResponse, required: Status information about the profile
      - `lifetimeState` 'created' | 'starting' | 'running' | 'terminating' | 'terminated' | 'locked' | 'loading' | 'unknown', required: Represents the lifetime states of a profile, indicating which actions can be performed with the associated browser engine at each state. Possible values are: - Created: Profile is created; the associated browser engine is not started. - Starting: The associated browser engine is starting. - Running: The associated browser engine is currently running. - Terminating: The associated browser engine is in the process of terminating. - Terminated: The associated browser engine is not running but has been started at least once. - Locked: The profile is currently being used by another user. - Loading: The profile data or the browser engine is syncing with the cloud storage. - Unknown: State of the profile is undefined.
    - `storage` 'local' | 'cloud'
    - `folderId` string, uuid, nullable: A unique identifier of the containing folder, or empty (00000000-0000-0000-0000-000000000000) if not in a folder. This will always be empty for locally stored profiles, as only cloud profiles can be added to folders.

## Other responses

- `default`: Error

## Changes

- **2026-08-03** `dc959e78ce25`: 1 warning
  - added the new `running_mobile_profiles_limit_reached` enum value to the `errorCode/allOf[#/components/schemas/ErrorCode]/` response property for the response status `default`
- **2026-06-16** `4d1d53a322e2`: 2 warning, 7 info
  - removed the optional property `code` from the response with the `default` status
  - removed the optional property `error` from the response with the `default` status
  - added the optional property `detail` to the response with the `default` status
  - added the optional property `errors` to the response with the `default` status
  - …5 more
- **2026-03-05** `7d950a98d019`: 3 breaking, 4 warning, 2 info
  - removed the required property `errorCode` from the response with the `default` status
  - removed the required property `status` from the response with the `default` status
  - removed the required property `title` from the response with the `default` status
  - removed the optional property `detail` from the response with the `default` status
  - …5 more

[Operation history](https://skmtc.dev/kameleo-io/apis/kameleo-local-api/changes/folders/get.md)

---

[API](https://skmtc.dev/kameleo-io/apis/kameleo-local-api.md) - [All operations](https://skmtc.dev/kameleo-io/apis/kameleo-local-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kameleo-io/apis/kameleo-local-api/revisions/d3225562612a?raw)
