Connect your firm's MyCase account
MyCase IntegrationMyCase works differently from every other integration in LawLink. For Clio, Dropbox or Google Drive you simply click Connect. For MyCase, your firm has to ask MyCase to create an API application for you, and enter the credentials they issue into LawLink once. That request can take time — start it before you plan to use the integration, not on the day.
API access is only available on the MyCase Advanced tier. If your firm is on a lower plan, MyCase will decline the request.
In MyCase, the user who authorises LawLink must have "Manage your firm's preferences, billing, and payment options" set to Yes. Without it the connection fails with a "forbidden" error at the final step, after everything else has been set up correctly — so it is worth checking first.
This is usually a firm owner or administrator. It is not enough to be an attorney or staff member with full case access.
LawLink does not hold a shared MyCase application. Each firm gets its own, issued by MyCase support, and enters it into LawLink once. That means your firm's data is reached only through your firm's own credentials.
Contact MyCase support at mycase.com/support, say you are on the Advanced plan, and ask them to enable API access and issue your firm a Client ID and Client Secret so you can connect LawLink.
They will also ask for a redirect URI. It is always this:
https://app.lawlink.ai/api/v1/mycase/callbackSend them exactly that, character for character. Only MyCase support can change it afterwards, and anything else stops the connection from completing.
Start this early. It is a support request with a turnaround measured in days, not minutes, and nothing else can happen until it is done.
MyCase will give you a Client ID and a Client Secret. Those are the two values you enter in LawLink — and the only two. Treat the secret like a password.
You only enter them once. LawLink stores them encrypted against your firm, so colleagues connecting later have nothing to fill in.
Go to Integrations, find MyCase and click Connect. Enter the Client ID and Client Secret from MyCase, then continue. You will be sent to MyCase to sign in and approve access, and returned to LawLink automatically.
Sign in as the user with the billing/preferences permission. If you approve as anyone else, MyCase returns "forbidden" and the connection will not complete.
A MyCase connection belongs to the LawLink user who created it and shows that person's MyCase view, so each colleague connects on their own account. They do not need the Client ID or Secret: LawLink already holds your firm's application and reuses it, so for them Connect really is one button.
Leave the fields blank to reuse what your firm already entered. Fill them in only if MyCase has issued your firm a new application — for example after rotating the secret.
MyCase access expires quickly and its renewal window closes after two weeks. LawLink renews your connection automatically in the background, so under normal use you will never notice. But if LawLink is offline or unreachable for more than two weeks, the connection lapses and you will need to click Connect again — your firm's credentials are still saved, so there is nothing to re-enter.
Cases are MyCase's matters. Everything below is also reachable through LawLink's Universal API as matters.
status accepts open or closed. updated_after takes an ISO 8601 timestamp and is the way to pull only what has changed since your last sync.
# Open cases, first page
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/cases?limit=50&status=open" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Only cases touched since a date
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/cases?updated_after=2026-01-01T00:00:00-05:00" \
-H "Authorization: Bearer ACCESS_TOKEN"
# One case by id
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/cases/12345" \
-H "Authorization: Bearer ACCESS_TOKEN"
Only name is required to create a case.
# Create a case
curl -X POST \
"https://app.lawlink.ai/api/v1/mycase/cases" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Smith v. Jones", "description": "New matter"}'
# Update a case
curl -X PUT \
"https://app.lawlink.ai/api/v1/mycase/cases/12345" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "closed"}'
📌 MyCase has no PATCH. Its update endpoint requires the whole object, so LawLink reads the current case, merges your fields into it and sends the result back. You only send what you want to change.
# Notes on a case
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/cases/12345/notes?limit=50" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Add a note
curl -X POST \
"https://app.lawlink.ai/api/v1/mycase/cases/12345/notes" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"subject": "Call summary", "note": "Client confirmed the hearing date."}'
MyCase splits people and organisations across three resources. All three arrive as contacts in the Universal API, tagged Person, Company or Lead.
# Individual clients
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/clients?limit=50" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Organisations
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/companies?limit=50" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Leads
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/leads?limit=50" \
-H "Authorization: Bearer ACCESS_TOKEN"
Look people up by email address, phone or exact name. These filters are exact-match.
# By email
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/clients?email=jane@example.com" \
-H "Authorization: Bearer ACCESS_TOKEN"
# By exact name
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/clients?first_name=Jane&last_name=Doe" \
-H "Authorization: Bearer ACCESS_TOKEN"
⚠ There is no free-text contact search in MyCase. A partial name will not match. Where you ask for a search MyCase cannot run, LawLink returns an error saying so rather than quietly handing back every contact.
first_name and last_name are both required.
# Create a client
curl -X POST \
"https://app.lawlink.ai/api/v1/mycase/clients" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"first_name": "Jane", "last_name": "Doe", "email": "jane@example.com"}'
# Update a client
curl -X PUT \
"https://app.lawlink.ai/api/v1/mycase/clients/6789" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "new@example.com"}'
Tasks, calendar events and time entries. Time entries appear in the Universal API as activities.
# Tasks
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/tasks?limit=50" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Calendar events
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/events?limit=50" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Time entries changed since a date
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/time-entries?updated_after=2026-01-01T00:00:00-05:00" \
-H "Authorization: Bearer ACCESS_TOKEN"
⚠ These lists are firm-wide. MyCase cannot narrow tasks, events or time entries by case, assignee or date range — only updated_after is supported. Ask for a filter it cannot apply and LawLink names the offending one instead of returning an unfiltered list that looks like an answer.
MyCase requires name, priority, due_date and an assigned staff member. LawLink checks all four before sending and tells you which is missing.
# Create a task
curl -X POST \
"https://app.lawlink.ai/api/v1/mycase/tasks" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "File response", "priority": "High", "due_date": "2026-10-01", "staff": [42], "case": 12345}'
Events need name, start, end and staff.
# Create a calendar event
curl -X POST \
"https://app.lawlink.ai/api/v1/mycase/events" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Deposition", "start": "2026-10-02T14:00:00-05:00", "end": "2026-10-02T15:00:00-05:00", "staff": [42]}'
Documents are read-only through LawLink. You can browse, inspect versions and download; you cannot upload.
# Documents
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/documents?limit=50" \
-H "Authorization: Bearer ACCESS_TOKEN"
# One document's metadata
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/documents/4242" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Version history
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/documents/4242/versions" \
-H "Authorization: Bearer ACCESS_TOKEN"
Ask for a download link, then follow it immediately. Pass version_number to fetch a specific version.
# Temporary download URL
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/documents/4242/download-link" \
-H "Authorization: Bearer ACCESS_TOKEN"
# A specific version
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/documents/4242/download-link?version_number=2" \
-H "Authorization: Bearer ACCESS_TOKEN"
⚠ Download links expire after one minute. They are single-use in practice — never cache one, store it, or hand it to a user interface that might follow it later. Request a fresh link each time.
📌 Why there is no upload. MyCase's document API does not document any way to send file content, so an upload would create empty records. Rather than offer something that silently loses the file, LawLink does not offer it at all.
MyCase returns large results a page at a time and gives LawLink a marker for the next page rather than a page number. If you are working through a long list, use the token from the previous response — and note that these markers stop working after three days, so a paused job should start again from the beginning.
# Second page, using next_page_token from the previous response
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/cases?limit=100&page_token=NEXT_PAGE_TOKEN" \
-H "Authorization: Bearer ACCESS_TOKEN"
The lookups you need to fill in the fields above — staff ids for assigning tasks, and your firm's own custom fields, practice areas and case stages.
# Staff (use these ids for task and event assignment)
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/staff?status=active" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Custom field definitions
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/custom-fields" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Practice areas
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/practice-areas" \
-H "Authorization: Bearer ACCESS_TOKEN"
# Case stages
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/case-stages" \
-H "Authorization: Bearer ACCESS_TOKEN"
# The signed-in MyCase user
curl -X GET \
"https://app.lawlink.ai/api/v1/mycase/me" \
-H "Authorization: Bearer ACCESS_TOKEN"
Disconnecting MyCase in LawLink removes the stored access for your account. Nothing in MyCase is changed or deleted. If colleagues at your firm are still connected, reconnecting is a single button. If you were the last person connected, your firm's saved credentials go with the connection, so you will need the Client ID and Secret again — keep them somewhere you can find them.