---
title: "Replace document resource file"
method: POST
path: "/knowledge-base/resources/documents/{id}/upload"
tags: ["Knowledge Base"]
---

# Replace document resource file

`POST /knowledge-base/resources/documents/{id}/upload`

Replace the underlying file on a document (FILE-type) resource with
a new multipart upload. Other resource fields (title, description,
visibility, tags, owner, etc.) are unchanged — use PATCH for those.
Returns 404 for an unknown id or a URL-type resource.

Example: send `multipart/form-data` with a single `file` field (the
new document binary).

## Path parameters

- `id` string, required

## Response `200`

Ok

- KnowledgeBaseDocumentResourceOutput
  - `id` string, required
  - `type` 'FILE', required
  - `title` string, required
  - `description` string, nullable, required
  - `fileUrl` string, required — Presigned S3 URL for the underlying document. Expires after 1 hour due to AWS IAM Role limitations on presigned URL lifetimes. Re-fetch the resource to obtain a fresh URL once this one expires.
  - `customerVisibility` 'PRIVATE' | 'SHAREABLE' | 'REQUEST_ACCESS' | 'PUBLIC' | 'null', nullable, required
  - `downloadPermission` 'VIEW_ONLY' | 'VIEW_AND_DOWNLOAD' | 'null', nullable, required
  - `isUsedInQuestionnaires` boolean, nullable, required
  - `ownerAssignment` KnowledgeBaseResourceActorAssignment, required
    - `type` 'User' | 'Team', required
    - `id` string, required
    - `displayName` string, nullable, required
  - `expirationStatus` 'CURRENT' | 'EXPIRED', required — Customer-facing expiration status used by knowledge-base API responses (answer library entries and resources). Derived from the persisted `expiresAt` field at read time.
  - `expirationDate` string, nullable, required
  - `lastUpdated` string, required
  - `lastVerified` string, nullable, required
  - `tags` TagInput[], required
    - `categoryId` string, required
    - `tagId` string, required
  - `categoryId` string, nullable, required — Trust Center category id the resource is currently filed under, or `null` if uncategorized (or not on the Trust Center, which is the case for `PRIVATE` / `SHAREABLE` resources).

---

[API](https://skmtc.net/vanta/apis/build-integrations.md) · [All operations](https://skmtc.net/vanta/apis/build-integrations/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vanta/build-integrations/revisions/6c1f7590538b/schema)
