Filevine Time Entries API

Record billable and non-billable time entries against a project, including timer-driven entries. Time entries feed invoice generation and staff productivity reporting.

Filevine Time Entries 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.

Tagged areas include Legal, Time, and Billing. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

filevine-time-entries-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Filevine Time Entries API
  description: >
    The Time Entries API records billable and non-billable time against a
    project, including the timer-driven entries captured by Filevine's
    context-aware timer. Entries carry a user, a project, a duration, an
    optional billing rate, and a narrative description. They feed invoice
    generation and staff productivity reports.
  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: TimeEntries
    description: Billable time tracking.

paths:
  /core/time-entries:
    get:
      summary: Filevine List Time Entries
      description: List time entries across the organization, filtered by user, project, and date range.
      operationId: listTimeEntries
      tags: [TimeEntries]
      parameters:
        - name: userId
          in: query
          schema: { type: integer, format: int64 }
        - name: projectId
          in: query
          schema: { type: integer, format: int64 }
        - name: from
          in: query
          schema: { type: string, format: date }
        - name: to
          in: query
          schema: { type: string, format: date }
      responses:
        '200':
          description: Time entries.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/TimeEntryList' }
    post:
      summary: Filevine Create Time Entry
      description: Record a new time entry against a project.
      operationId: createTimeEntry
      tags: [TimeEntries]
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/CreateTimeEntryRequest' }
      responses:
        '201':
          description: Time entry created.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/TimeEntry' }

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    TimeEntry:
      type: object
      properties:
        timeEntryId: { type: integer, format: int64 }
        projectId: { type: integer, format: int64 }
        userId: { type: integer, format: int64 }
        date: { type: string, format: date }
        durationMinutes: { type: integer }
        billable: { type: boolean }
        rate: { type: number, format: float }
        currency: { type: string, default: USD }
        description: { type: string }
        createdDate: { type: string, format: date-time }
    TimeEntryList:
      type: object
      properties:
        items:
          type: array
          items: { $ref: '#/components/schemas/TimeEntry' }
        hasMore: { type: boolean }
    CreateTimeEntryRequest:
      type: object
      required: [projectId, durationMinutes, date]
      properties:
        projectId: { type: integer, format: int64 }
        userId: { type: integer, format: int64 }
        date: { type: string, format: date }
        durationMinutes: { type: integer }
        billable: { type: boolean, default: true }
        rate: { type: number, format: float }
        description: { type: string }