> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tiro.ooo/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Folder Tree

> Retrieve the workspace folder hierarchy as a nested tree.

Requires a **user** API key. The tree contains only folders you can access.
When a folder's parent is not accessible to you, the folder appears at the
root level of the tree instead.




## OpenAPI

````yaml /openapi.yaml get /v1/external/workspaces/{workspaceGuid}/folders/tree
openapi: 3.1.0
info:
  title: Tiro API
  description: AI-powered note-taking and voice file processing API
  version: 1.0.0
  contact:
    name: Tiro Support
    email: support@tiro.ooo
    url: https://tiro.ooo
servers:
  - url: https://api.tiro.ooo
    description: Production server
security:
  - BearerAuth: []
tags:
  - name: Note
    description: Operations for managing notes and their paragraphs
  - name: Note Share Link
    description: Manage share links for notes
  - name: Note Summary
    description: Operations for retrieving note summaries
  - name: Note Document
    description: Template-based document generation from notes
  - name: Note Document Template
    description: Operations for managing note document templates
  - name: Folder
    description: Operations for retrieving folders
  - name: Voice File
    description: Operations for voice file processing
  - name: Word Memory
    description: >
      Manage word memories to improve voice transcription accuracy. Register
      important terms like company names, people's names, and product names so
      Tiro recognizes them precisely during recording. Each term has an `entry`
      and an optional `subEntry` (an alternate spelling or notation). Personal
      (User), workspace-shared (Workspace), and organization-shared
      (Organization) word memories are managed separately, and each scope
      supports bulk create/update/delete (up to 1000 items per request).
  - name: Wiki
    description: |
      Access workspace wikis — unified knowledge graphs built from notes.
      Requires a workspace with wiki plan and activation enabled.
  - name: Organization
    description: >
      Endpoints for organization API keys. An organization key is issued by an

      organization admin, carries fixed scopes chosen at issuance, and can reach

      the notes in every workspace that belongs to the organization. Built for

      server-to-server integrations such as CRM sync — receive `note.ended`
      webhook

      events, generate documents for notes, and reconcile with the organization

      notes list.
  - name: Organization Management
    description: Operations for the authenticated user's organization.
paths:
  /v1/external/workspaces/{workspaceGuid}/folders/tree:
    get:
      tags:
        - Folder
      summary: Get Folder Tree
      description: >
        Retrieve the workspace folder hierarchy as a nested tree.


        Requires a **user** API key. The tree contains only folders you can
        access.

        When a folder's parent is not accessible to you, the folder appears at
        the

        root level of the tree instead.
      operationId: getWorkspaceFolderTree
      parameters:
        - name: workspaceGuid
          in: path
          required: true
          description: Workspace GUID. Obtain it from `GET /v1/external/workspaces`.
          schema:
            type: string
          example: ws_a1b2c3d4
      responses:
        '200':
          description: Folder tree
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SimpleListResponse'
                  - type: object
                    properties:
                      content:
                        type: array
                        items:
                          $ref: '#/components/schemas/FolderTreeNode'
              example:
                content:
                  - id: '12300'
                    title: Team Root
                    parentId: null
                    depth: 0
                    isAccessible: true
                    children:
                      - id: '12345'
                        title: Weekly Team Meetings
                        parentId: '12300'
                        depth: 1
                        isAccessible: true
                        children: []
        '401':
          description: Unauthorized — missing API key, or a team-only key was used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — you are not a member of this workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    SimpleListResponse:
      type: object
      required:
        - content
      properties:
        content:
          type: array
          items: {}
          description: Array of items
    FolderTreeNode:
      type: object
      required:
        - id
        - title
        - depth
        - isAccessible
        - children
      properties:
        id:
          type: string
          description: Unique identifier for the folder
          example: '12345'
        title:
          type: string
          description: Folder title
          example: Weekly Team Meetings
        parentId:
          type: string
          nullable: true
          description: >
            Parent folder ID. `null` for root-level folders, or when the parent

            folder is not accessible to you — the folder then appears at the
            root

            level of the tree.
          example: '12300'
        depth:
          type: integer
          description: Depth of the node in the returned tree (0 for root-level nodes)
          example: 0
        isAccessible:
          type: boolean
          description: >
            Whether you can access this folder's contents. The tree contains
            only

            folders you can access, so this is currently always `true`.
          example: true
        children:
          type: array
          description: Child folders, nested recursively.
          items:
            $ref: '#/components/schemas/FolderTreeNode'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - errorType
            - message
          properties:
            code:
              type: integer
              description: >
                6-digit error code in `AAABBB` form: first 3 digits match the
                HTTP status,

                last 3 digits are a per-status serial (e.g. `404018`). Use only
                when you need

                to distinguish specific error cases within the same HTTP status
                — values may be

                added or renumbered across releases. For general client
                branching, prefer `errorType`.
              example: 404018
            errorType:
              type: string
              description: >
                Stable, coarse-grained error category. Recommended default for
                client-side

                branching: the value-to-status mapping is part of the API
                contract and will not

                change without a breaking-change notice. Typical use:
                  - `unauthorized` → trigger re-authentication
                  - `forbidden` → surface a permission error to the user
                  - `not_found` → treat as missing resource
                  - `too_many_requests` → back off and retry
                  - `internal_error` → retry with exponential backoff
              enum:
                - bad_request
                - unauthorized
                - forbidden
                - not_found
                - not_acceptable
                - conflict
                - payload_too_large
                - unprocessable_entity
                - too_many_requests
                - internal_error
              example: not_found
            message:
              type: string
              description: >-
                Human-readable error message. Not stable; do not use for
                branching.
              example: 'No team found for user #217'
            detail:
              type: string
              nullable: true
              description: Additional error details
              example: null
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key in format {id}.{secret}

````