Cases
The Cases API is the central resource for legal matter management. Every case can have assigned parties, staff, documents, deadlines, and notes.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v1/cases | List cases |
POST | /api/v1/cases | Create a case |
GET | /api/v1/cases/{id} | Get a case |
PUT | /api/v1/cases/{id} | Update a case |
DELETE | /api/v1/cases/{id} | Delete a case |
GET | /api/v1/cases/{id}/parties | List case parties |
POST | /api/v1/cases/{id}/parties | Add parties to a case |
PUT | /api/v1/cases/{id}/parties | Replace case parties |
GET | /api/v1/cases/{id}/staff | List assigned staff |
POST | /api/v1/cases/{id}/staff | Add staff to a case |
DELETE | /api/v1/cases/{id}/staff | Remove staff from a case |
GET | /api/v1/cases/{id}/timeline | Get case timeline events |
POST | /api/v1/cases/{id}/links | Link two cases |
GET | /api/v1/cases/{id}/links | List case links |
DELETE | /api/v1/cases/{id}/links/{link_id} | Remove a case link |
Required scope: cases:read for GET endpoints, cases:write for POST/PUT/DELETE, cases:delete for DELETE.
The Case Object
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Smith v. Jones -- Employment Dispute",
"file_number": "AZ-2026-042",
"status": "active",
"type": "litigation",
"description": "Wrongful termination claim filed by former employee.",
"dezernat": "Employment Law",
"created_at": "2026-01-15T09:00:00Z",
"updated_at": "2026-05-20T14:30:00Z",
"parties": [
{
"id": "usr_01ABCDEF",
"role": "client",
"name": "John Smith"
}
],
"staff": [
{
"id": "usr_01GHIJKL",
"name": "Dr. Anna Mueller",
"role": "lead_attorney"
}
]
}
List Cases
GET /api/v1/cases
Query Parameters
| Parameter | Type | Description |
|---|---|---|
cursor | string | Pagination cursor from previous response |
limit | integer | Number of results (1-100, default 50) |
status | string | Filter by status: active, closed, archived |
search | string | Search by case name or file number |
Response
{
"data": [
{ "id": "...", "name": "...", "file_number": "...", "status": "..." }
],
"pagination": {
"cursor": "eyJpZCI6IjU1MGU4NDAwIn0=",
"has_more": true
}
}
Create a Case
POST /api/v1/cases
Request Body
{
"name": "Smith v. Jones",
"file_number": "AZ-2026-042",
"type": "litigation",
"description": "Wrongful termination claim",
"dezernat": "Employment Law"
}
Response
Returns 201 Created with the full case object.
Update a Case
PUT /api/v1/cases/{id}
Request Body
{
"status": "closed",
"description": "Case settled out of court."
}
Only included fields are updated (partial update semantics).
Error Responses
| Status | Code | Meaning |
|---|---|---|
| 400 | VALIDATION_ERROR | Invalid request body |
| 401 | AUTH_INVALID_KEY | Missing or invalid API key |
| 403 | AUTH_INSUFFICIENT_SCOPE | Missing cases:read or cases:write scope |
| 404 | CASE_NOT_FOUND | Case ID does not exist |
Next Steps
Was this helpful?