API documentation for LegalOn services
- Create a matter
LegalOn API (1.2.0)
Request
Searches matters with the same filters, sort order, and offset pagination as the LegalOn matter list.
All filters supported by the existing Matter search are exposed using public API resource names. For example, specify a workspace ID rather than an internal space or location ID.
Use the timeline endpoint to retrieve public or private messages for a matter.
Operator for combining main and sub-assignee conditions.
Inclusive lower bound for a matter's creation time. Specify an RFC 3339 date-time with a UTC offset. For example, use 2026-09-10T00:00:00+09:00 to start searching from midnight on 2026-09-10 in UTC+09:00. The API compares the instant represented by the value without adjusting the timezone.
Relative matter creation time filter in the same comma-separated format as the LegalOn matter list.
Exclusive upper bound for a matter's creation time. Specify an RFC 3339 date-time with a UTC offset. For example, use 2026-09-11T00:00:00+09:00 to include all of 2026-09-10 in UTC+09:00. The API compares the instant represented by the value without adjusting the timezone.
Custom attribute filters using definition and option IDs returned by GET /matters/custom-attribute-definitions, in the same repeated JSON-string format as the LegalOn matter list.
Inclusive lower bound for a matter's due date. Specify an RFC 3339 date-time with a UTC offset. Due dates are calendar dates in the tenant's timezone. For example, for a tenant in UTC+09:00, use 2026-09-10T00:00:00+09:00 to start searching from 2026-09-10. The API compares the instant represented by the value without adjusting the timezone.
Relative due date filter in the same comma-separated format as the LegalOn matter list.
Exclusive upper bound for a matter's due date. Specify an RFC 3339 date-time with a UTC offset. For example, for a tenant in UTC+09:00, use 2026-09-11T00:00:00+09:00 to include due dates through 2026-09-10. The API compares the instant represented by the value without adjusting the timezone.
Inclusive lower bound for the latest message time associated with a matter, not the matter's update time. Specify an RFC 3339 date-time with a UTC offset. For example, use 2026-09-10T00:00:00+09:00 to start searching from midnight on 2026-09-10 in UTC+09:00. The API compares the instant represented by the value without adjusting the timezone.
Relative latest message time filter in the same comma-separated format as the LegalOn matter list.
Exclusive upper bound for the latest message time associated with a matter, not the matter's update time. Specify an RFC 3339 date-time with a UTC offset. For example, use 2026-09-11T00:00:00+09:00 to include all of 2026-09-10 in UTC+09:00. The API compares the instant represented by the value without adjusting the timezone.
Requester IDs from requester.requester_id in Matter API responses. Both user and guest requester IDs are accepted and combined with OR. Matter creation and update identify a requester by email address and name, but search uses requester IDs because the existing Matter search supports ID filters only. A guest directory API is not provided.
Requesting department IDs returned by the Departments API. A matter matches any specified department.
Sort expressions. If omitted, results are sorted by Matter ID in descending order.
Matter status IDs returned by GET /matters/statuses. A matter matches any specified status.
- The server URL is `{api_base_url}/rest/v1`.
You can construct the server URL using the value of `api_base_url` provided in the response when obtaining an access token.
https://{api_base_url_without_scheme}/rest/v1/matters
- cURL
- JavaScript
- Python
- Java
- Go
curl -i -X GET \
'https://{api_base_url_without_scheme}/rest/v1/matters?assignee_operator=and&created_at_from=2019-08-24T14%3A15%3A22Z&created_at_relative=next%2C2%2Cweeks&created_at_to=2019-08-24T14%3A15%3A22Z&custom_attributes={%22id%22%3A%2200000000-0000-0000-0000-000000000010%22%2C%22t%22%3A%22number%22%2C%22v%22%3A%221%2C100%22}%2C{%22id%22%3A%2200000000-0000-0000-0000-000000000011%22%2C%22t%22%3A%22date%22%2C%22v%22%3A%22%2C%2Ctrue%2Cnext%2C2%2Cweeks%22}&due_date_from=2019-08-24T14%3A15%3A22Z&due_date_relative=next%2C2%2Cweeks&due_date_to=2019-08-24T14%3A15%3A22Z&include_unassigned_main_assignee=false&include_unassigned_sub_assignee=false&last_message_at_from=2019-08-24T14%3A15%3A22Z&last_message_at_relative=next%2C2%2Cweeks&last_message_at_to=2019-08-24T14%3A15%3A22Z&limit=50&main_assignee_ids=497f6eca-6276-4993-bfeb-53cbbbba6f08&matter_number=string&matter_type=other&offset=0&q=string&requester_ids=497f6eca-6276-4993-bfeb-53cbbbba6f08&requesting_department_ids=497f6eca-6276-4993-bfeb-53cbbbba6f08&sort=created_at%3Aasc&status_ids=497f6eca-6276-4993-bfeb-53cbbbba6f08&sub_assignee_ids=497f6eca-6276-4993-bfeb-53cbbbba6f08&workspace_id=497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'OK
Matching matters.
Matter type.
Matter status.
Main assignee of the matter. Omitted when it is not set.
Secondary assignees of the matter.
Custom attributes set on the matter.
Definition of a matter custom attribute.
LegalOn-generated custom attribute definition ID.
Custom attribute display name.
Value type of the custom attribute.
Display order of the custom attribute.
Selectable options. Empty for non-selection attributes.
Selected option IDs for a selection attribute.
Workspace reference. Both fields are omitted and an empty object is returned when the credential owner cannot view the workspace.
{ "matters": [ { … } ], "total_size": 1 }
Request
Creates a matter and sets the requester, optionally sets the requesting department, status, assignees, custom attributes, and up to 10 newly uploaded files in one request.
Send each new file as binary content in a multipart file part. The API performs the storage upload internally; clients do not obtain an upload URL or provide a file path or object path. The requester is required and is resolved from an email address and name. LegalOn prefers an active user, then reuses or creates a guest. A user or guest ID cannot be specified directly.
- This is a single-matter API. Clients may call it repeatedly for migration, but cannot preserve a source system's creation time.
- Each file must be 100 MiB or smaller, and the combined file size must not exceed 200 MiB.
- If any file fails validation or upload, the request fails without creating the matter.
- This operation does not support an idempotency key. If the response is lost after processing, check whether the matter was created before retrying because another matter and attachments may be created.
Matter creation request.
Matter type.
Requester identified by email address and name. A user or guest ID cannot be specified directly.
Sub-assignee user IDs. The same user ID cannot be specified more than once.
Custom attributes to set. Definitions not specified remain unset. The same definition ID cannot be specified more than once.
Newly uploaded binary files. Specify the form field at most 10 times. The filename and Content-Type are read from each multipart file part; separate metadata fields are not used. Storage paths are managed internally and are not accepted as request fields. Filenames must be 200 characters or fewer, include an extension, contain no line breaks, and must not start or end with a period. Supported extensions are .pdf, .doc, .docx, .xls, .xlsx, .csv, .ppt, .pptx, .eml, .msg, .png, .gif, .jpg, and .jpeg. The Content-Type must match the extension under the same media-type rules as POST /files.
- The server URL is `{api_base_url}/rest/v1`.
You can construct the server URL using the value of `api_base_url` provided in the response when obtaining an access token.
https://{api_base_url_without_scheme}/rest/v1/matters
- cURL
- JavaScript
- Python
- Java
- Go
curl -i -X POST \
'https://{api_base_url_without_scheme}/rest/v1/matters' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: multipart/form-data' \
-F 'title=Review NDA' \
-F matter_type=contract_review \
-F workspace_id=00000000-0000-0000-0000-000000000003 \
-F 'overview=Please review this NDA.' \
-F 'requester[email]=requester@example.com' \
-F 'requester[name]=Request User' \
-F status_id=00000000-0000-0000-0000-000000000002 \
-F main_assignee_id=00000000-0000-0000-0000-000000000004 \
-F sub_assignee_ids=00000000-0000-0000-0000-000000000005 \
-F 'custom_attributes[0][custom_attribute_definition_id]=00000000-0000-0000-0000-000000000010' \
-F 'custom_attributes[0][text_value]=High priority' \
-F 'files=<binary file content>'{ "matter_id": "00000000-0000-0000-0000-000000000001" }
- The server URL is `{api_base_url}/rest/v1`.
You can construct the server URL using the value of `api_base_url` provided in the response when obtaining an access token.
https://{api_base_url_without_scheme}/rest/v1/matters/{matter_id}
- cURL
- JavaScript
- Python
- Java
- Go
curl -i -X GET \
'https://{api_base_url_without_scheme}/rest/v1/matters/{matter_id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'OK
Matter type.
Matter status.
Secondary assignees of the matter.
Custom attributes set on the matter.
Definition of a matter custom attribute.
LegalOn-generated custom attribute definition ID.
Custom attribute display name.
Value type of the custom attribute.
Display order of the custom attribute.
Selectable options. Empty for non-selection attributes.
Workspace reference. Both fields are omitted and an empty object is returned when the credential owner cannot view the workspace.
{ "matter_id": "00000000-0000-0000-0000-000000000001", "matter_number": "MAT-0001", "title": "Review NDA", "overview": "Please review this NDA.", "matter_type": "contract_review", "status": { "status_id": "00000000-0000-0000-0000-000000000002", "display_name": "In progress" }, "secondary_assignee": [], "custom_attributes": [], "workspace": { "workspace_id": "00000000-0000-0000-0000-000000000003", "display_name": "Legal" }, "created_at": "2026-08-18T00:00:00Z", "last_message_at": "2026-08-18T00:00:00Z" }
Workspaces
Workspaces/folders are the common units used to store and organize resources such as contracts. This endpoint returns the workspaces/folders the calling user has access to, as a tree. For operations that target a workspace (e.g., the Contract API), specify the workspace_id obtained here. To manage workspaces across the tenant (creation, permissions, etc.), see the admin workspace operations (/spaces).