> For the complete documentation index, see [llms.txt](https://docs.monolithforensics.com/monolith/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.monolithforensics.com/monolith/monolith-api-and-webhooks/cases-api/get-cases.md).

# Get Cases

Retrieve a list of Monolith Cases or a specific Case by UUID using supported filters and pagination.

The **Get Cases** endpoints retrieve Case records from Monolith.

Use the collection endpoint to retrieve and filter multiple Cases, or provide a Case UUID to retrieve a specific Case.

### Endpoints

```
GET /api/v1/cases
```

Retrieves a paginated list of Cases.

```
GET /api/v1/cases/:uuid
```

Retrieves a specific Case identified by UUID.

All requests require a valid API key in the `X-API-KEY` request header. See [**Authentication**](/monolith/monolith-api-and-webhooks/api-access/authentication.md) for additional guidance.

### Path Parameters

| Name   | Type     | Required | Description                                                            |
| ------ | -------- | -------- | ---------------------------------------------------------------------- |
| `uuid` | `string` | No       | Case UUID when retrieving a specific Case using `/api/v1/cases/:uuid`. |

### Query Parameters

Only the supported query parameters below are accepted. Unknown query parameters return an HTTP `400` response.

| Name          | Type      | Required | Validation / Behavior                                                                            |
| ------------- | --------- | -------- | ------------------------------------------------------------------------------------------------ |
| `pageSize`    | `integer` | No       | Must be a positive integer. Current service behavior uses `1000` as the default upper page size. |
| `page`        | `integer` | No       | Must be a positive integer.                                                                      |
| `search`      | `string`  | No       | Searches across multiple Case-related fields.                                                    |
| `uuid`        | `string`  | No       | Alternate way to filter for a Case by UUID.                                                      |
| `case_id`     | `integer` | No       | Must be a positive integer.                                                                      |
| `user_id`     | `integer` | No       | Must be a positive integer. Filters by assigned user or Case Lead.                               |
| `client_id`   | `integer` | No       | Must be a positive integer.                                                                      |
| `case_number` | `string`  | No       | Maximum length `255`. Uses an exact-match filter.                                                |

### Successful Response

A successful request returns an HTTP `200` response.

When retrieving a list of Cases, the response includes the matching records and pagination information.

```json
{
  "data": [
    {
      "case_id": 123,
      "uuid": "abc123...",
      "case_number": "CASE-0001",
      "case_name": "Example Case"
    }
  ],
  "total": 1,
  "pageCount": 1,
  "currentPage": 1,
  "nextPage": null,
  "pageSize": 1000
}
```

#### Pagination Fields

| Field         | Description                                                       |
| ------------- | ----------------------------------------------------------------- |
| `data`        | Array containing the matching Case records.                       |
| `total`       | Total number of matching Cases.                                   |
| `pageCount`   | Number of pages available for the current query.                  |
| `currentPage` | Current page number.                                              |
| `nextPage`    | Next available page number, or `null` when there is no next page. |
| `pageSize`    | Number of records included per page.                              |

### Error Responses

#### 400 - Validation Error

Invalid query parameters return an HTTP `400` response.

```json
{
  "message": "Invalid case data",
  "success": false,
  "errors": [
    {
      "message": "\"page\" must be a positive number"
    }
  ]
}
```

#### 500 - Server Error

An unexpected server error may return an HTTP `500` response.

```json
{
  "message": "Error getting case",
  "success": false
}
```

### Example Request

The following example retrieves the first 25 Cases matching the search value `fraud`.

```bash
curl -X GET "<api-base-url>/cases?page=1&pageSize=25&search=fraud" \
  -H "X-API-KEY: <api-key>"
```

Replace `<api-base-url>` with the `/api/v1` base URL for your Monolith environment.

See **API Endpoints** for the correct API base URL.

### Related Documentation

* [**Cases API Summary**](/monolith/monolith-api-and-webhooks/cases-api/summary.md)
* [**Create Case**](/monolith/monolith-api-and-webhooks/cases-api/create-case.md)
* [**Update Case**](/monolith/monolith-api-and-webhooks/cases-api/update-case.md)
* [**Delete Case**](/monolith/monolith-api-and-webhooks/cases-api/delete-case.md)
* [**Authentication**](/monolith/monolith-api-and-webhooks/api-access/authentication.md)
* [**API Endpoints**](/monolith/monolith-api-and-webhooks/api-access/api-endpoints.md)
