Lawmatics Collections API
The Collections API from Lawmatics — 4 operation(s) for collections.
The Collections API from Lawmatics — 4 operation(s) for collections.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/lawmatics-collections-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Lawmatics OAuth Collections API
version: 1.22.0
description: 'The official Lawmatics REST API for legal CRM, client intake and law firm automation. Manage matters (prospects), contacts, companies, custom forms and form entries, custom fields, events and appointments, tasks, notes, files, tags, users, time entries, expenses, invoices and transactions.
Authentication is OAuth 2.0 authorization code grant; access tokens do not expire, there are no refresh tokens, and Lawmatics does not currently support scopes - an authorized app receives full CRUD access to the granted account.
All list endpoints support the shared query-parameter grammar documented in the Param Guide: `fields` (field selection, one level deep, `fields=all` to expand), `page` (pagination), `sort_by`/`sort_order`, and `filter_by`/`filter_on`/`filter_with` (one filter at a time; operators `=`, `!=`, `<=`, `<`, `>=`, `>`, `like`, `ilike`, `null`, `not_null`).
Responses follow a JSON:API-style `data` / `attributes` / `relationships` envelope.'
contact:
name: Lawmatics API Support
email: api@lawmatics.com
url: https://docs.lawmatics.com/
termsOfService: https://www.lawmatics.com/terms-of-use
servers:
- url: https://api.lawmatics.com
description: Lawmatics production API
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Collections
paths:
/v1/collections:
get:
operationId: getCollections
summary: Collections
description: 'Retrieves a list of all Collections in the Lawmatics account.
Endpoint
GET {{host}}/v1/collections
Authentication
This request uses OAuth 2.0. Ensure a valid access_token is set in the active environment.
Headers
Key
Value
Content-Type
application/json
Response
Returns a JSON object with a data array. Each item in the array represents a Collection and includes:
Field
Type
Description
id
string
Unique identifier for the collection
type
string
Resource type — always "collection"
attributes.name
string
Name of the collection
attributes.custom_fields
array
List of custom fields associated with the collection
attributes.created_at
string (ISO 8601)
Timestamp when the collection was created
attributes.updated_at
string (ISO 8601)
Timestamp when the collection was last updated
Custom Field Object
Field
Type
Description
id
string
Unique identifier for the custom field
name
string
Display name of the custom field
field_type
string
Type of field (e.g., list, multi_picklist, currency)
visibility
string
Visibility setting (e.g., default)
type
string
Parent resource type — always "Collection"
list_options
array
Available options for list/picklist fields
created_at
string (ISO 8601)
Timestamp when the field was created
updated_at
string (ISO 8601)
Timestamp when the field was last updated'
tags:
- Collections
responses:
default:
description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher.
content:
application/json:
schema:
type: object
examples:
collections:
summary: Collections
value:
data:
- id: '6'
type: collection
attributes:
name: Test
custom_fields:
- id: '306'
name: MultiTest
field_type: multi_picklist
visibility: default
type: Collection
list_options:
- id: '56'
name: One
- id: '57'
name: Two
- id: '58'
name: Three
created_at: '2026-05-27T15:09:15.359-07:00'
updated_at: '2026-05-27T15:09:15.359-07:00'
created_at: '2026-05-27T15:09:15.354-07:00'
updated_at: '2026-05-27T15:09:15.354-07:00'
- id: '5'
type: collection
attributes:
name: Bank Accounts
custom_fields:
- id: '305'
name: Type
field_type: list
visibility: default
type: Collection
list_options:
- id: '54'
name: Checking
- id: '55'
name: Savings
created_at: '2026-05-27T14:52:05.096-07:00'
updated_at: '2026-05-27T14:52:05.096-07:00'
- id: '304'
name: Balance
field_type: currency
visibility: default
type: Collection
created_at: '2026-05-27T14:52:05.090-07:00'
updated_at: '2026-05-27T14:52:05.090-07:00'
- id: '303'
name: Name
field_type: text
visibility: default
type: Collection
created_at: '2026-05-27T14:52:05.057-07:00'
updated_at: '2026-05-27T14:52:05.057-07:00'
created_at: '2026-05-27T14:52:05.019-07:00'
updated_at: '2026-05-27T14:52:05.019-07:00'
- id: '2'
type: collection
attributes:
name: Albums
custom_fields:
- id: '299'
name: Artist Name
field_type: text
visibility: default
type: Collection
created_at: '2026-05-26T16:10:41.056-07:00'
updated_at: '2026-05-26T16:10:41.056-07:00'
- id: '298'
name: Name
field_type: text
visibility: default
type: Collection
created_at: '2026-05-26T16:09:11.640-07:00'
updated_at: '2026-05-26T16:11:14.439-07:00'
created_at: '2026-05-26T16:09:11.630-07:00'
updated_at: '2026-05-26T16:09:11.630-07:00'
- id: '1'
type: collection
attributes:
name: Movies
custom_fields:
- id: '295'
name: Name
field_type: string
visibility: default
type: Collection
created_at: '2026-05-26T13:09:49.162-07:00'
updated_at: '2026-05-26T13:09:49.162-07:00'
- id: '296'
name: Director
field_type: string
visibility: default
type: Collection
created_at: '2026-05-26T13:09:49.168-07:00'
updated_at: '2026-05-26T13:09:49.168-07:00'
- id: '297'
name: Genre
field_type: list
visibility: default
type: Collection
list_options:
- id: '49'
name: Horror
- id: '50'
name: Romance
- id: '51'
name: Action
- id: '52'
name: Comedy
- id: '53'
name: Drama
created_at: '2026-05-26T13:09:49.192-07:00'
updated_at: '2026-05-26T13:09:49.192-07:00'
created_at: '2026-05-26T13:09:49.160-07:00'
updated_at: '2026-05-26T13:09:49.160-07:00'
meta:
total_pages: 1
limit_per_page: 25
total_entries: 4
links:
self: /v1/collections?page=1
'401':
description: Unauthorized - missing or invalid OAuth 2.0 bearer token
'429':
description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned
headers:
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
post:
operationId: createCollection
summary: Create Collection
description: 'Creates a new Collection in Lawmatics. Collections are used to group and organize records (such as contacts or matters) with custom fields tailored to your needs.
Request Body
The request body must be a JSON object with the following fields:
Field
Type
Required
Description
name
string
Yes
The name of the collection to create.
custom_fields
array
No
An array of custom field definitions to attach to the collection.
Custom Field Object
Each object in the custom_fields array supports the following properties:
Field
Type
Required
Description
name
string
Yes
The display name of the custom field.
field_type
string
Yes
The type of the field. Supported values: integer, boolean, string, text, currency, date, time, datetime, list, lookup, multi_picklist
list_options
array
Only for list and multi_picklist types
An array of option objects, each with a name property, defining the selectable values for a list field.
Response
Returns 201 Created on success with a JSON object containing the created collection''s data under the data key.
Response Body
Field
Type
Description
data.id
string
The unique ID of the newly created collection.
data.type
string
The resource type (collection).
data.attributes.name
string
The name of the collection.
data.attributes.custom_fields
array
The list of custom fields created for this collection, each including id, name, field_type, visibility, created_at, and updated_at.
data.attributes.created_at
string
ISO 8601 timestamp of when the collection was created.
data.attributes.updated_at
string
ISO 8601 timestamp of when the collection was last updated.'
tags:
- Collections
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
name: Bank Accounts
custom_fields:
- name: Name
field_type: text
- name: Balance
field_type: currency
- name: Type
field_type: list
list_options:
- name: Checking
- name: Savings
responses:
default:
description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher.
content:
application/json:
schema:
type: object
examples:
createCollection:
summary: Create Collection
value:
data:
id: '7'
type: collection
attributes:
name: Bank Accounts
custom_fields:
- id: '307'
name: Name
field_type: text
visibility: default
type: Collection
created_at: '2026-05-28T11:10:33.113-07:00'
updated_at: '2026-05-28T11:10:33.113-07:00'
- id: '308'
name: Balance
field_type: currency
visibility: default
type: Collection
created_at: '2026-05-28T11:10:33.236-07:00'
updated_at: '2026-05-28T11:10:33.236-07:00'
- id: '309'
name: Type
field_type: list
visibility: default
type: Collection
list_options:
- id: '59'
name: Checking
- id: '60'
name: Savings
created_at: '2026-05-28T11:10:33.249-07:00'
updated_at: '2026-05-28T11:10:33.249-07:00'
created_at: '2026-05-28T11:10:33.109-07:00'
updated_at: '2026-05-28T11:10:33.109-07:00'
'401':
description: Unauthorized - missing or invalid OAuth 2.0 bearer token
'429':
description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned
headers:
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
/v1/collections/{collection_id}:
get:
operationId: getCollection
summary: Collection
description: 'Retrieves a single Collection by its ID.
Path Variables
Variable
Description
collection_id
The unique identifier of the collection to retrieve.
Response
Returns a data object representing the collection with the following attributes:
Field
Type
Description
id
string
Unique identifier of the collection.
type
string
Resource type ("collection").
attributes.name
string
Name of the collection.
attributes.custom_fields
array
List of custom fields defined for the collection.
attributes.created_at
string
ISO 8601 timestamp of when the collection was created.
attributes.updated_at
string
ISO 8601 timestamp of when the collection was last updated.
Custom Field Object
Field
Type
Description
id
string
Unique identifier of the custom field.
name
string
Display name of the custom field.
field_type
string
Data type of the field (e.g., text, currency, list).
visibility
string
Visibility setting of the field.
type
string
Resource type ("Collection").
list_options
array
Available options for list type fields.
created_at
string
ISO 8601 timestamp of when the field was created.
updated_at
string
ISO 8601 timestamp of when the field was last updated.'
tags:
- Collections
parameters:
- name: collection_id
in: path
required: true
description: The collection id
schema:
type: string
responses:
default:
description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher.
content:
application/json:
schema:
type: object
examples:
collection:
summary: Collection
value:
data:
id: '5'
type: collection
attributes:
name: Bank Accounts
custom_fields:
- id: '305'
name: Type
field_type: list
visibility: default
type: Collection
list_options:
- id: '54'
name: Checking
- id: '55'
name: Savings
created_at: '2026-05-27T14:52:05.096-07:00'
updated_at: '2026-05-27T14:52:05.096-07:00'
- id: '304'
name: Balance
field_type: currency
visibility: default
type: Collection
created_at: '2026-05-27T14:52:05.090-07:00'
updated_at: '2026-05-27T14:52:05.090-07:00'
- id: '303'
name: Name
field_type: text
visibility: default
type: Collection
created_at: '2026-05-27T14:52:05.057-07:00'
updated_at: '2026-05-27T14:52:05.057-07:00'
created_at: '2026-05-27T14:52:05.019-07:00'
updated_at: '2026-05-27T14:52:05.019-07:00'
'401':
description: Unauthorized - missing or invalid OAuth 2.0 bearer token
'429':
description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned
headers:
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
put:
operationId: updateCollection
summary: Update Collection
description: 'Updates an existing collection by its ID. This endpoint allows you to modify the collection''s associated custom fields.
URL Parameters
Parameter
Type
Description
id
integer
The unique identifier of the collection to update. Provided as a path segment (e.g., 2 in /v1/collections/2).
Request Body
Send a JSON object with the following fields:
Field
Type
Required
Description
custom_fields
array of objects
Yes
List of custom fields to associate with the collection.
custom_fields Object Properties
Property
Type
Description
id
string
The unique identifier of the custom field (e.g., "298").
field_type
string
The type of the custom field (e.g., "text").'
tags:
- Collections
parameters:
- name: collection_id
in: path
required: true
description: The collection id
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
custom_fields:
- id: '{{collection_custom_field_id}}'
name: Account Balance
responses:
default:
description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher.
content:
application/json:
schema:
type: object
examples:
updateCollection:
summary: Update Collection
value:
data:
id: '7'
type: collection
attributes:
name: Bank Accounts
custom_fields:
- id: '309'
name: Type
field_type: list
visibility: default
type: Collection
list_options:
- id: '59'
name: Checking
- id: '60'
name: Savings
created_at: '2026-05-28T11:10:33.249-07:00'
updated_at: '2026-05-28T11:10:33.249-07:00'
- id: '308'
name: Account Balance
field_type: currency
visibility: default
type: Collection
created_at: '2026-05-28T11:10:33.236-07:00'
updated_at: '2026-05-28T11:12:08.285-07:00'
- id: '307'
name: Name
field_type: text
visibility: default
type: Collection
created_at: '2026-05-28T11:10:33.113-07:00'
updated_at: '2026-05-28T11:10:33.113-07:00'
created_at: '2026-05-28T11:10:33.109-07:00'
updated_at: '2026-05-28T11:10:33.109-07:00'
'401':
description: Unauthorized - missing or invalid OAuth 2.0 bearer token
'429':
description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned
headers:
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
delete:
operationId: deleteCollection
summary: Delete Collection
description: 'Deletes an existing collection by its ID.
Path Variables
Variable
Description
collection_id
The unique identifier of the collection to delete.
Response
Returns a 200 OK with the deleted collection''s data on success, including:
- id – The collection''s unique identifier.
- type – Resource type (collection).
- attributes – Collection attributes:
- name – Name of the collection.
- custom_fields – Array of custom fields associated with the collection.
- created_at – Timestamp when the collection was created.
- updated_at – Timestamp when the collection was last updated.'
tags:
- Collections
parameters:
- name: collection_id
in: path
required: true
description: The collection id
schema:
type: string
responses:
default:
description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher.
content:
application/json:
schema:
type: object
examples:
deleteCollection:
summary: Delete Collection
value:
data:
id: '5'
type: collection
attributes:
name: Bank Accounts
custom_fields: []
created_at: '2026-05-27T14:52:05.019-07:00'
updated_at: '2026-05-28T11:10:19.399-07:00'
'401':
description: Unauthorized - missing or invalid OAuth 2.0 bearer token
'429':
description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned
headers:
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
/v1/collection_items:
get:
operationId: getCollectionItems
summary: Collection Items
description: 'Returns a paginated list of all collection items.
Query Parameters
Supports standard Lawmatics query parameters for filtering, sorting, pagination, and field selection.
Response
Returns a 200 OK with an array of collection item objects under data. Each item includes:
- id – The collection item''s unique identifier.
- type – Resource type (collection_item).
- attributes – Collection item attributes:
- collection_id – The ID of the parent collection.
- contactable_type – The type of the associated record (e.g., Prospect, Contact).
- contactable_id – The ID of the associated record.
- custom_field_values – Array of custom field values for this item.
- created_at – Timestamp when the item was created.
- updated_at – Timestamp when the item was last updated.'
tags:
- Collections
responses:
default:
description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher.
content:
application/json:
schema:
type: object
examples:
collectionItems:
summary: Collection Items
value:
data:
- id: '1'
type: collection_item
attributes:
collection_id: 3
contactable_type: Prospect
contactable_id: 184
custom_field_values:
- id: '235'
custom_field_id: '302'
name: Name
field_type: text
value: The Matrix
formatted_value: The Matrix
created_at: '2026-05-29T16:02:51.434-07:00'
updated_at: '2026-05-29T16:02:51.482-07:00'
meta:
total_pages: 1
limit_per_page: 25
total_entries: 1
links:
self: /v1/collection_items?page=1
'401':
description: Unauthorized - missing or invalid OAuth 2.0 bearer token
'429':
description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned
headers:
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
post:
operationId: createCollectionItem
summary: Create Collection Item
description: "Creates a new collection item, associating a contact or matter record with a collection and optionally setting custom field values.\n\nRequest Body\n\nField\nType\nRequired\nDescription\n\ncontactable_type\nstring\nYes\nThe type of the associated record. Accepted values: Prospect, Contact.\n\ncontactable_id\ninteger\nYes\nThe ID of the associated record.\n\ncollection_id\ninteger\nYes\nThe ID of the collection to add the item to.\n\ncustom_field_values\narray\nNo\nArray of custom field value objects to set on the item.\n\ncustom_field_values Object\n\nField\nType\nDescription\n\nid\ninteger\nThe ID of the custom field.\n\nvalue\nstring\nThe value to set for the custom field.\n\nExample Request Body\n{\n \"contactable_type\": \"Prospect\",\n \"contactable_id\": 185,\n \"collection_id\": 1,\n \"custom_field_values\": [\n {\n \"id\": 295,\n \"value\": \"The Matrix\"\n },\n {\n \"id\": 296,\n \"value\": \"1999-03-31\"\n }\n ]\n}\n\nResponse\nReturns a 201 Created with the newly created collection item object under data."
tags:
- Collections
responses:
default:
description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher.
content:
application/json:
schema:
type: object
examples:
createCollectionItem:
summary: Create Collection Item
value:
data:
id: '4'
type: collection_item
attributes:
collection_id: 1
contactable_type: Prospect
contactable_id: 185
custom_field_values:
- id: '240'
custom_field_id: '295'
name: Name
field_type: string
value: The Matrix
formatted_value: The Matrix
- id: '241'
custom_field_id: '296'
name: Director
field_type: string
value: '1999-03-31'
formatted_value: '1999-03-31'
created_at: '2026-05-28T11:07:47.114-07:00'
updated_at: '2026-05-28T11:07:47.172-07:00'
'401':
description: Unauthorized - missing or invalid OAuth 2.0 bearer token
'429':
description: Too Many Requests - the per-firm rate limit was exceeded; a Retry-After header is returned
headers:
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
/v1/collection_items/{collection_item_id}:
get:
operationId: getCollectionItem
summary: Collection Item
description: 'Returns a single collection item by its ID.
Path Variables
Variable
Description
collection_item_id
The unique identifier of the collection item to retrieve.
Response
Returns a 200 OK with the collection item object under data, including:
- id – The collection item''s unique identifier.
- type – Resource type (collection_item).
- attributes – Collection item attributes:
- collection_id – The ID of the parent collection.
- contactable_type – The type of the associated record (e.g., Prospect, Contact).
- contactable_id – The ID of the associated record.
- custom_field_values – Array of custom field values for this item.
- created_at – Timestamp when the item was created.
- updated_at – Timestamp when the item was last updated.'
tags:
- Collections
parameters:
- name: collection_item_id
in: path
required: true
description: The collection item id
schema:
type: string
responses:
default:
description: Example response captured in the source Postman collection; the HTTP status code was not recorded by the publisher.
content:
application/json:
schema:
type: object
examples:
collectionItem:
summary: Collection Item
value:
data:
id: '1'
type: collection_item
# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lawmatics/refs/heads/main/openapi/lawmatics-collections-api-openapi.yml