Connect your firm's MyCase account

MyCase Integration
⚠

Before You Start

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

You need MyCase Advanced

API access is only available on the MyCase Advanced tier. If your firm is on a lower plan, MyCase will decline the request.

The person who connects needs one specific permission

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.

🔑

Getting Your Credentials

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.

Ask MyCase support for an API application

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/callback

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

Keep the two values safe until you connect

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.

🔗

Connecting

Connect MyCase in LawLink — the first person at your firm

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.

Everyone else just clicks Connect

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.

Stay connected

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

Cases are MyCase's matters. Everything below is also reachable through LawLink's Universal API as matters.

Listing and reading

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"

Creating and updating

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

# 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."}'
👤

Contacts

MyCase splits people and organisations across three resources. All three arrive as contacts in the Universal API, tagged Person, Company or Lead.

Clients, companies and leads

# 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"

Finding someone

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.

Creating and updating a client

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 & Events

Tasks, calendar events and time entries. Time entries appear in the Universal API as activities.

Listing

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

Creating a task

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

Creating an event

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

Documents are read-only through LawLink. You can browse, inspect versions and download; you cannot upload.

Browsing

# 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"

Downloading

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.

💡

Good to Know

Long lists are paged

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"

Firm reference data

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

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.