Filevine Documents API

Upload, list, and read documents attached to Filevine projects. Documents support folders, tags, versioning, locking, and optional sharing to the secure client portal.

OpenAPI Specification

filevine-documents-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Filevine Documents API
  description: >
    The Documents API manages the files and folders attached to a Filevine
    project. It supports listing the document tree, uploading new documents
    (with optional client-portal sharing), retrieving metadata, and
    downloading content. Documents support tags, versioning, and locking.
  version: '2.0'
  contact:
    name: Filevine API Support
    url: https://developer.filevine.io/
  license:
    name: Filevine Terms of Service
    url: https://www.filevine.com/terms-of-service/

servers:
  - url: https://api.filevine.io
    description: Filevine API Gateway (US)
  - url: https://api.filevineapp.ca
    description: Filevine API Gateway (Canada)

security:
  - BearerAuth: []

tags:
  - name: Documents
    description: Project documents and folders.

paths:
  /core/projects/{projectId}/documents:
    parameters:
      - name: projectId
        in: path
        required: true
        schema: { type: integer, format: int64 }
    get:
      summary: Filevine List Project Documents
      description: List documents in a project with optional folder, tag, and modified-since filters.
      operationId: listProjectDocuments
      tags: [Documents]
      parameters:
        - name: folderId
          in: query
          schema: { type: integer, format: int64 }
        - name: tag
          in: query
          schema: { type: string }
      responses:
        '200':
          description: A list of documents.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/DocumentList' }
    post:
      summary: Filevine Upload Project Document
      description: Upload a document into a project. Supports optional folder placement, tags, and client-portal sharing.
      operationId: uploadProjectDocument
      tags: [Documents]
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema: { $ref: '#/components/schemas/UploadDocumentRequest' }
      responses:
        '201':
          description: Document uploaded.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Document' }
  /core/documents/{documentId}:
    parameters:
      - name: documentId
        in: path
        required: true
        schema: { type: integer, format: int64 }
    get:
      summary: Filevine Get Document
      description: Retrieve a document's metadata by ID.
      operationId: getDocument
      tags: [Documents]
      responses:
        '200':
          description: Document found.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Document' }

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    Document:
      type: object
      properties:
        documentId: { type: integer, format: int64 }
        projectId: { type: integer, format: int64 }
        folderId: { type: integer, format: int64 }
        filename: { type: string }
        size: { type: integer }
        contentType: { type: string }
        tags:
          type: array
          items: { type: string }
        sharedToPortal: { type: boolean }
        version: { type: integer }
        uploadedBy: { type: integer, format: int64 }
        createdDate: { type: string, format: date-time }
        modifiedDate: { type: string, format: date-time }
    DocumentList:
      type: object
      properties:
        items:
          type: array
          items: { $ref: '#/components/schemas/Document' }
        hasMore: { type: boolean }
    UploadDocumentRequest:
      type: object
      required: [file]
      properties:
        file:
          type: string
          format: binary
        folderId: { type: integer, format: int64 }
        tags:
          type: array
          items: { type: string }
        sharedToPortal: { type: boolean }