Filevine Projects API

List, create, read, and update Filevine projects (matters/cases). Each project belongs to a project type, carries a primary client contact, has a phase, and a customizable set of sections and fields. The Projects API is the spine of Filevine integrations and is the parent surface for documents, notes, deadlines, tasks, and time entries.

Filevine Projects API is one of 9 APIs that Filevine publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 2 JSON Schema definitions.

Tagged areas include Legal, Matters, Case Management, and Projects. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, a JSON-LD context, 1 Naftiko capability spec, and 2 JSON Schemas.

OpenAPI Specification

filevine-projects-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Filevine Projects API
  description: >
    Projects (also called Matters) are the central organizing unit in
    Filevine. Each project belongs to a project type, has a primary client
    contact card, a phase/stage, and a customizable set of sections and
    fields. The Projects API lets external systems list, create, read, and
    update projects programmatically across an organization.
  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: Projects
    description: Filevine projects (matters/cases).

paths:
  /core/projects:
    get:
      summary: Filevine List Projects
      description: List projects accessible to the authenticated user with filters for project type, client, phase, and modification timestamps.
      operationId: listProjects
      tags: [Projects]
      parameters:
        - name: offset
          in: query
          schema: { type: integer, default: 0 }
        - name: limit
          in: query
          schema: { type: integer, default: 50, maximum: 1000 }
        - name: projectTypeId
          in: query
          schema: { type: integer }
        - name: phaseName
          in: query
          schema: { type: string }
        - name: modifiedSince
          in: query
          schema: { type: string, format: date-time }
      responses:
        '200':
          description: A page of projects.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ProjectList' }
    post:
      summary: Filevine Create Project
      description: Create a new project of a given project type with an associated client contact.
      operationId: createProject
      tags: [Projects]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/CreateProjectRequest' }
      responses:
        '201':
          description: Project created.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Project' }
  /core/projects/{projectId}:
    parameters:
      - $ref: '#/components/parameters/ProjectId'
    get:
      summary: Filevine Get Project
      description: Retrieve a single project by ID.
      operationId: getProject
      tags: [Projects]
      responses:
        '200':
          description: Project found.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Project' }
    patch:
      summary: Filevine Update Project
      description: Patch project fields such as name, phase, client, or any custom section values.
      operationId: updateProject
      tags: [Projects]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/UpdateProjectRequest' }
      responses:
        '200':
          description: Updated.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Project' }

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  parameters:
    ProjectId:
      name: projectId
      in: path
      required: true
      schema:
        type: integer
        format: int64
  schemas:
    Project:
      type: object
      properties:
        projectId: { type: integer, format: int64 }
        projectName: { type: string }
        number: { type: string }
        projectTypeId: { type: integer }
        clientId: { type: integer, format: int64 }
        phaseName: { type: string }
        isArchived: { type: boolean }
        createdDate: { type: string, format: date-time }
        modifiedDate: { type: string, format: date-time }
    ProjectList:
      type: object
      properties:
        items:
          type: array
          items: { $ref: '#/components/schemas/Project' }
        hasMore: { type: boolean }
        totalCount: { type: integer }
    CreateProjectRequest:
      type: object
      required: [projectTypeId, projectName, clientId]
      properties:
        projectTypeId: { type: integer }
        projectName: { type: string }
        clientId: { type: integer, format: int64 }
        phaseName: { type: string }
    UpdateProjectRequest:
      type: object
      properties:
        projectName: { type: string }
        phaseName: { type: string }
        isArchived: { type: boolean }