LeanLaw Matter API

The Matter API from LeanLaw — 2 operation(s) for matter.

Business capability
Legal Operations Management BC-150.50

Operations 5

GET /v2/matters Get a list of matters #
POST /v2/matters Create a new matter #
GET /v2/matters/{id} Get a matter by id #
PUT /v2/matters/{id} Update a matter #
DELETE /v2/matters/{id} Delete a matter #

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-matter-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-matter-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LeanLaw Matter 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: Matter
paths:
  /v2/matters:
    get:
      tags:
      - Matter
      summary: Get a list of matters
      operationId: ListMatters
      parameters:
      - name: query
        in: query
        description: Search for matters matching the query string. Returns matters that match partially on either name or reference, or match client name or reference.
        schema:
          type: string
      - name: reference
        in: query
        description: Return matter matching the matter reference (exact match only)
        schema:
          type: string
      - name: clientReference
        in: query
        description: Return matters matching the client reference (exact match only)
        schema:
          type: string
      - name: userId
        in: query
        description: Only return matters where this user is assigned
        schema:
          type: string
          format: uuid
      - name: responsibleId
        in: query
        description: Only return matters where this user is responsible
        schema:
          type: string
          format: uuid
      - name: originatorId
        in: query
        description: Only return matters where this user is the originator
        schema:
          type: string
          format: uuid
      - name: clientId
        in: query
        description: Filter by client, only return matters for this client
        schema:
          type: string
          format: uuid
      - name: practiceAreaId
        in: query
        description: Filter by practice area, only return matters for this practice area
        schema:
          type: string
          format: uuid
      - name: archived
        in: query
        description: Filter by archived- return only archived matters (true) or only active matters (false) or all matters (null)
        schema:
          type: boolean
      - 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, ledesConfiguration, responsible, originator, practiceArea, meta, customFields'
        schema:
          type: string
      - name: sort
        in: query
        description: 'Sorting parameters for matters.

          Supported sort fields: name, reference, client.name, client.reference

          Example: "name,-client.name" sorts by name ascending, then client name descending'
        schema:
          type: string
      - 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/MatterListListResponse'
    post:
      tags:
      - Matter
      summary: Create a new matter
      description: "If the firm has the QuickBooks Online integration enabled, creating a matter also creates the\ncorresponding customers in QuickBooks. A client that is not yet connected to QuickBooks is created\nthere as a customer, provided the firm is set up to let LeanLaw create its accounting clients, and\nthe matter is created as a sub-customer of that client when the firm bills per matter. A firm that\nbills at the client level gets the client customer only, and no sub-customer for the matter.\nNote that creating a client on its own does not reach QuickBooks — the client is created there as\npart of creating its first matter.\n            \nQuickBooks is never allowed to fail the request: if it is unavailable or rejects the customer, the\nmatter is still created and returned as usual, and it can be connected from the LeanLaw app later."
      operationId: CreateMatter
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMatter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatterDetailResponse'
  /v2/matters/{id}:
    get:
      tags:
      - Matter
      summary: Get a matter by id
      operationId: GetMatter
      parameters:
      - name: id
        in: path
        description: The id of the matter
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatterDetailResponse'
    put:
      tags:
      - Matter
      summary: Update a matter
      description: The update is "sparse", where only the fields that are provided in the request will be updated.
      operationId: UpdateMatter
      parameters:
      - name: id
        in: path
        description: The id of the matter to update
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: Information about the update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateMatter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatterDetailResponse'
    delete:
      tags:
      - Matter
      summary: Delete a matter
      description: 'Deleting a matter will remove it from the system permanently. Matters that have

        any associated activity in the system such as time entries, expenses, or invoices

        cannot be deleted. To archive a matter, use UpdateMatter and set the `Archived` property to true.'
      operationId: DeleteMatter
      parameters:
      - name: id
        in: path
        description: The id of the matter to delete
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
components:
  schemas:
    PracticeAreaReference:
      required:
      - label
      type: object
      properties:
        label:
          minLength: 1
          type: string
          description: The label/name of the practice area
      additionalProperties: false
      description: Represents a practice area
    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
    CustomFieldValueUpdate:
      required:
      - id
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: The id of the custom field to set. Ids come from GET /v2/custom-fields.
        value:
          oneOf:
          - type: string
            description: For a `text` field, and accepted for `date` (`yyyy-MM-dd`), `enum` (an option label - prefer `optionId`), `number` and `boolean` fields too
          - type: number
            description: For a `number` field
          - type: boolean
            description: For a `boolean` field
          description: 'The value to set, typed according to the field''s valueType: a string for "text", a number for

            "number", a boolean for "boolean", an ISO-8601 date ("yyyy-MM-dd") for "date", and an option

            label for "enum" (prefer "optionId" for those, since labels can be renamed). Numbers, booleans

            and dates may also be sent as strings. Set to null to clear the field.'
        optionId:
          type:
          - string
          - 'null'
          description: 'The id of the option to select, for "enum" fields only. Option ids come from

            GET /v2/custom-fields. Takes precedence over "value".'
          format: uuid
      additionalProperties: false
      description: 'Sets the value of a single custom field on a record. Only the fields listed are touched -

        any custom field not in the array keeps its current value.'
    MatterListClient:
      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
      description: Represents a summary of a client for a matter
    MatterLedesConfiguration:
      required:
      - activityCodeRequired
      - codeSetIds
      - enabled
      - expenseCodeRequired
      - taskCodeRequired
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether LEDES billing is enabled for the matter
        activityCodeRequired:
          type: boolean
          description: Whether LEDES activity codes are required for time entries and fixed fees on the matter
        taskCodeRequired:
          type: boolean
          description: Whether LEDES task codes are required for time entries and fixed fees on the matter
        expenseCodeRequired:
          type: boolean
          description: Whether LEDES expense codes are required for expenses on the matter
        codeSetIds:
          type: array
          items:
            type: string
          description: CodeSets available for the matter
      additionalProperties: false
      description: Configuration for LEDES in a matter
    MatterType:
      enum:
      - hourly
      - fixedFee
      - contingency
      - probono
      - internal
      type: string
      description: Matter type determines defaults for time entries and certain billing behaviors. The default value is "hourly".
    MatterDetailClient:
      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
      description: Represents a summary of a client for a matter
    MatterList:
      required:
      - archived
      - clientId
      - matterId
      - matterType
      - name
      - originatorIds
      - responsibleId
      type: object
      properties:
        matterId:
          type: string
          description: The unique identifier of the matter
          format: uuid
        name:
          minLength: 1
          type: string
          description: The name of the matter
        reference:
          type:
          - string
          - 'null'
          description: A reference number for the matter
        matterType:
          $ref: '#/components/schemas/MatterType'
        opened:
          type:
          - string
          - 'null'
          description: The date the matter was opened
          format: date
        archived:
          type: boolean
          description: Whether the matter is archived (true) or active (false)
        clientId:
          type: string
          description: The client id of the matter
          format: uuid
        client:
          $ref: '#/components/schemas/MatterListClient'
        responsibleId:
          type: string
          description: User id for responsible attorney for matter
          format: uuid
        responsible:
          $ref: '#/components/schemas/UserReference'
        originatorIds:
          type: array
          items:
            type: string
            format: uuid
          description: List of user ids for originating attorneys for matter
        originators:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/UserReference'
          description: User details for originating attorneys for matter
        practiceAreaId:
          type:
          - string
          - 'null'
          description: The practice area id of the matter
          format: uuid
        practiceArea:
          $ref: '#/components/schemas/PracticeAreaReference'
        ledesConfiguration:
          $ref: '#/components/schemas/MatterLedesConfiguration'
        meta:
          $ref: '#/components/schemas/Metadata'
        customFields:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomFieldValue'
          description: The custom fields set on this record. Only returned when "customFields" is requested via the select parameter.
      additionalProperties: false
      description: Represents a matter in the firm
    CustomFieldValueType:
      enum:
      - text
      - boolean
      - number
      - date
      - enum
      type: string
      description: The type of the custom field. "Enum" fields are enumerated fields with a set of possible values, the values are outlined in the 'options' property.
    CreateMatter:
      required:
      - clientId
      - name
      - responsibleId
      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 (optional)
        matterType:
          $ref: '#/components/schemas/MatterType'
        clientId:
          type: string
          description: The client id of the matter (required)
          format: uuid
        responsibleId:
          type: string
          description: User id for responsible attorney for matter
          format: uuid
        originatorId:
          type:
          - string
          - 'null'
          description: User id for originating attorney for matter (optional)
          format: uuid
        opened:
          type:
          - string
          - 'null'
          description: The date the matter was opened
          format: date
        archived:
          type: boolean
          description: Whether the matter is archived (true) or active (false)
        conflictInformation:
          $ref: '#/components/schemas/ConflictInformation'
        billingInstructions:
          type:
          - string
          - 'null'
          description: Billing instructions for the matter
        notes:
          type:
          - string
          - 'null'
          description: Notes about the matter
        referralSources:
          type:
          - string
          - 'null'
          description: Referral sources for the matter
        practiceAreaId:
          type:
          - string
          - 'null'
          description: The practice area id for the matter (optional)
          format: uuid
        rateGroupId:
          type:
          - string
          - 'null'
          description: Rate group ID for the matter (optional)
          format: uuid
        customFields:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomFieldValueUpdate'
          description: 'Initial values for the matter''s custom fields. Optional - any custom field not listed is left

            unset. Ids come from GET /v2/custom-fields?entity=matter.'
      additionalProperties: false
      description: Creating a new matter
    MatterDetailResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/MatterDetail'
      additionalProperties: false
      description: Standardized API response wrapper for single item responses
    CustomFieldValue:
      required:
      - id
      - name
      - value
      - valueType
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: The id of the custom field, from GET /v2/custom-fields.
        name:
          minLength: 1
          type: string
          description: The current name (label) of the field
        valueType:
          $ref: '#/components/schemas/CustomFieldValueType'
        value:
          oneOf:
          - type: string
            description: When 'valueType' is 'text', 'enum' or 'date'. For 'enum' value types, the 'optionId' property contains the selected option ID.
          - type: number
            description: When `valueType` is `number`
          - type: boolean
            description: When `valueType` is `boolean`
          description: 'The value of the field, typed according to valueType: a string for "text", a number for

            "number", a boolean for "boolean", an ISO-8601 date for "date", and the selected option''s

            label for "enum".'
        optionId:
          type:
          - string
          - 'null'
          description: 'The id of the selected option, for "enum" fields. Use this rather than the label when writing

            the value back, since labels can be renamed. Omitted for other value types.'
          format: uuid
      additionalProperties: false
      description: A custom field and its value on a client, matter or user
    ConflictInformation:
      type: object
      properties:
        adverse:
          type:
          - string
          - 'null'
          description: Adverse party information
        relatedAdverse:
          type:
          - string
          - 'null'
          description: Related adverse party information
        relatedClient:
          type:
          - string
          - 'null'
          description: Related client information
        opposing:
          type:
          - string
          - 'null'
          description: Opposing party information
      additionalProperties: false
      description: Conflict information for a matter
    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
    UpdateMatter:
      type: object
      properties:
        name:
          type:
          - string
          - 'null'
          description: The name of the matter, if not provided, the current name will not be changed
        reference:
          type:
          - string
          - 'null'
          description: A reference number for the matter; if not provided, the current reference will not be changed
        clientId:
          type:
          - string
          - 'null'
          description: The client id of the matter - if not provided, the client will not be changed
          format: uuid
        responsibleId:
          type:
          - string
          - 'null'
          description: User id for responsible attorney for matter, if not provided, the current responsible will not be changed
          format: uuid
        opened:
          type:
          - string
          - 'null'
          description: The date the matter was opened, if not provided, the current opened date will not be changed
          format: date
        archived:
          type:
          - boolean
          - 'null'
          description: Whether the matter is archived (true) or active (false), if not provided, the current archived state will not be changed
        conflictInformation:
          $ref: '#/components/schemas/ConflictInformation'
        billingInstructions:
          type:
          - string
          - 'null'
          description: Billing instructions for the matter, if not provided, the current billing instructions will not be changed
        notes:
          type:
          - string
          - 'null'
          description: Notes about the matter, if not provided, the current notes will not be changed
        referralSources:
          type:
          - string
          - 'null'
          description: Referral sources for the matter, if not provided, the current referral sources will not be changed
        practiceAreaId:
          type:
          - string
          - 'null'
          description: Practice area id for the matter, if not provided, the current practice area will not be changed. To unassign the matter from a practice area, set this field to an empty guid (00000000-0000-0000-0000-000000000000)
          format: uuid
        customFields:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomFieldValueUpdate'
          description: 'Custom field values to set. Only the fields listed are changed - omit the property entirely

            to leave every custom field alone, and set an entry''s value to null to clear that one field.'
      additionalProperties: false
      description: Update an existing matter
    MatterListListResponse:
      type: object
      properties:
        data:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/MatterList'
          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
    MatterDetail:
      required:
      - archived
      - client
      - clientId
      - matterId
      - matterType
      - name
      - responsible
      - responsibleId
      type: object
      properties:
        matterId:
          type: string
          description: The unique identifier of the matter
          format: uuid
        name:
          minLength: 1
          type: string
          description: The name of the matter
        reference:
          type:
          - string
          - 'null'
          description: A reference number for the matter
        clientId:
          type: string
          description: The unique identifier of the client
          format: uuid
        matterType:
          $ref: '#/components/schemas/MatterType'
        client:
          $ref: '#/components/schemas/MatterDetailClient'
        responsibleId:
          type: string
          description: User id for responsible attorney for matter
          format: uuid
        responsible:
          $ref: '#/components/schemas/UserReference'
        originatorIds:
          type:
          - array
          - 'null'
          items:
            type: string
            format: uuid
          description: List of user ids for originating attorneys for matter
        originators:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/UserReference'
          description: List of users that are originating attorneys for matter
        practiceAreaId:
          type:
          - string
          - 'null'
          description: The practice area id of the matter
          format: uuid
        practiceArea:
          $ref: '#/components/schemas/PracticeAreaReference'
        opened:
          type:
          - string
          - 'null'
          description: The date the matter was opened
          format: date
        archived:
          type: boolean
          description: Whether the matter is archived (true) or active (false)
        conflictInformation:
          $ref: '#/components/schemas/ConflictInformation'
        billingInstructions:
          type:
          - string
          - 'null'
          description: Billing instructions for the matter
        notes:
          type:
          - string
          - 'null'
          description: Notes about the matter
        referralSources:
          type:
          - string
          - 'null'
          description: Referral sources for the matter
        ledesConfiguration:
          $ref: '#/components/schemas/MatterLedesConfiguration'
        meta:
          $ref: '#/components/schemas/Metadata'
        customFields:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/CustomFieldValue'
          description: The custom fields set on this record
      additionalProperties: false
      description: Represents a matter in the firm
    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
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer