> ## Documentation Index
> Fetch the complete documentation index at: https://developer.vanta.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create document resource

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



## OpenAPI

````yaml /reference/manage-vanta.json post /knowledge-base/resources/documents
openapi: 3.0.0
info:
  title: Manage Vanta
  version: 1.0.0
  description: >-
    The REST API lets customers query and mutate Vanta's data. Use this API to
    automate bulk actions, query data for custom workflows and dashboards, and
    bolster your security operations


    **Note for Vanta Gov (FedRAMP) customers:** Select `Vanta Gov (FedRAMP)`
    from the server dropdown to issue requests against
    `https://api.vanta-gov.com`. The OAuth token URL shown below defaults to the
    commercial host — replace it with `https://api.vanta-gov.com/oauth/token`.
  termsOfService: https://www.vanta.com/terms
  license:
    name: UNLICENSED
  contact:
    name: API Support
    url: https://help.vanta.com/
    email: support@vanta.com
servers:
  - url: https://api.vanta.com/v1
    description: Vanta (Commercial)
  - url: https://api.vanta-gov.com/v1
    description: Vanta Gov (FedRAMP)
security: []
paths:
  /knowledge-base/resources/documents:
    post:
      tags:
        - Knowledge Base
      summary: Create document resource
      description: >-
        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).
      operationId: CreateDocumentResource
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                title:
                  type: string
                  minLength: 1
                  description: Title of the document resource.
                description:
                  type: string
                  description: Description of the document resource.
                ownerAssignment:
                  type: string
                  description: >-
                    Owner to assign as a JSON string:
                    {"type":"User","id":"<id>"}.
                customerVisibility:
                  type: string
                  description: >-
                    Customer visibility on the Trust Center: PRIVATE | SHAREABLE
                    | REQUEST_ACCESS | PUBLIC.
                downloadPermission:
                  type: string
                  description: >-
                    Trust Center download permission: VIEW_ONLY |
                    VIEW_AND_DOWNLOAD.
                isUsedInQuestionnaires:
                  type: string
                  description: >-
                    Whether to use this resource for Questionnaire Automation
                    answer generation ("true" / "false").
                expirationDate:
                  type: string
                  description: Expiration date in ISO 8601.
                tags:
                  type: string
                  description: >-
                    Tags as a JSON array:
                    [{"categoryId":"<id>","tagId":"<id>"}].
                categoryId:
                  type: string
                  description: >-
                    Trust Center category id to associate this resource with.
                    Only

                    applied when `customerVisibility` is `REQUEST_ACCESS` or
                    `PUBLIC`;

                    other visibilities don't place the resource on the Trust
                    Center, so

                    the category is ignored. Pass an unknown id to fall back to

                    uncategorized.
              required:
                - file
                - title
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeBaseDocumentResourceOutput'
              examples:
                Example 1:
                  value:
                    id: 507f1f77bcf86cd799439021
                    type: FILE
                    title: SOC 2 Type II Report
                    description: Annual SOC 2 Type II report covering 2024.
                    fileUrl: >-
                      https://vanta-uploaded-documents.s3.amazonaws.com/507f1f77bcf86cd799439021?X-Amz-Expires=3600&X-Amz-Signature=...
                    customerVisibility: REQUEST_ACCESS
                    downloadPermission: VIEW_AND_DOWNLOAD
                    isUsedInQuestionnaires: true
                    ownerAssignment:
                      type: User
                      id: 507f1f77bcf86cd799439041
                      displayName: Alex Rivera
                    expirationStatus: CURRENT
                    expirationDate: '2025-12-31T00:00:00.000Z'
                    lastUpdated: '2024-12-15T17:42:11.000Z'
                    lastVerified: '2024-12-20T09:00:00.000Z'
                    tags:
                      - categoryId: 507f1f77bcf86cd799439011
                        tagId: 507f1f77bcf86cd799439013
                    categoryId: 507f1f77bcf86cd799439051
      security:
        - bearerAuth: []
components:
  schemas:
    KnowledgeBaseDocumentResourceOutput:
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - FILE
          nullable: false
        title:
          type: string
        description:
          type: string
          nullable: true
        fileUrl:
          type: string
          description: >-
            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:
          type: string
          enum:
            - PRIVATE
            - SHAREABLE
            - REQUEST_ACCESS
            - PUBLIC
            - null
          nullable: true
        downloadPermission:
          type: string
          enum:
            - VIEW_ONLY
            - VIEW_AND_DOWNLOAD
            - null
          nullable: true
        isUsedInQuestionnaires:
          type: boolean
          nullable: true
        ownerAssignment:
          allOf:
            - $ref: '#/components/schemas/KnowledgeBaseResourceActorAssignment'
          nullable: true
        expirationStatus:
          $ref: '#/components/schemas/KnowledgeBaseExpirationStatus'
        expirationDate:
          type: string
          nullable: true
        lastUpdated:
          type: string
        lastVerified:
          type: string
          nullable: true
        tags:
          items:
            $ref: '#/components/schemas/TagInput'
          type: array
        categoryId:
          type: string
          nullable: true
          description: >-
            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).
      required:
        - id
        - type
        - title
        - description
        - fileUrl
        - customerVisibility
        - downloadPermission
        - isUsedInQuestionnaires
        - ownerAssignment
        - expirationStatus
        - expirationDate
        - lastUpdated
        - lastVerified
        - tags
        - categoryId
      type: object
      additionalProperties: false
    KnowledgeBaseResourceActorAssignment:
      properties:
        type:
          type: string
          enum:
            - User
            - Team
        id:
          type: string
        displayName:
          type: string
          nullable: true
      required:
        - type
        - id
        - displayName
      type: object
      additionalProperties: false
    KnowledgeBaseExpirationStatus:
      type: string
      enum:
        - CURRENT
        - EXPIRED
      description: |-
        Customer-facing expiration status used by knowledge-base API responses
        (answer library entries and resources). Derived from the persisted
        `expiresAt` field at read time.
    TagInput:
      properties:
        categoryId:
          type: string
        tagId:
          type: string
      required:
        - categoryId
        - tagId
      type: object
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````