Skip to content

LegalOn API (1.2.0)

API documentation for LegalOn services

Languages
Servers
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

Users

Operations about user

Operations

User Groups

Operations about user group

Operations

Workspaces

Operations about all tenant workspaces/folders regardless of the user's access permissions.

Operations

Departments

Operations about department

Operations

Contracts(Files)

Operations to create, retrieve, update, and delete contracts. For operations that target a workspace, specify a workspace_id obtained via the common Workspaces endpoint (GET /workspaces).

Operations

Matters

Operations to create, retrieve, update, and delete matters. Matter operations require an API credential owned by a user with a Matter Management Pro license.

Operations

Create a matter

Request

Overview

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.

Specified fields

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.

Constraints

  • 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.

Processing notes

  • 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.
Security
OAuth2ClientCredentials
Bodymultipart/form-datarequired

Matter creation request.

titlestring[ 1 .. 200 ] charactersrequired

Matter title.

matter_typestringrequired

Matter type.

Enum"other""legal_request""contract_review""contract_drafting"
workspace_idstring(uuid)required

Workspace where the matter is created.

overviewstring[ 1 .. 4000 ] characters

Matter overview.

due_datestring(date-time)

Matter due date.

requesterobject(RequesterInput)required

Requester identified by email address and name. A user or guest ID cannot be specified directly.

requester.​emailstring(email)<= 254 charactersrequired

Requester email address. LegalOn resolves an active user first, then reuses or creates a guest.

requester.​namestring[ 1 .. 300 ] charactersrequired

Requester name. When an existing guest is reused, its name is updated to this value.

requesting_department_idstring(uuid)

Requesting department to set.

status_idstring(uuid)

Status to set. Omit to use the default status.

main_assignee_idstring(uuid)

Main assignee user ID.

sub_assignee_idsArray of strings(uuid)<= 30 itemsunique

Sub-assignee user IDs. The same user ID cannot be specified more than once.

custom_attributesArray of objects(MatterCustomAttributePatch)[ 1 .. 50 ] items

Custom attributes to set. Definitions not specified remain unset. The same definition ID cannot be specified more than once.

filesArray of strings(binary)<= 10 items

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.

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>'

Responses

Created

Bodyapplication/json
matter_idstring(uuid)required

LegalOn-generated matter ID.

Response
application/json
{ "matter_id": "00000000-0000-0000-0000-000000000001" }

Get a matter

Request

Retrieves the specified matter. Related files and timeline items are not included.

Security
OAuth2ClientCredentials
Path
matter_idstring(uuid)required

LegalOn-generated matter ID.

curl -i -X GET \
  'https://{api_base_url_without_scheme}/rest/v1/matters/{matter_id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Bodyapplication/json
matter_idstring(uuid)required

LegalOn-generated matter ID.

matter_numberstringnon-emptyrequired

Matter number.

titlestringnon-emptyrequired

Matter title.

overviewstringnon-empty

Matter overview. Omitted when it is not set.

matter_typestringrequired

Matter type.

Enum"other""legal_request""contract_review""contract_drafting"
due_datestring(date-time)

Matter due date. Omitted when it is not set.

statusobject(MatterStatus)required

Matter status.

status.​status_idstring(uuid)required

LegalOn-generated status ID.

status.​display_namestringnon-emptyrequired

Status name.

assigneeobject(MainAssigneeReference)

Main assignee of the matter. Omitted when it is not set.

secondary_assigneeArray of objects(UserReference)required

Secondary assignees of the matter.

secondary_assignee[].​user_idstring(uuid)required

LegalOn-generated user ID.

secondary_assignee[].​display_namestringnon-emptyrequired

User display name.

requesterobject(RequesterReference)

User or guest resolved as the matter requester.

requesting_departmentobject(DepartmentReference)

Department reference.

custom_attributesArray of objects(MatterCustomAttribute)required

Custom attributes set on the matter.

custom_attributes[].​custom_attribute_definitionobject(MatterCustomAttributeDefinition)required

Definition of a matter custom attribute.

custom_attributes[].​custom_attribute_definition.​custom_attribute_definition_idstring(uuid)required

LegalOn-generated custom attribute definition ID.

custom_attributes[].​custom_attribute_definition.​display_namestringnon-emptyrequired

Custom attribute display name.

custom_attributes[].​custom_attribute_definition.​kindstringrequired

Value type of the custom attribute.

Enum"single_selection""multiple_selection""single_line_text""number""date"
custom_attributes[].​custom_attribute_definition.​display_orderinteger>= 0required

Display order of the custom attribute.

custom_attributes[].​custom_attribute_definition.​optionsArray of objects(MatterCustomAttributeOption)required

Selectable options. Empty for non-selection attributes.

custom_attributes[].​custom_attribute_definition.​options[].​custom_attribute_option_idstring(uuid)required

LegalOn-generated custom attribute option ID.

custom_attributes[].​custom_attribute_definition.​options[].​display_namestringnon-emptyrequired

Option display name.

custom_attributes[].​custom_attribute_definition.​options[].​display_orderinteger>= 0required

Display order of the option.

custom_attributes[].​option_idsArray of strings(uuid)

Selected option IDs for a selection attribute.

custom_attributes[].​text_valuestringnon-empty

Value for a single-line text attribute.

custom_attributes[].​number_valueinteger(int32)>= 0

Value for a number attribute.

custom_attributes[].​date_valuestring(date-time)

Value for a date attribute.

workspaceobject(WorkspaceReference)required

Workspace reference. Both fields are omitted and an empty object is returned when the credential owner cannot view the workspace.

workspace.​workspace_idstring(uuid)

LegalOn-generated workspace ID.

workspace.​display_namestringnon-empty

Workspace display name.

created_atstring(date-time)required

Matter creation time.

last_message_atstring(date-time)

Time of the latest message. Omitted when no message exists.

Response
application/json
{ "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" }

Update a matter

Request

Overview

Partially updates matter fields, the requester, requesting department, status, assignees, and custom attributes in one request.

Processing notes

  • 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.
Security
OAuth2ClientCredentials
Path
matter_idstring(uuid)required

LegalOn-generated matter ID.

Bodyapplication/jsonrequired

Matter partial update request.

non-empty
titlestring[ 1 .. 200 ] characters

Matter title.

overviewstring[ 1 .. 4000 ] characters

Matter overview.

matter_typestring

Matter type.

Enum"other""legal_request""contract_review""contract_drafting"
due_datestring or null(date-time)

Matter due date. Set to null to clear the due date; omit to leave it unchanged.

status_idstring(uuid)

Status to set.

requesterobject(RequesterInput)

Requester identified by email address and name. A user or guest ID cannot be specified directly.

requesting_department_idstring or null(uuid)

Requesting department to set. Set to null to clear it.

main_assignee_idstring or null(uuid)

Main assignee user ID. Set to null to clear the main assignee.

sub_assignee_idsArray of strings(uuid)<= 30 itemsunique

Complete list of sub-assignee user IDs. An empty array clears all sub-assignees. The same user ID cannot be specified more than once.

custom_attributesArray of objects(MatterCustomAttributePatch)[ 1 .. 50 ] items

Custom attributes to update. Definitions not specified remain unchanged. The same definition ID cannot be specified more than once.

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"
      }
    ]
  }'

Responses

No Content

Response
No content

Files

Operations to create files for use by LegalOn resources.

Operations

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).

Operations