---
title: "List analyst review cases"
method: GET
path: "/cases"
tags: ["Review evidence"]
---

# List analyst review cases

`GET /cases`

## Request

- Base URL: `https://www.sanctionskit.com/api/v1`
- URL: `https://www.sanctionskit.com/api/v1/cases`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sanctionskit/apis/sanctionskit-api/docs/cases/get.ts> (a function with typed inputs; its response is checked against the schema)

Required API key scope: results:read.

## Query parameters

- `limit` integer
- `cursor` string, uuid
- `q` string
- `status` 'potential_match' | 'no_match'
- `review` 'open' | 'confirmed' | 'dismissed' | 'unreviewed'
- `origin` 'manual' | 'api' | 'batch' | 'monitor' | 'unknown'
- `evidence` 'available' | 'expired' | 'all'
- `screeningId` string, uuid

## Response `200`

Successful response. JSON object with the required data key. All properties marked required are present, including keys whose value may be null. Unmarked properties can be omitted; clients should tolerate additional response properties.

- object
  - `data` CasePage, required
    - `items` CaseSummary[], required
      - `id` string, uuid, required
      - `environment` string, required
      - `screening_id` string, uuid, required
      - `monitor_id` string, uuid, nullable, required
      - `decision` string, required
      - `business_disposition` string, required
      - `review_started_at` string, date-time, required
      - `superseded_by_screening_id` string, uuid, nullable, required
      - `superseded_by_case_id` string, uuid, nullable, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `latest_screening_id` string, uuid, nullable, required
      - `counterparty_id` string, uuid, nullable, required
      - `assignee_id` string, nullable, required
      - `priority` string, required
      - `due_at` string, date-time, nullable, required
      - `escalated_at` string, date-time, nullable, required
      - `revision` integer, required
      - `requires_second_review` boolean, required
      - `review_state` string, required
      - `submitted_by` string, nullable, required
      - `approved_by` string, nullable, required
      - `submitted_screening_id` string, uuid, nullable, required
      - `retention_policy` string, required
      - `retention_years` integer, nullable, required
      - `retention_days` integer, nullable, required
      - `closed_at` string, date-time, nullable, required
      - `retention_expires_at` string, date-time, nullable, required
      - `retention_trigger` string, required
      - `retention_event_at` string, date-time, nullable, required
      - `retention_event_reason` string, nullable, required
      - `retention_event_actor` string, nullable, required
      - `subjectName` string, nullable, required
      - `entityType` string, nullable, required
      - `origin` string, required
      - `status` 'potential_match' | 'no_match', nullable, required
      - `matchCount` integer, required
      - `evidenceAvailable` boolean, required
      - `retention` 'standard' | 'minimal', required
      - `expiresAt` string, date-time, nullable, required
    - `nextCursor` string, nullable, required

## Other responses

- `400`: **invalid_request** — Correct the request fields, resource identifiers, JSON body or query parameters before retrying.
- `401`: **authentication_required** — Send Authorization: Bearer with a valid API key. An omitted header can produce authentication_required; invalid supplied credentials produce invalid_api_key. **invalid_api_key** — Use an active key for the intended environment.
- `403`: **permission_denied** — Ask an organization owner to grant the required role or API-key scope. **insufficient_scope** — Use a key with the scope stated in this operation.
- `405`: **method_not_allowed** — Use a method in the Allow response header. OPTIONS lists supported methods; HEAD follows GET authorization and returns no body.
- `413`: **response_too_large** — Reduce the requested page size or use the documented segmented case archive. No evidence is silently truncated.
- `429`: **rate_limited** — Wait for the request window to reset and retry with backoff.
- `500`: **internal_error** — Retry with backoff. For writes reuse the same idempotency key and identical input; include requestId when contacting support.
- `503`: **temporarily_unavailable** — Honor Retry-After when present and retry with bounded backoff. Follow this endpoint’s retry contract; preserve the same key and input for idempotent writes. Contact support with requestId if the failure persists.

---

[API](https://skmtc.dev/sanctionskit/apis/sanctionskit-api.md) - [All operations](https://skmtc.dev/sanctionskit/apis/sanctionskit-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sanctionskit/apis/sanctionskit-api/revisions/ee35d211051a?raw)
