---
title: "List documents"
method: GET
path: "/v1beta/documents"
tags: ["Documents"]
---

# List documents

`GET /v1beta/documents`

List documents with cursor-based pagination.

## Query parameters

- `page_token` string — Opaque pagination token from a previous response. Pass next_page_token or prev_page_token from a previous response to continue pagination. Empty or omitted for the first page.
- `page_size` integer — Maximum number of items to return per page (1-100). Default: 50.
- `created_by_id` string[] — Filter by creator ID(s) (user or bot). Returns documents matching ANY of the specified IDs. REST: ?created_by_id=user_01h2xcejqtf2nbrexx3vqjhp41 or ?created_by_id=user_xxx&created_by_id=bot_yyy
- `access_level` AccessLevel[] — Filter by access level(s). Returns documents matching ANY of the specified levels. REST: ?access_level=private or ?access_level=private&access_level=organization
- `processing_status` ProcessingStatus[] — Filter by processing status(es). Returns documents matching ANY of the specified statuses. REST: ?processing_status=ready or ?processing_status=processing&processing_status=ready
- `sort` string — Sort field and direction. Prefix with `-` for descending order. Allowed values: created_at, updated_at, name, last_viewed_at, last_shared_at. Default (omitted): created_at descending. REST: ?sort=last_viewed_at or ?sort=-name
- `query` string — Full-text search filter. Case-insensitive substring match on document name and description. REST: ?query=budget
- `ownership` DocumentOwnership[] — Ownership filter. Returns documents matching the specified ownership state. REST: ?ownership=owned or ?ownership=not_owned
- `trash_state` DocumentTrashState[] — Trash state filter. Returns documents matching the specified trash state. REST: ?trash_state=active or ?trash_state=trashed or ?trash_state=active&trash_state=trashed Default (omitted): active documents only.
- `organization_scope` boolean — Organization scope filter. When true, restrict to documents within the user's organization. REST: ?organization_scope=true
- `created.after` string, date-time

## Response `200`

Success

- ListDocumentsResponse — ListDocumentsResponse contains a page of documents.
  - `items` Document[] — List of documents.
    - `access_level` 'private' | 'organization' | 'public', required
    - `created_at` string, date-time, required — Timestamp when document was created.
    - `created_by` Subject, required — Subject is a lightweight reference to either a user or a bot. Used in embedded fields like created_by. For full details, call GetUser or GetBot with the subject's id. subject_type_matches_id_prefix // id prefix must match type (user_ for user, bot_ for bot)
      - `id` string, required — Unique ID. user_xxx for users, bot_xxx for bots.
      - `name` string, required — Display name of the user or bot.
      - `type` 'user' | 'bot', required
    - `current_version` VersionRef — VersionRef is a lightweight reference to a version.
      - `id` string, required — Version ID. Pattern: ver_[0-9a-hjkmnp-tv-z]{26}
    - `description` string, nullable — Optional document description.
    - `general_access` 'private' | 'organization' | 'public'
    - `id` string, required — Unique ID for the document. Pattern: doc_[0-9a-hjkmnp-tv-z]{26}
    - `last_viewed_at` string, date-time — Timestamp when the authenticated user last viewed this document. Absent if the user has never viewed it.
    - `permission_set` DocumentPermissionSet — DocumentPermissionSet contains the permissions the authenticated user has on a document.
      - `attach_policy` boolean
      - `comment_private` boolean
      - `comment_public` boolean
      - `copy_content` boolean
      - `create_version` boolean
      - `export` boolean
      - `grant_access` boolean
      - `list_versions` boolean
      - `manage_access` boolean
      - `open` boolean
      - `screenshot` boolean
      - `trash` boolean
      - `view` boolean
      - `view_analytics` boolean
      - `view_leads` boolean
      - `view_timeline` boolean
    - `processing_status` 'processing' | 'ready' | 'failed', required
    - `shared_at` string, date-time — Timestamp when this document was last shared to the authenticated user. Absent if the document was never shared to them.
    - `thumbnail_url` string — URL of the document thumbnail image.
    - `title` string, required — Document title.
    - `trashed_at` string, date-time — Timestamp when the document was trashed, if applicable. Absent if the document is not trashed.
    - `updated_at` string, date-time — Timestamp when document was last updated.
    - `url` string, uri, required — URL for accessing the document on Factify.
  - `pagination` Pagination, required — Pagination contains cursor-based pagination metadata. Follows Google AIP-158 for pagination field naming.
    - `has_more` boolean — Whether there are more results in the forward direction.
    - `next_page_token` string — Token to retrieve the next page of results. Empty if there are no more results in the forward direction.
    - `prev_page_token` string — Token to retrieve the previous page of results. Empty if this is the first page.

## Other responses

- `400` — Invalid request parameters
- `401` — Authentication failed - missing or invalid API key
- `403` — Authorization failed - valid key but insufficient permissions
- `404` — Resource not found
- `429` — Too many requests
- `500` — Internal server error

## Changes

- **2026-03-05** `7af5ad1239eb` — 12 info
  - added the new optional `query` request parameter `organization_scope`
  - added the new optional `query` request parameter `ownership`
  - added the new optional `query` request parameter `query`
  - added the new optional `query` request parameter `sort`
  - …8 more
- **2026-03-05** `29ea2ae22abf` — 2 warning
  - for the `query` request parameter `access_level`, the type of property `items/` changed from `string` to no type
  - for the `query` request parameter `processing_status`, the type of property `items/` changed from `string` to no type
- **2026-03-05** `a7e69986914e` — 2 warning, 4 info
  - added the new `bot` enum value to the `items/items/created_by/type` response property for the response status `200`
  - added the new `user` enum value to the `items/items/created_by/type` response property for the response status `200`
  - added discriminator to `items/items/created_by` response property for the response status `200`
  - removed the `service_account` enum value from the `items/items/created_by/type` response property for the response status `200`
  - …2 more

[Change history](https://skmtc.dev/factify-inc/apis/factify-api/changes/v1beta/documents/get.md)

---

[API](https://skmtc.dev/factify-inc/apis/factify-api.md) · [All operations](https://skmtc.dev/factify-inc/apis/factify-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/factify-inc/factify-api/revisions/cdb52094cca9/schema)
