Update a monitoring case
Applies a partial update to status, resolution, assignee, priority,
or queue while the case is not CLOSED. Omitted fields are left
unchanged. Closing requires status CLOSED and resolution.
Closed cases reject this operation. This operation is program-scoped.
Authentication & Headers
| Header | Type | Requirement | Description |
|---|---|---|---|
| Authorization | string | REQUIRED | API key passed as an HTTP Bearer token: Bearer rk_live_... |
| X-Program-ID | UUID | PROGRAM-SCOPED | Program boundary UUID that scopes the issuing card, wallet, or transfer. |
| Content-Type | string | REQUIRED | Must be application/json. |
| Idempotency-Key | string | OPTIONAL | Unique UUID to prevent duplicate execution of financial creations or mutations. |
Path Parameters
| Parameter | Type | Requirement | Description |
|---|---|---|---|
| case_id | string | REQUIRED | Unique identifier of the monitoring case. |
Request Body Schema
application/jsonLifecycle of a monitoring case. Allowed transitions: `OPEN` → `IN_REVIEW`, `ESCALATED`, `CLOSED`. `IN_REVIEW` → `OPEN`, `ESCALATED`, `CLOSED`. `ESCALATED` → `IN_REVIEW`, `CLOSED`. `CLOSED` is terminal. PATCH `status` to move the case. Closing requires `resolution`. Comments and files are accepted in every status except `CLOSED`.
OPENIN_REVIEWESCALATEDCLOSEDOutcome. Required when `status` is `CLOSED`. Ignored unless closing. Null is rejected on close.
Replacement operator. Null unassigns the case.
Operator urgency of a monitoring case. Distinct from `risk_score`, which is the numeric signal that opened the case. `CRITICAL` is the highest.
LOWMEDIUMHIGHCRITICALQueue to move the case into. Null removes it from its queue.
Response Codes & Schemas
{
"id": "4c7e2a19-8d3f-4b61-a5c0-1f6b9e0d4572",
"object": "monitoring_case",
"wallet_id": "4d8f2a10-6c3e-4b91-9e5a-2f7c8d1e0b44",
"wallet_entity_id": "2e9c4b71-8a5d-4f03-b6e2-1c7d9a0f3e58",
"queue_id": "6a8d1e30-5b2c-4f47-9d0e-3c4f5a6b7182",
"assignee_id": "7b9e2f41-6c3d-4058-ae1f-4d5a6b7c8293",
"status": "IN_REVIEW",
"priority": "HIGH",
"category": "FRAUD",
"resolution": null,
"trigger": {
"type": "RULE",
"rule_id": "8e4c1a92-2f70-4c45-9b3d-0a1e6f7c8290",
"score": null
},
"transaction_ids": [
"2b5f7a28-9c4d-4e01-a6f3-1d8e0b7c2354"
],
"card_ids": [
"0c4e8f16-2a7b-4d93-b5e1-8f3a6c9d0142"
],
"risk_score": 82,
"sla_due_at": "2026-08-28T16:20:00Z",
"created_at": "2026-08-27T16:20:00Z",
"updated_at": "2026-08-27T16:45:00Z"
}{
"error": {
"type": "invalid_request_error",
"code": "invalid_request",
"message": "invalid order by: foo. Valid options are: [created_at updated_at]",
"param": "order_by",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"doc_url": "https://docs.rookpayments.com/errors/invalid_request"
}
}{
"error": {
"type": "authentication_error",
"code": "authentication_error",
"message": "A valid API key is required.",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"doc_url": "https://docs.rookpayments.com/errors/authentication_error"
}
}{
"error": {
"type": "permission_error",
"code": "permission_denied",
"message": "The API key cannot access this program.",
"param": "X-Program-ID",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"doc_url": "https://docs.rookpayments.com/errors/permission_denied"
}
}{
"error": {
"type": "not_found_error",
"code": "not_found",
"message": "No card found for the given id.",
"param": "card_id",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"doc_url": "https://docs.rookpayments.com/errors/not_found"
}
}{
"error": {
"type": "conflict_error",
"code": "conflict",
"message": "The card cannot be reissued from its current state.",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"doc_url": "https://docs.rookpayments.com/errors/conflict"
}
}{
"error": {
"type": "invalid_request_error",
"code": "insufficient_funds",
"message": "The source financial account does not have enough available balance.",
"param": "amount",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"doc_url": "https://docs.rookpayments.com/errors/insufficient_funds"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after the number of seconds in Retry-After.",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"doc_url": "https://docs.rookpayments.com/errors/rate_limited"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "An unexpected error occurred. Retry with the same Idempotency-Key.",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"doc_url": "https://docs.rookpayments.com/errors/internal_error"
}
}