By Tetiana Stoyko
- CTO & Co-Founder
How to connect to the PracticePanther, Clio, Actionstep and Rocket Matter APIs: getting credentials, OAuth 2.0 flow, token refresh and code examples.
Most popular legal practice management software (LPMS) platforms, including Clio, PracticePanther, Actionstep, and Rocket Matter, have open APIs you can use to build custom integrations. All four use OAuth 2.0, but they differ in how you get API access, how long tokens last, and how base URLs are built.
A modern law firm needs dependable software to keep its operations running smoothly. At the very least, an LPMS takes care of matter management, client management, and task management. Many firms also add a client portal, trust accounting, and document assembly on top.
In essence, an LPMS brings many separate parts of legal practice into one system. Most platforms work alongside your existing software or offer an Open API, so you can build PracticePanther integrations and other custom connections on your own.
Below, we cover the most popular law APIs and show you how to implement each one in detail. All of them follow a similar pattern and use OAuth 2.0 authorization.
All four platforms use OAuth 2.0, so the main differences come down to how you get access, how long tokens last, and where you send requests. Here’s a quick comparison (as of October 2026):
PracticePanther is a legal practice management platform that you can connect with other systems. With the PracticePanther API, developers can integrate it with other applications or services, create custom reports and dashboards, automate workflows, and tailor PracticePanther to a firm’s practice.
The API covers accounts, bank accounts, call logs, contacts, custom fields, expenses, invoices, matters, and time entries.
To get a Client ID and Client Secret, first create an account on the PracticePanther website. Then request API access: click Support at the top right of the page, choose Ask us Anything, and ask for API access.
There’s no self-serve signup here. For API partnerships, PracticePanther approves access case by case.
Once you’re approved, you’ll be able to create an app. Give it a name, add your redirect URL, and save it. PracticePanther then generates your OAuth 2.0 credentials: a Client ID and a Client Secret.
Please note: your redirect URL must use HTTPS and be registered with the PracticePanther development team. In development, local http hosts are also accepted.
With your OAuth 2.0 credentials in hand, you can request access and refresh tokens. First, redirect the user to this URL:
https://app.practicepanther.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&state=YOUR_STATE
After the user signs in, PracticePanther sends them back to your redirect URL with an authorization code:
https://YOUR_REDIRECT_URI/?code=THE_AUTHORIZATION_CODE
Next, exchange the code for access and refresh tokens with a POST request to https://app.practicepanther.com/oauth/token. The request looks like this:
import * as qs from 'qs';
import axios from 'axios';
const code = body.code;
const authPayload = {
grant_type: 'authorization_code',
code,
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
redirect_uri: 'YOUR_REDIRECT_URI',
};
const authHeaders = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
};
const response = await axios.post('https://app.practicepanther.com/oauth/token', qs.stringify(authPayload), authHeaders);
Please note: send the payload as x-www-form-urlencoded.
The response will look like this:
{
"access_token": "SOME_TOKEN",
"token_type": "bearer",
"expires_in": 86400,
"refresh_token": "SOME_TOKEN"
}
The access token expires in one day. To refresh it, send the same request with this payload:
const authPayload = {
grant_type: 'refresh_token',
refresh_token: 'YOUR_REFRESH_TOKEN',
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
};
Keep an eye on the refresh token too. According to PracticePanther’s API reference, it lasts up to 14 days, so make sure your integration refreshes tokens before then.
API requests go to https://app.practicepanther.com/api/v2/. For every call, include the access token in the Authorization header:
const requestHeaders = {
Authorization: `Bearer YOUR_ACCESS_TOKEN`,
};
List endpoints also support OData queries, so you can filter and sort results with parameters like $filter and $orderby.
You’ll find the full reference, sample code, SDKs, and libraries in the PracticePanther API documentation.
The key entities in this API are Contacts, Matters, Time Entries, and Expenses. One thing to keep in mind: the Contacts API is read-only. For create, update, and delete operations, use the Accounts endpoints instead.
Rocket Matter is a legal practice management system (LPMS) that helps firms design workflows, move cases through their stages, set up automated online payments, and generate reports. By connecting the Rocket Matter API to your application, you can bring this data and functionality into your own product.
API access isn’t self-serve, so start by contacting Rocket Matter support. Rocket Matter is part of ProfitSolv, and according to third-party integrations, new connections now go through the ProfitSolv Integration API.
Rocket Matter issues your credentials and tells you which API and hosts to use. When you reach out, describe what your integration does and which data it needs, so Rocket Matter can set up the right access.
The flow is standard OAuth 2.0 with an authorization code. You redirect the user to Rocket Matter’s consent page, receive a code at your redirect URL, and exchange it for access and refresh tokens.
Rocket Matter provides the exact endpoints, hosts, and token lifetimes together with your credentials.
Please note: the older Rocket Matter API (API_V2, documented at developer.rocketmatter.com) uses session-based tokens. If you’re maintaining an older integration, plan a migration.
Once you have an access token, send it with every request in the format your Rocket Matter documentation specifies.
According to third-party integrations, the newer API covers matters, clients and contacts, time entries, expenses, invoices, payments, transactions, users, and documents (read-only). Still, check the exact scope with Rocket Matter before you plan your integration, since features like tasks and calendars may not be available.
Actionstep is a legal practice management platform built around workflows. With the Actionstep API, developers can work with workflow elements that describe the steps, tasks, and timing of any procedure. You can also access documents and management features through code.
To get API credentials, contact Actionstep’s support team. You’ll get sandbox credentials first (an API access key and a client secret).
Keep the costs and timeline in mind, too. Actionstep charges a $500 setup fee for API credentials, and every production app goes through an API review before it gets its own production credentials. If you plan a launch date, give Actionstep’s support team at least two weeks’ notice to schedule the review.
Also note that sandbox and production credentials aren’t interchangeable, and API access isn’t available for Actionstep Express systems.
The flow is similar to the previous integrations. Once you have your OAuth 2.0 credentials, redirect the user to this URL:
https://go.actionstep.com/api/oauth/authorize?response_type=code&scope=<YOUR_SCOPES>&client_id=<YOUR_CLIENT_ID>&redirect_uri=<YOUR_REDIRECT_URI>
The scope is required. List the resources your app needs, for example actions participants timerecords.
Actionstep then sends the user back to your redirect URL with a code:
https://YOUR_REDIRECT_URI/?code=THE_AUTHORIZATION_CODE
Use the code to request access and refresh tokens from https://api.actionstep.com/api/oauth/token. For the sandbox, use go.actionstepstaging.com to authorize and api.actionstepstaging.com to get tokens.
As with PracticePanther, set the Content-Type for this request to application/x-www-form-urlencoded:
const code = body.code;
const authPayload = {
grant_type: 'authorization_code',
client_id: '<YOUR_CLIENT_ID>',
client_secret: '<YOUR_CLIENT_SECRET>',
redirect_uri: '<YOUR_REDIRECT_URI>',
code,
};
const headers = {
'Content-Type': 'application/x-www-form-urlencoded',
};
const url = 'https://api.actionstep.com/api/oauth/token';
const tokens = await axios.post(url, qs.stringify(authPayload), { headers });
The access token lasts 8 hours. The refresh token lasts 21 days, and you get a new one with every new access token.
To refresh a token, send the same request with grant_type: 'refresh_token' and your refresh token instead of the code.
For every API call, put the access token in the Authorization header. Also set both the Content-Type and Accept headers to application/vnd.api+json:
const requestHeaders = {
'Content-Type': 'application/vnd.api+json',
Accept: 'application/vnd.api+json',
Authorization: 'Bearer <YOUR_ACCESS_TOKEN>',
};
Note that the base URL for API calls isn’t fixed. Take the api_endpoint value from the token response and add rest/ plus the resource name, for example:
https://ap-southeast-2.actionstep.com/api/rest/actiontypes
You’ll find the list of all available resources in the Actionstep API documentation.
Clio is an LPMS designed for small and mid-sized law firms. Clio integrations with Clio Manage are built on the Clio Manage API (v4).
The API gives you access to the system’s functionality and the data stored in a firm’s Clio account. It includes methods for working with activities, bills, contacts, matters, tasks, and users.
Getting credentials is easier here than with the other three platforms. Just create an account at Clio and register your app in the Clio developer portal. Once you fill in the required information, you’ll receive your App Key and App Secret.
Along with the app name, you’ll need to add at least one redirect URI. You can also set a deauthorization callback URL, so Clio notifies your app whenever a firm revokes its access.
The authorization flow is very similar to the previous integrations, only with different URLs. First, redirect the user to:
https://app.clio.com/oauth/authorize?response_type=code&client_id=<YOUR_CLIENT_ID>&redirect_uri=<YOUR_REDIRECT_URI>&state=<YOUR_STATE>
After the user is redirected back to your REDIRECT_URI, send the code to https://app.clio.com/oauth/token with Content-Type application/x-www-form-urlencoded and grant_type=authorization_code.
The access token lasts 30 days. To renew it, send the same request with grant_type=refresh_token and your refresh token. Clio Manage refresh tokens don’t expire, so store them securely. If a firm disconnects your app, you can revoke its access token with a POST request to https://app.clio.com/oauth/deauthorize.
Pay attention to regions as well. Clio hosts accounts in four of them: US (app.clio.com), EU (eu.app.clio.com), Canada (ca.app.clio.com), and Australia (au.app.clio.com). A token issued in one region doesn’t work in another.
Clio also offers a newer Clio Platform API (auth.api.clio.com), which currently covers Clio Grow. It works a bit differently: access tokens last 24 hours, and the refresh token rotates on each use.
For every API call, put the access token in the Authorization header:
const requestHeaders = {
Authorization: 'Bearer <YOUR_ACCESS_TOKEN>',
};
You’ll find all endpoints in the Clio API documentation.
One more useful feature: Clio supports bulk actions. They come in handy when you need to move large amounts of data to or from Clio.
We can help you figure out which API fits your workflow and what to connect first.
Legal data is confidential by default, so an LPMS integration needs more care than a typical SaaS connection. Here’s what law firm API security looks like in practice:
Most of this work happens on the server side, so make sure your backend team plans for it from the start.
With API integration, an LPMS can do a lot more for a law firm. Firms can send fresh leads from automated searches straight into their system, store docket entries and documents, get automatic alerts about new filings and case updates, and much more.
For a traditional law firm, two benefits stand out: lower costs and higher productivity. In other words, lawyers save time, money, and effort by automating previously time-consuming operations.
Now you know the steps for API integration with Clio, PracticePanther, Rocket Matter, and Actionstep. If you need PracticePanther integrations or want to connect any other LPMS, our integration consultants will be glad to help you implement them.
Clio, PracticePanther, Actionstep, and Rocket Matter all offer open APIs with OAuth 2.0. Clio lets developers register apps on their own, while PracticePanther, Actionstep, and Rocket Matter issue API credentials on request.
Request it from PracticePanther support. Access is approved case by case. Once approved, you get OAuth 2.0 client credentials, and your redirect URL must use HTTPS and be registered with their team.
Yes. Clio Manage has a REST API (v4) secured with OAuth 2.0. US accounts use app.clio.com, while EU, Canadian, and Australian accounts use their own regional URLs. Tokens only work in their own region.
Access tokens last 24 hours in PracticePanther, 8 hours in Actionstep, and 30 days in Clio Manage. Use the refresh token to get a new one automatically. Actionstep refresh tokens last 21 days and are renewed each time; PracticePanther refresh tokens last up to 14 days, and Clio Manage refresh tokens don’t expire.
They limit what each integration can access and protect the credentials it uses. In practice, that means requesting only the scopes you need, storing secrets and tokens encrypted, keeping data in the right region, and logging every action on client data. Most firms will also ask for a security review before connecting a new app.
Got no clue where to start? Why don’t we discuss your idea?