LeanLaw Time Entry API

The TimeEntry API from LeanLaw — 2 operation(s) for timeentry.

Operations 5

GET /v2/time-entries Get a list of time entries #
POST /v2/time-entries Create a new time entry #
GET /v2/time-entries/{id} Get a time entry by id #
PUT /v2/time-entries/{id} Update a time entry #
DELETE /v2/time-entries/{id} Delete a time entry #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/leanlaw-timeentry-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

leanlaw-timeentry-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LeanLaw Time Entry API
  description: This API enables access to a LeanLaw account. For documentation, see https://platform.leanlaw.io
  version: v1
servers:
- url: https://api.leanlaw.io
security:
- BearerAuth: []
tags:
- name: TimeEntry
paths:
  /v2/time-entries:
    get:
      tags:
      - TimeEntry
      summary: Get a list of time entries
      operationId: ListTimeEntries
      parameters:
      - name: startDate
        in: query
        description: Only return time entries that are dated after or including this date
        schema:
          type: string
          format: date
      - name: endDate
        in: query
        description: Only return time entries that are dated before or including this date
        schema:
          type: string
          format: date
      - name: userId
        in: query
        description: Only return time entries that are associated with this user
        schema:
          type: string
          format: uuid
      - name: matterId
        in: query
        description: Only return time entries that are associated with this matter
        schema:
          type: string
          format: uuid
      - name: clientId
        in: query
        description: Only return time entries that are associated with this client
        schema:
          type: string
          format: uuid
      - name: sort
        in: query
        description: 'Sorting parameters for time entries.

          Supported sort fields: date, hours, description, created

          Example: "-date,hours" sorts by date descending, then hours ascending'
        schema:
          type: string
      - name: billingType
        in: query
        description: Billing type
        schema:
          $ref: '#/components/schemas/BillingType'
      - name: fixedFeeId
        in: query
        description: Only return time entries that are associated with this fixed fee
        schema:
          type: string
          format: uuid
      - name: select
        in: query
        description: 'Used to include additional detail in the response with a comma separated list of object identifiers.. Fields can be prefixed with a minus sign to exclude them.

          Supported fields: client, matter, user, meta, fixedFee, invoice'
        schema:
          type: string
      - name: billed
        in: query
        description: 'If true, only returns time entries that are on an invoice, regardless of the invoice state.

          If false, only returns time entries that are not on an invoice.'
        schema:
          type: boolean
      - name: invoiceId
        in: query
        description: Only return time entries billed on this invoice.
        schema:
          type: string
          format: uuid
      - name: limit
        in: query
        description: 'Maximum number of items to return (default: 1000, max: 1000)'
        schema:
          maximum: 1000
          minimum: 1
          type: integer
          format: int32
      - name: offset
        in: query
        description: 'Number of items to offset (default: 0)'
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: modifiedSince
        in: query
        description: Only return results that have the ModifiedDate property after this date and time (optional)
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeEntryListListResponse'
    post:
      tags:
      - TimeEntry
      summary: Create a new time entry
      operationId: CreateTimeEntry
      requestBody:
        description: The time entry to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTimeEntry'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeEntryDetailResponse'
  /v2/time-entries/{id}:
    get:
      tags:
      - TimeEntry
      summary: Get a time entry by id
      operationId: GetTimeEntry
      parameters:
      - name: id
        in: path
        description: The id of the time entry
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeEntryDetailResponse'
    put:
      tags:
      - TimeEntry
      summary: Update a time entry
      description: "Updating a time entry is only possible if it has not been billed (added to an invoice). \nThe update is \"sparse\", where only the fields that are provided in the request will be updated."
      operationId: UpdateTimeEntry
      parameters:
      - name: id
        in: path
        description: The id of the time entry to update
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: Information about the update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTimeEntry'
      responses:
        '200':
          description: OK
    delete:
      tags:
      - TimeEntry
      summary: Delete a time entry
      description: 'Deleting a time entry will remove it from the system permanently. Time entries that have been

        billed (added to an invoice) cannot be deleted.'
      operationId: DeleteTimeEntry
      parameters:
      - name: id
        in: path
        description: The id of the time entry to delete
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
components:
  schemas:
    InvoiceState:
      enum:
      - draft
      - review
      - approved
      - final
      type: string
      description: The state of an invoice
    Pagination:
      required:
      - limit
      - offset
      - total
      type: object
      properties:
        limit:
          type: integer
          description: Maximum number of items to return
          format: int32
        offset:
          type: integer
          description: Number of items to offset
          format: int32
        total:
          type: integer
          description: Total number of items available
          format: int32
        sort:
          type:
          - string
          - 'null'
          description: Current sort parameters applied to the results
      additionalProperties: false
      description: Pagination information
    BillingType:
      enum:
      - nonBillable
      - billable
      - fixedFee
      type: string
      description: The billing type of a time entry
    ClientReference:
      required:
      - name
      type: object
      properties:
        name:
          minLength: 1
          type: string
          description: The name of the Client - either company name or individual name
        reference:
          type:
          - string
          - 'null'
          description: A reference number for the Client
      additionalProperties: false
    CreateTimeEntry:
      required:
      - date
      - description
      - hours
      - matterId
      type: object
      properties:
        userId:
          type:
          - string
          - 'null'
          description: 'The user the time is for. Optional: when omitted it falls back to the x-leanlaw-userid header, and

            then to the user the credential itself identifies. Required only when the credential names no user.'
          format: uuid
        matterId:
          type: string
          description: The matter is required.
          format: uuid
        date:
          type: string
          description: The date of the time entry. Required
          format: date
        time:
          type:
          - string
          - 'null'
          description: The time of the time entry. Optional.
          format: time
        description:
          minLength: 1
          type: string
          description: The description of the time entry. Required
        hours:
          type: number
          description: The number of hours for the time entry. Required
          format: double
        rate:
          type:
          - number
          - 'null'
          description: "The rate of the time entry. If not provided, the rate for the user will be used. \nIn most scenarios the rate should not be provided directly here."
          format: double
        billingType:
          $ref: '#/components/schemas/BillingType'
        fixedFeeId:
          type:
          - string
          - 'null'
          description: The id of the fixed fee to associate with this time entry. Optional.
          format: uuid
        activityCode:
          type:
          - string
          - 'null'
          description: LEDES activity code
        taskCode:
          type:
          - string
          - 'null'
          description: LEDES task code
      additionalProperties: false
    UpdateTimeEntry:
      type: object
      properties:
        userId:
          type:
          - string
          - 'null'
          description: Update the user of the time entry.
          format: uuid
        matterId:
          type:
          - string
          - 'null'
          description: Update the matter of the time entry.
          format: uuid
        date:
          type:
          - string
          - 'null'
          description: Update the date of the time entry
          format: date
        time:
          type:
          - string
          - 'null'
          description: The time of the time entry. Optional.
          format: time
        description:
          type:
          - string
          - 'null'
          description: Update the description of the time entry, provide null to keep the current description
        hours:
          type:
          - number
          - 'null'
          description: Update the hours of the time entry, provide null to keep the current hours
          format: double
        rate:
          type:
          - number
          - 'null'
          description: The rate of the time entry.
          format: double
        billingType:
          $ref: '#/components/schemas/BillingType'
        fixedFeeId:
          type:
          - string
          - 'null'
          description: "The id of the fixed fee to associate with this time entry. \nProvide null to keep the existing association (or none if there isn't one).\nProvide Guid.Empty to remove an existing association."
          format: uuid
        activityCode:
          type:
          - string
          - 'null'
          description: LEDES activity code
        taskCode:
          type:
          - string
          - 'null'
          description: LEDES task code
      additionalProperties: false
    InvoiceReference:
      required:
      - invoiceAmount
      - invoiceBalance
      - invoiceDate
      - invoiceId
      - invoiceNumber
      - invoiceState
      type: object
      properties:
        invoiceId:
          type: string
          description: The id of the invoice.
          format: uuid
        invoiceNumber:
          minLength: 1
          type: string
          description: The invoice number.
        invoiceDate:
          type: string
          description: The date of the invoice.
          format: date
        invoiceState:
          $ref: '#/components/schemas/InvoiceState'
        invoiceAmount:
          type: number
          description: The total amount of the invoice.
          format: double
        invoiceBalance:
          type: number
          description: The outstanding balance of the invoice.
          format: double
      additionalProperties: false
    TimeEntryDetailResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/TimeEntryDetail'
      additionalProperties: false
      description: Standardized API response wrapper for single item responses
    TimeEntryDetail:
      required:
      - billed
      - billingType
      - client
      - clientId
      - date
      - description
      - hours
      - matter
      - matterId
      - timeEntryId
      - user
      - userId
      type: object
      properties:
        timeEntryId:
          type: string
          description: The id of the time entry.
          format: uuid
        userId:
          type: string
          description: The id of the user who created the time entry.
          format: uuid
        user:
          $ref: '#/components/schemas/UserReference'
        matterId:
          type: string
          description: The matter id that the time entry is associated with.
          format: uuid
        matter:
          $ref: '#/components/schemas/MatterReference'
        clientId:
          type: string
          description: The client id that the time entry is associated with.
          format: uuid
        client:
          $ref: '#/components/schemas/ClientReference'
        date:
          type: string
          description: The date of the time entry. This date is used for billing.
          format: date
        time:
          type:
          - string
          - 'null'
          description: The time of the time entry. Time entries might not have a time, only a date.
          format: time
        description:
          minLength: 1
          type: string
          description: The description of the time entry.
        hours:
          type: number
          description: The number of hours for the time entry.
          format: double
        rate:
          type:
          - number
          - 'null'
          description: "The rate of the time entry. Only provided for billable time entries\n(where billingType = \"billable\"). Requires \"read.rates\" scope or \nit will be omitted."
          format: double
        amount:
          type:
          - number
          - 'null'
          description: 'The amount for the time entry. Only provided for billable time entries

            (where billingType = "billable"). Requires "read.rates" scope'
          format: double
        billingType:
          $ref: '#/components/schemas/BillingType'
        billed:
          type: boolean
          description: True if the time entry is on an invoice, regardless of the invoice state.
        invoiceId:
          type:
          - string
          - 'null'
          description: The id of the invoice this time entry is associated with, if billed.
          format: uuid
        invoice:
          $ref: '#/components/schemas/InvoiceReference'
        fixedFeeId:
          type:
          - string
          - 'null'
          description: The id of the fixed fee that the time entry is associated with, if any.
          format: uuid
        fixedFee:
          $ref: '#/components/schemas/FixedFeeReference'
        activityCode:
          type:
          - string
          - 'null'
          description: LEDES activity code
        taskCode:
          type:
          - string
          - 'null'
          description: LEDES task code
        meta:
          $ref: '#/components/schemas/Metadata'
      additionalProperties: false
    Metadata:
      required:
      - createdAt
      - modifiedAt
      type: object
      properties:
        createdAt:
          type: string
          description: The date the entity was created.
          format: date-time
        modifiedAt:
          type: string
          description: The date the entity was last modified.
          format: date-time
      additionalProperties: false
    TimeEntryList:
      required:
      - billed
      - billingType
      - clientId
      - date
      - description
      - hours
      - matterId
      - timeEntryId
      - userId
      type: object
      properties:
        timeEntryId:
          type: string
          description: The id of the time entry.
          format: uuid
        userId:
          type: string
          description: The id of the user who created the time entry.
          format: uuid
        user:
          $ref: '#/components/schemas/UserReference'
        matterId:
          type: string
          description: The matter id that the time entry is associated with.
          format: uuid
        matter:
          $ref: '#/components/schemas/MatterReference'
        clientId:
          type: string
          description: The client id that the time entry is associated with.
          format: uuid
        client:
          $ref: '#/components/schemas/ClientReference'
        date:
          type: string
          description: The date of the time entry.
          format: date
        time:
          type:
          - string
          - 'null'
          description: The time of the time entry. Time entries might not have a time, only a date.
          format: time
        description:
          minLength: 1
          type: string
          description: The description of the time entry.
        hours:
          type: number
          description: The number of hours for the time entry.
          format: double
        rate:
          type:
          - number
          - 'null'
          description: "The rate of the time entry. Only provided for billable time entries\n(where billingType = \"billable\"). Requires \"read.rates\" scope or \nit will be omitted."
          format: double
        amount:
          type:
          - number
          - 'null'
          description: 'The amount for the time entry. Only provided for billable time entries

            (where billingType = "billable"). Requires "read.rates" scope'
          format: double
        billingType:
          $ref: '#/components/schemas/BillingType'
        billed:
          type: boolean
          description: True if the time entry is on an invoice, regardless of the invoice state.
        invoiceId:
          type:
          - string
          - 'null'
          description: The id of the invoice this time entry is associated with, if billed.
          format: uuid
        invoice:
          $ref: '#/components/schemas/InvoiceReference'
        fixedFeeId:
          type:
          - string
          - 'null'
          description: The id of the fixed fee that the time entry is associated with, if any.
          format: uuid
        fixedFee:
          $ref: '#/components/schemas/FixedFeeReference'
        activityCode:
          type:
          - string
          - 'null'
          description: LEDES activity code
        taskCode:
          type:
          - string
          - 'null'
          description: LEDES task code
        meta:
          $ref: '#/components/schemas/Metadata'
      additionalProperties: false
    FixedFeeReference:
      required:
      - amount
      - id
      - label
      type: object
      properties:
        id:
          type: string
          description: The id of the fixed fee
          format: uuid
        label:
          minLength: 1
          type: string
          description: The label of the fixed fee
        amount:
          type: number
          description: The amount of the fixed fee
          format: double
      additionalProperties: false
      description: A reference to a fixed fee
    UserReference:
      required:
      - firstName
      - lastName
      type: object
      properties:
        name:
          type:
          - string
          - 'null'
          description: The name of the user
        initials:
          type:
          - string
          - 'null'
          description: The initials of the user
        firstName:
          minLength: 1
          type: string
          description: The first name of the user
        lastName:
          minLength: 1
          type: string
          description: The last name of the user
      additionalProperties: false
      description: A user in the firm
    TimeEntryListListResponse:
      type: object
      properties:
        data:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/TimeEntryList'
          description: The list of items returned by the API
        pagination:
          $ref: '#/components/schemas/Pagination'
      additionalProperties: false
      description: Standardized API response wrapper for list responses with pagination Paginationdata
    MatterReference:
      required:
      - name
      type: object
      properties:
        name:
          minLength: 1
          type: string
          description: The name of the matter
        reference:
          type:
          - string
          - 'null'
          description: A reference number for the matter
      additionalProperties: false
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer