---
title: "List Workspace Notes"
method: GET
path: "/v1/external/workspaces/{workspaceGuid}/notes"
tags: ["Note"]
---

# List Workspace Notes

`GET /v1/external/workspaces/{workspaceGuid}/notes`

List the notes in a workspace with cursor-based pagination. This is the
workspace-scoped successor to the deprecated `GET /v1/external/notes`.

The API key must be scoped to the workspace in the path; a key bound to a
different workspace returns `403`.

Use `folderId` to scope the listing to a specific folder (recursive,
including descendant folders). Combine with `createdAtFrom` /
`createdAtTo` to bound the result by creation time.

## Path parameters

- `workspaceGuid` string, required

## Query parameters

- `cursor` string
- `size` integer
- `keyword` string
- `folderId` string
- `createdAtFrom` string, date-time
- `createdAtTo` string, date-time

## Response `200`

List of notes in the workspace

- object
  - `content` Note[], required — Array of items for current page
    - `guid` string, required — Unique identifier for the note
    - `workspaceGuid` string, nullable — GUID of the workspace this note belongs to. `null` for notes not associated with a workspace.
    - `title` string, required — Note title
    - `createdAt` string, date-time, required — ISO-8601 creation timestamp
    - `updatedAt` string, date-time, required — ISO-8601 last update timestamp
    - `sourceType` 'onboarding' | 'text' | 'live-voice' | 'recording' | 'offline-mode' | 'webpage' | 'video', required — Source type of the note: - `live-voice`: Real-time voice recording - `recording`: Uploaded audio file - `text`: Text-only note - `video`: Video recording - `webpage`: Web page content - `offline-mode`: Offline recording - `onboarding`: Onboarding sample note
    - `recordingStartAt` string, date-time, nullable — Actual recording start timestamp. Null for non-recording source types.
    - `recordingEndAt` string, date-time, nullable — Actual recording end timestamp. Null for non-recording source types.
    - `recordingDurationSeconds` integer, required — Actual recording length in seconds. Returns `0` for non-recording source types.
    - `transcribeLocale` string, nullable — Language locale used for transcription. Null for non-recording source types.
    - `translateLocale` string, nullable — Language locale used for translation. Null when no translation was requested.
    - `webUrl` string, uri, required — Web URL to access the note
    - `collaborators` Collaborator[], required — Array of collaborators with their roles
      - `guid` string, required — Unique identifier for the collaborator
      - `name` string, required — Collaborator's name
      - `email` string, email, required — Collaborator's email address
      - `role` 'OWNER' | 'EDITOR' | 'VIEWER', required — Collaborator's role
    - `participants` Participant[], required — Array of meeting participants tagged in the note
      - `name` string, nullable — Participant's name. Null when the name was not provided or is blank.
      - `email` string, email, nullable — Participant's email address. Null when the email was not provided or is blank.
    - `matchedSnippets` string[], nullable — Highlight snippets for the keyword that matched this note. Present only on responses to the deep-search endpoints (`POST /v1/external/workspaces/{workspaceGuid}/notes/search` or the deprecated `POST /v1/external/notes/search`); absent (`null`) on plain list responses.
    - `documents` NoteDocument[], nullable — Note's primary documents (one-pager / custom). Present only on responses to the deep-search endpoints (`POST /v1/external/workspaces/{workspaceGuid}/notes/search` or the deprecated `POST /v1/external/notes/search`); absent (`null`) on plain list responses. Each item's `truncated` flag indicates whether the deep-search budget was exceeded.
      - `id` integer, required — Document ID
      - `noteGuid` string, required — The GUID of the note this document belongs to
      - `note` NoteRef, required — Note reference with minimal information
        - `guid` string, required — Note GUID
        - `webUrl` string, uri, required — Web URL to access the note
      - `template` NoteDocumentTemplateSummary, required — Summary information of a note document template
        - `id` integer, required — Template ID
        - `title` string, required — Template title
      - `locale` 'ko_KR' | 'en_US' | 'de_DE' | 'ja_JP' | 'es_ES' | 'fr_FR' | 'id_ID' | 'vi_VN' | 'tr_TR' | 'uk_UA' | 'ru_RU' | 'hi_IN' | 'it_IT' | 'zh_CN' | 'ms_MY' | 'th_TH' | 'sv_SE', required — Supported language locale
      - `sections` NoteDocumentSection[], required — Array of document sections
        - `content` object, required — Generated section content
          - `type` 'text/plain' | 'text/markdown', required — MIME type of the text content
          - `content` string, required — The actual text content
        - `createdAt` string, date-time, required — Section creation timestamp
      - `createdAt` string, date-time, required — Document creation timestamp
      - `updatedAt` string, date-time, required — Document last update timestamp
      - `truncated` boolean — `true` when the document was emitted as part of a deep-search response and its combined section text exceeded the search budget (5,000 chars). Plain document fetches always emit `false`.
  - `nextCursor` string, nullable, required — Cursor for next page, null if last page

## Other responses

- `401` — Unauthorized — missing or invalid API key
- `403` — Forbidden — the API key is not scoped to this workspace
- `500` — Internal server error

---

[API](https://skmtc.net/tiro/apis/tiro-api.md) · [All operations](https://skmtc.net/tiro/apis/tiro-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tiro/tiro-api/revisions/ae18d7961aa4/schema)
