Update Case Product
POST
/api/v1/cases/:caseIdUpdates a product associated with a case. Supports closing a case product with an optional reason, or updating the product's due date.
cv-api-key
Production
https://api.care360-next.carevalidate.com/api/v1/cases/:caseIdStaging
https://api-staging.care360-next.carevalidate.com/api/v1/cases/:caseIdParameters
Headers
cv-api-keystringrequiredYour unique API key for authentication.
Content-TypestringrequiredMust be application/json.
Example:
application/jsonPath Parameters
caseIdstring (UUID)requiredUnique identifier of the case
Example:
ec5e0d29-bf87-46b9-98e7-03848442fe53Request Body
actionstringrequiredMust be exactly `UPDATE_CASE_PRODUCT`
Values:UPDATE_CASE_PRODUCT
caseProductInputobjectrequiredObject containing the case product update details
Show 4 child properties
productIdstring (UUID)requiredUnique identifier of the product to update
statusstringoptionalNew status for the case product. Cannot be provided together with `dueDate`.
Values:CLOSE
reasonstringoptionalReason for the status change. Only allowed when status is CLOSE.
dueDatestring (ISO 8601 date)optionalNew due date for the case product. Cannot be in the past, and cannot be provided together with `status`. The product must be open (status updates and closed/inactive products are rejected).
Example:
2026-08-15note
Provide either status or dueDate in a single request — not both. A dueDate can only be updated on an open, non-closed case product.
Examples
- cURL
- cURL (Update Due Date)
- JavaScript
- Python
curl -X POST "https://api-staging.care360-next.carevalidate.com/api/v1/cases/ec5e0d29-bf87-46b9-98e7-03848442fe53" \
-H "cv-api-key: <redacted>" \
-H "Content-Type: application/json" \
-d '{
"action": "UPDATE_CASE_PRODUCT",
"caseProductInput": {
"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "CLOSE",
"reason": "Treatment completed"
}
}'
curl -X POST "https://api-staging.care360-next.carevalidate.com/api/v1/cases/ec5e0d29-bf87-46b9-98e7-03848442fe53" \
-H "cv-api-key: <redacted>" \
-H "Content-Type: application/json" \
-d '{
"action": "UPDATE_CASE_PRODUCT",
"caseProductInput": {
"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"dueDate": "2026-08-15"
}
}'
const caseId = "ec5e0d29-bf87-46b9-98e7-03848442fe53";
const response = await fetch(
`https://api.care360-next.carevalidate.com/api/v1/cases/${caseId}`,
{
method: "POST",
headers: {
"cv-api-key": "YOUR_SECRET_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
action: "UPDATE_CASE_PRODUCT",
caseProductInput: {
productId: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
status: "CLOSE",
reason: "Treatment completed",
},
}),
}
);
const data = await response.json();
console.log(data);
import requests
case_id = "ec5e0d29-bf87-46b9-98e7-03848442fe53"
response = requests.post(
f"https://api.care360-next.carevalidate.com/api/v1/cases/{case_id}",
headers={
"cv-api-key": "YOUR_SECRET_KEY",
"Content-Type": "application/json",
},
json={
"action": "UPDATE_CASE_PRODUCT",
"caseProductInput": {
"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "CLOSE",
"reason": "Treatment completed",
},
},
)
print(response.json())
Responses
▶200SuccessCase product updated successfully.
{
"status": 200,
"success": true,
"message": "Case product updated successfully",
"data": {
"success": true
}
}
▶400Bad RequestReturned when the case or product ID is invalid, the status string is invalid, or the API key is missing.
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "No Case found for provided details!",
"code": "VALIDATION_ERROR"
}
▶400Validation ErrorReturned when a field fails validation (e.g., invalid UUID format).
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "caseProductInput.productId, Product id must be a valid UUID",
"code": "VALIDATION_ERROR"
}
▶400Due Date In PastReturned when the provided due date is in the past.
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "caseProductInput.dueDate, Due date cannot be in the past",
"code": "VALIDATION_ERROR"
}
▶400Due Date With StatusReturned when both dueDate and status are provided in the same request.
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "dueDate and status cannot be updated in the same request",
"code": "VALIDATION_ERROR"
}
▶400Due Date On Closed/Inactive ProductReturned when a due date update is attempted on a closed or inactive case product. Due dates can only be updated on open products.
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "Due date can only be updated for an open case product",
"code": "VALIDATION_ERROR"
}
▶401UnauthorizedInvalid or missing API key, or organization not found.
{
"status": 401,
"success": false,
"message": "Unauthorized"
}
▶403ForbiddenCase does not belong to the organization, or permission denied.
{
"status": 403,
"success": false,
"message": "Forbidden"
}
Try It Out
Try itAPI Playground
▶info
Case Product Close activity notifications are sent via webhooks.