curl --request GET \
--url https://api.sandbox.casepathiq.com/v1/matters \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sandbox.casepathiq.com/v1/matters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.casepathiq.com/v1/matters"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"matters": [
{
"matterId": "<string>",
"clientReferenceId": "SDCC-2026-00482",
"clientCode": "SDCC",
"etag": "\"m1-7f3a9c2b\"",
"status": "received",
"intakeStatus": "needs_review",
"outstandingBalance": "1250.00",
"currency": "<string>",
"lifecycle": {
"hold": "none",
"reason": "client_instruction",
"effectiveOn": "2023-12-25"
},
"payments": {
"totalPaymentsAmount": "1999999999999.98",
"totalRefundsAmount": "1999999999999.98",
"totalReversalsAmount": "1999999999999.98",
"lastObservation": {
"externalPaymentId": "payobs_01JEXAMPLE",
"type": "payment",
"amount": "200.00",
"effectiveOn": "2023-12-25"
}
},
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"nextPageToken": "<string>",
"syncedThrough": "2026-09-21T01:58:00Z"
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}List Matters changed since a timestamp
Returns a minimized current-state projection, not an event log. Results are restricted to the authenticated Source integration and current Client grant.
The final page carries syncedThrough: the UTC instant this run is guaranteed to have covered. Pass it as the next run’s updatedSince. Callers never derive a boundary from their own clock or from the greatest updatedAt returned.
curl --request GET \
--url https://api.sandbox.casepathiq.com/v1/matters \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sandbox.casepathiq.com/v1/matters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sandbox.casepathiq.com/v1/matters"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"matters": [
{
"matterId": "<string>",
"clientReferenceId": "SDCC-2026-00482",
"clientCode": "SDCC",
"etag": "\"m1-7f3a9c2b\"",
"status": "received",
"intakeStatus": "needs_review",
"outstandingBalance": "1250.00",
"currency": "<string>",
"lifecycle": {
"hold": "none",
"reason": "client_instruction",
"effectiveOn": "2023-12-25"
},
"payments": {
"totalPaymentsAmount": "1999999999999.98",
"totalRefundsAmount": "1999999999999.98",
"totalReversalsAmount": "1999999999999.98",
"lastObservation": {
"externalPaymentId": "payobs_01JEXAMPLE",
"type": "payment",
"amount": "200.00",
"effectiveOn": "2023-12-25"
}
},
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"nextPageToken": "<string>",
"syncedThrough": "2026-09-21T01:58:00Z"
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}{
"type": "https://api.casepathiq.com/problems/usable_address_required",
"title": "Usable address required",
"status": 400,
"detail": "Each Party needs exactly one usable correspondence address that meets the letter minimum.",
"code": "usable_address_required",
"requestId": "6f2c1b8e-3a41-4f43-9a55-6b2f0b1b7c10",
"errors": [
{
"pointer": "/parties/1/addresses",
"code": "usable_address_required"
}
]
}Authorizations
Query Parameters
Response
Page of changed Matters
The UTC instant this run is guaranteed to have covered, and the value to send as the next run's updatedSince. It is null on every page except the final one, so a run abandoned part-way cannot advance a caller's saved boundary: save it only after every page has been applied.
It is held a short interval behind the run's snapshot boundary so it never reports coverage through a window in which writes may still be committing, and it is never earlier than the requested updatedSince. It is returned on the final page even when no Matter matched, which is what makes an empty run advance safely. Treat the exact lag as a server detail that may change; do not reimplement it or add an overlap of your own.
"2026-09-21T01:58:00Z"