API documentation for LegalOn services
- Get a matter
LegalOn API (1.2.0)
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.
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.
{ "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" }
Request
Partially updates matter fields, the requester, requesting department, status, assignees, and custom attributes in one request.
- When a requester is specified, LegalOn resolves an active user first; if no matching user exists, it reuses an existing guest or creates a new guest.
- If requester is omitted, the existing requester is retained; other omitted fields remain unchanged.
Matter partial update request.
Matter due date. Set to null to clear the due date; omit to leave it unchanged.
Requester identified by email address and name. A user or guest ID cannot be specified directly.
Complete list of sub-assignee user IDs. An empty array clears all sub-assignees. The same user ID cannot be specified more than once.
- 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 PATCH \
'https://{api_base_url_without_scheme}/rest/v1/matters/{matter_id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"title": "Review mutual NDA",
"due_date": null,
"status_id": "00000000-0000-0000-0000-000000000002",
"requester": {
"email": "requester@example.com",
"name": "Request User"
},
"main_assignee_id": "00000000-0000-0000-0000-000000000004",
"sub_assignee_ids": [
"00000000-0000-0000-0000-000000000005"
],
"custom_attributes": [
{
"custom_attribute_definition_id": "00000000-0000-0000-0000-000000000010",
"text_value": "High priority"
}
]
}'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).