---
title: "Create document resource"
method: POST
path: "/knowledge-base/resources/documents"
tags: ["Knowledge Base"]
---

# Create document resource

`POST /knowledge-base/resources/documents`

Create a document (FILE-type) resource in the Trust Knowledge Base.
Accepts the document as a multipart/form-data upload.

Example: send `multipart/form-data` with a required `file` (e.g. PDF)
and `title`; optional fields include `description`, `customerVisibility`,
`downloadPermission`, `isUsedInQuestionnaires` ("true"/"false"),
`expirationDate` (ISO 8601), `tags` (JSON array string), `categoryId`,
and `ownerAssignment` (JSON object string).

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