---
title: "Update record"
method: PUT
path: "/knowledgeBase/record/{recordId}"
tags: ["Knowledge Base"]
---

# Update record

`PUT /knowledgeBase/record/{recordId}`

Update a record's name and/or file content.

**Overview:**

Allows updating the display name and optionally replacing the file content. Triggers re-indexing when content changes.

**Required permission:**

WRITER or higher

**Updating file content:**

Include a new file in the request to replace the existing content. The file extension must match the original.

**Side effects:**

- Updates `updatedAtTimestamp`
- Increments version if file content changed
- Triggers re-indexing for content changes

## Path parameters

- `recordId` string, required

## Response `200`

Record updated successfully

- object — Fields merged into successful record-update responses (Node gateway and Local KB connector).
  - `success` boolean
  - `message` string
  - `record` Record — A record represents a single document, file, or content item within a knowledge base. Records can originate from file uploads or external connectors (Google Drive, OneDrive, etc.).
    - `id` string — Unique record identifier (UUID format)
    - `recordName` string, required — Display name of the record
    - `name` string — Display name (alias for recordName)
    - `externalRecordId` string — External storage document ID (links to Storage module)
    - `recordType` 'FILE' | 'DRIVE' | 'WEBPAGE' | 'DATABASE' | 'DATASOURCE' | 'MESSAGE' | 'MAIL' | 'GROUP_MAIL' | 'TICKET' | 'COMMENT' | 'INLINE_COMMENT' | 'CONFLUENCE_PAGE' | 'CONFLUENCE_BLOGPOST' | 'SHAREPOINT_PAGE' | 'SHAREPOINT_LIST' | 'SHAREPOINT_LIST_ITEM' | 'SHAREPOINT_DOCUMENT_LIBRARY' | 'LINK' | 'PROJECT' | 'PULL_REQUEST' | 'MEETING' | 'PRODUCT' | 'DEAL' | 'CASE' | 'TASK' | 'ARTIFACT' | 'CODE_FILE' | 'SQL_TABLE' | 'SQL_VIEW' | 'OTHERS', required — Type of content. Mirrors the backend `RecordType` enum (`backend/python/app/models/entities.py`); connector-sourced records may use any of the connector-specific types below. - FILE: Uploaded or synced documents (PDF, DOCX, etc.) - DRIVE: Drive/folder container (Google Drive, OneDrive, etc.) - WEBPAGE: Web pages crawled or bookmarked - DATABASE: Database object (e.g. Notion database) - DATASOURCE: Data source object - MESSAGE: Chat/messaging content (Slack, Teams) - MAIL: Email messages (Gmail, Outlook) - GROUP_MAIL: Group/shared mailbox email messages - TICKET: Support/issue tickets (Jira, ServiceNow) - COMMENT: Comments from collaboration tools - INLINE_COMMENT: Inline comments anchored to content (e.g. Confluence) - CONFLUENCE_PAGE: Confluence page - CONFLUENCE_BLOGPOST: Confluence blog post - SHAREPOINT_PAGE: SharePoint page - SHAREPOINT_LIST: SharePoint list - SHAREPOINT_LIST_ITEM: SharePoint list item - SHAREPOINT_DOCUMENT_LIBRARY: SharePoint document library - LINK: Web link / bookmark - PROJECT: Project entity (e.g. Jira project) - PULL_REQUEST: Source-control pull request - MEETING: Meeting record (e.g. Zoom) - PRODUCT: Product entity (CRM) - DEAL: Deal/opportunity entity (CRM) - CASE: Case entity (CRM/support) - TASK: Task entity - ARTIFACT: Generated/derived artifact - CODE_FILE: Source-code file - SQL_TABLE: SQL table object - SQL_VIEW: SQL view object - OTHERS: Miscellaneous content types
    - `origin` 'UPLOAD' | 'CONNECTOR', required — Source of the record: - UPLOAD: Manually uploaded via API/UI - CONNECTOR: Synced from external connector
    - `connectorId` string — ID of the connector that synced this record (null for uploads)
    - `connectorName` 'DRIVE' | 'DRIVE WORKSPACE' | 'GMAIL' | 'GMAIL WORKSPACE' | 'CALENDAR' | 'ONEDRIVE' | 'SHAREPOINT ONLINE' | 'OUTLOOK' | 'OUTLOOK PERSONAL' | 'OUTLOOK CALENDAR' | 'MICROSOFT TEAMS' | 'NOTION' | 'SLACK' | 'SLACK WORKSPACE' | 'KB' | 'CONFLUENCE' | 'CONFLUENCE DATA CENTER' | 'CONFLUENCE DATA CENTER PERSONAL' | 'JIRA' | 'JIRA PERSONAL' | 'JIRA DATA CENTER' | 'JIRA DATA CENTER PERSONAL' | 'BOX' | 'NEXTCLOUD' | 'DROPBOX' | 'DROPBOX PERSONAL' | 'WEB' | 'BOOKSTACK' | 'GITHUB' | 'SERVICENOW' | 'SALESFORCE' | 'S3' | 'MINIO' | 'GCS' | 'AZURE BLOB' | 'AZURE FILES' | 'LINEAR' | 'ZAMMAD' | 'ZOOM' | 'GITLAB' | 'GITLAB PERSONAL' | 'SNOWFLAKE' | 'POSTGRESQL' | 'MARIADB' | 'UNKNOWN' | 'RSS' | 'LOCAL_FS' | 'CODING_SANDBOX' | 'DATABASE_SANDBOX' | 'IMAGE_GENERATION' | 'ATTACHMENTS' — Name of the source connector. Mirrors the values of the backend `Connectors` enum (`backend/python/app/config/constants/arangodb.py`); records store the enum value (e.g. Google Drive is `DRIVE`, SharePoint Online is `SHAREPOINT ONLINE`), not the enum member name.
    - `orgId` string, required — Organization ID that owns this record
    - `kbId` string — Knowledge base ID containing this record
    - `folderId` string, nullable — Parent folder ID (null if at KB root)
    - `version` integer — Current version number (increments on updates)
    - `isLatestVersion` boolean — Whether this is the latest version
    - `createdAtTimestamp` integer — Creation timestamp in milliseconds
    - `updatedAtTimestamp` integer — Last update timestamp in milliseconds
    - `sourceCreatedAtTimestamp` integer — Source creation timestamp (from connector)
    - `sourceLastModifiedTimestamp` integer — Source last modified timestamp (from connector)
    - `indexingStatus` 'NOT_STARTED' | 'PAUSED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'FILE_TYPE_NOT_SUPPORTED' | 'AUTO_INDEX_OFF' | 'EMPTY' | 'ENABLE_MULTIMODAL_MODELS' | 'QUEUED' — Current indexing/processing status: - NOT_STARTED: Awaiting indexing - QUEUED: In indexing queue - IN_PROGRESS: Currently being indexed - COMPLETED: Successfully indexed and searchable - FAILED: Indexing failed (check error details) - PAUSED: Indexing paused by user - FILE_TYPE_NOT_SUPPORTED: Unsupported file format - AUTO_INDEX_OFF: Auto-indexing disabled for this record - EMPTY: File has no extractable content - ENABLE_MULTIMODAL_MODELS: Requires multimodal AI models
    - `isDeleted` boolean — Soft delete flag
    - `isArchived` boolean — Archive flag for inactive records
    - `webUrl` string, uri — Direct URL to access the original content
    - `mimeType` string — MIME type of the file content
    - `sizeInBytes` integer — File size in bytes
    - `extension` string — File extension (without dot)
    - `sha256Hash` string — SHA-256 hash for content deduplication
    - `type` string — Node type identifier
    - `fileRecord` object, nullable — File-specific metadata (present when recordType is FILE)
      - `id` string
      - `name` string
      - `extension` string
      - `mimeType` string
      - `sizeInBytes` integer
      - `webUrl` string
      - `path` string, nullable
      - `isFile` boolean
    - `mailRecord` object, nullable — Email-specific metadata (present when recordType is MAIL or GROUP_MAIL)
    - `ticketRecord` object, nullable — Ticket-specific metadata (present when recordType is TICKET)
  - `timestamp` integer — Epoch milliseconds when the response was generated
  - `fileUpdated` boolean
  - `location` 'kb_root' | 'folder'
  - `kb` object
  - `userPermission` string

## Other responses

- `400` — Invalid request parameters
- `401` — Missing, invalid, expired, or revoked authentication
- `403` — OAuth token is missing the required kb:write scope
- `404` — Record not found
- `500` — Internal server error while updating record
- `503` — Connector service unavailable or connection refused

---

[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)
