---
title: "List all knowledge bases"
method: GET
path: "/knowledgeBase"
tags: ["Knowledge Base"]
---

# List all knowledge bases

`GET /knowledgeBase`

Retrieve a paginated list of all knowledge bases accessible to the authenticated user.

**Overview:**

Returns knowledge bases where the user has at least READER permission. Results include the user's role for each KB.

**Filtering:**

- **search:** Full-text search on KB names (max 1000 chars)
- **permissions:** Filter by user's role (comma-separated: OWNER, WRITER, READER)

**Sorting Options:**

- `name` — Alphabetical by KB name
- `createdAtTimestamp` — By creation date
- `updatedAtTimestamp` — By last modification
- `userRole` — By permission level

**Performance:**

Uses efficient pagination with limit/offset. For large result sets, use smaller page sizes.

**Query parameters:**

Only `page`, `limit`, `search`, `permissions`, `sortBy`, and `sortOrder` are allowed; unknown query keys are rejected.

## Query parameters

- `page` integer
- `limit` integer
- `search` string
- `permissions` string
- `sortBy` 'name' | 'createdAtTimestamp' | 'updatedAtTimestamp' | 'userRole'
- `sortOrder` 'asc' | 'desc'

## Response `200`

Successful operation

- GetAllKnowledgeBaseResponseSchema — Response returned by GET /knowledgeBase (listKnowledgeBases).
  - `knowledgeBases` object[], required
    - `id` string, required
    - `name` string, required
    - `connectorId` string, nullable, required
    - `createdAtTimestamp` integer, required
    - `updatedAtTimestamp` integer, required
    - `createdBy` string, required
    - `userRole` 'OWNER' | 'WRITER' | 'READER', required
    - `folders` object[], required
      - `id` string, required
      - `name` string, required
      - `createdAtTimestamp` integer
      - `path` string
  - `pagination` object, required
    - `page` integer, required
    - `limit` integer, required
    - `totalCount` integer, required
    - `totalPages` integer, required
    - `hasNext` boolean, required
    - `hasPrev` boolean, required
  - `filters` object, required
    - `applied` object, required — Active filters. Empty `{}` when defaults. Keys use snake_case for sort fields (backend convention in kb_service.py).
      - `search` string
      - `permissions` string[]
      - `sort_by` 'name' | 'createdAtTimestamp' | 'updatedAtTimestamp' | 'userRole'
      - `sort_order` 'asc' | 'desc'
    - `available` object, required
      - `permissions` string[], required
      - `sortFields` string[], required
      - `sortOrders` string[], required

## Other responses

- `400` — **Invalid query parameters:** - `page` not a positive integer - `limit` not between 1 and 100 - Unknown query parameter (only `page`, `limit`, `search`, `permissions`, `sortBy`, `sortOrder` allowed) - Invalid `sortBy` or `sortOrder` - Invalid `permissions` role token - `search` too long, or contains HTML/scripts/format specifiers - Connector returned a 400 error
- `401` — Unauthorized — valid bearer token required
- `403` — Forbidden. Possible reasons: - OAuth token lacks the `kb:read` scope - Connector service denied the request
- `404` — User not found — authenticated user does not exist in the graph database
- `500` — Internal server error — listing knowledge bases failed in connector or database
- `503` — Service unavailable — connector service is unreachable

---

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