Retrieve Products
List Products
GET
/api/v1/organization/productsLists all products for an organization. Optionally filters by visibility.
cv-api-key
Production
https://api.care360-next.carevalidate.com/api/v1/organization/productsStaging
https://api-staging.care360-next.carevalidate.com/api/v1/organization/productsParameters
Headers
cv-api-keystringrequiredOrganization API key provided by CareValidate
AcceptstringoptionalResponse format. Use `application/json`
Query Parameters
isVisibleboolean stringoptionalFilter products by visibility. Omit to return all.
Values:truefalse
Examples
- cURL
- JavaScript
- Python
curl -X GET "https://api.care360-next.carevalidate.com/api/v1/organization/products?isVisible=true" \
-H "cv-api-key: YOUR_SECRET_KEY_HERE" \
-H "Accept: application/json"
const response = await fetch(
"https://api.care360-next.carevalidate.com/api/v1/organization/products?isVisible=true",
{
method: "GET",
headers: {
"cv-api-key": "YOUR_SECRET_KEY_HERE",
"Accept": "application/json",
},
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.get(
"https://api.care360-next.carevalidate.com/api/v1/organization/products",
headers={
"cv-api-key": "YOUR_SECRET_KEY_HERE",
"Accept": "application/json",
},
params={"isVisible": "true"},
)
print(response.json())
Responses
▶200SuccessProducts returned successfully.
{
"status": 200,
"success": true,
"message": "Products returned successfully",
"data": [
{
"id": "product-uuid",
"name": "Weight Loss Program",
"imageUrl": "https://.../product.png",
"description": "Program description",
"price": "99.99",
"priceUnit": "USD",
"isVisible": true
}
]
}
▶400Validation ErrorReturned when request parameters are invalid.
{
"status": 400,
"success": false,
"message": "Invalid request parameters",
"error": "..."
}
▶500Internal Server ErrorReturned when an unexpected error occurs.
{
"status": 500,
"success": false,
"message": "Internal server error",
"error": "..."
}
Get Product by ID
GET
/api/v1/organization/products/:productUUIDRetrieves a single product by its UUID. Optionally includes follow-up and optional follow-up form details.
cv-api-key
Parameters
Path Parameters
productUUIDstring (UUID)requiredUUID of the product
Example:
3b67583d-e17b-44de-8811-bdf520b99425Query Parameters
includeFollowupFormboolean stringoptionalInclude follow-up form details
Values:truefalse
includeOptionalFollowupFormboolean stringoptionalInclude optional follow-up form details
Values:truefalse
Examples
- cURL (without forms)
- cURL (with forms)
- JavaScript
- Python
curl -X GET "https://api.care360-next.carevalidate.com/api/v1/organization/products/3b67583d-e17b-44de-8811-bdf520b99425" \
-H "cv-api-key: YOUR_SECRET_KEY_HERE" \
-H "Accept: application/json"
curl -X GET "https://api.care360-next.carevalidate.com/api/v1/organization/products/3b67583d-e17b-44de-8811-bdf520b99425?includeFollowupForm=true&includeOptionalFollowupForm=true" \
-H "cv-api-key: YOUR_SECRET_KEY_HERE" \
-H "Accept: application/json"
const productUUID = "3b67583d-e17b-44de-8811-bdf520b99425";
const params = new URLSearchParams({
includeFollowupForm: "true",
includeOptionalFollowupForm: "true",
});
const response = await fetch(
`https://api.care360-next.carevalidate.com/api/v1/organization/products/${productUUID}?${params}`,
{
method: "GET",
headers: {
"cv-api-key": "YOUR_SECRET_KEY_HERE",
"Accept": "application/json",
},
}
);
const data = await response.json();
console.log(data);
import requests
product_uuid = "3b67583d-e17b-44de-8811-bdf520b99425"
response = requests.get(
f"https://api.care360-next.carevalidate.com/api/v1/organization/products/{product_uuid}",
headers={
"cv-api-key": "YOUR_SECRET_KEY_HERE",
"Accept": "application/json",
},
params={
"includeFollowupForm": "true",
"includeOptionalFollowupForm": "true",
},
)
print(response.json())
Responses
▶200Success (without forms)Product returned successfully without form data.
{
"status": 200,
"success": true,
"message": "Product returned successfully",
"data": {
"product": {
"id": "product-uuid",
"name": "Weight Loss Program",
"imageUrl": "https://.../product.png",
"description": "Program description",
"price": "99.99",
"priceUnit": "USD",
"initialDiscount": "10.00",
"isSoldOut": false,
"isVisible": true
}
}
}
▶200Success (with forms)Product returned with intake, follow-up, and optional follow-up form details.
{
"status": 200,
"success": true,
"message": "Product returned successfully",
"data": {
"product": {
"id": "...",
"name": "...",
"imageUrl": "...",
"description": "...",
"price": "...",
"priceUnit": "USD",
"initialDiscount": "...",
"isSoldOut": false,
"isVisible": true
},
"intakeForm": {
"id": "form-uuid",
"name": "Intake Form",
"description": "...",
"isActive": true,
"questions": [
{
"hint": "...",
"id": "question-uuid",
"isPHI": false,
"options": [
"Option 1",
"Option 2"
],
"placeholder": "...",
"required": true,
"text": "Question text",
"type": "TEXT",
"renderMode": null,
"index": 0,
"condition": null,
"organizationDocument": null
}
]
},
"followupForm": {
"id": "form-uuid",
"name": "Follow-up Form",
"description": "...",
"isActive": true,
"questions": [
{
"id": "..."
}
]
},
"optionalFollowupForm": {
"id": "form-uuid",
"name": "Optional Follow-up Form",
"description": "...",
"isActive": true,
"questions": [
{
"id": "..."
}
]
}
}
}
▶400Validation ErrorReturned when the request is invalid (e.g., missing key or invalid booleans).
{
"status": 400,
"success": false,
"message": "Invalid request parameters",
"error": "..."
}
▶400Not FoundReturned when the product UUID does not match any product.
{
"status": 400,
"success": false,
"error": "Bundle with ID 00000000-0000-0000-0000-000000000000 not found"
}
▶500Internal Server ErrorReturned when an unexpected error occurs.
{
"status": 500,
"success": false,
"message": "Internal server error",
"error": "..."
}
Try It Out
Try itAPI Playground
▶Changelog
| Version | Date | Changes |
|---|---|---|
| 1.0 | 2025-12-30 | Initial products API documentation |