List all products in a project
Returns an array of product summary objects for a project. Products are sorted by sort field (ascending) and only non-deleted products are returned.
Products in Leadtime are standardized services or items from the product catalog that have been imported into a project. They can represent one-time purchases, subscriptions, or quantity-based services. Each product includes pricing information, quantity, active date ranges, and calculated final prices based on selected variants and options.
The response includes:
- Product identification (id, name, finalName)
- Category and logo information
- Quantity and pricing (fixed, subscription, per-unit)
- Final calculated prices (includes variant and option adjustments)
- Active date range (activeFrom, activeTo, isActive flag)
GET
/projects/{projectId}/productsAuthorization
AuthorizationOAuth2 access token · headerrequiredScopes:
api:reador
AuthorizationBearer token (JWT) · headerrequiredPath parameters
projectIdstring<uuid>requiredProject ID
Responses
200Products retrieved successfully
Array of
ProjectProductResponseDtoactiveFromstring<date> | nullrequiredStart date when this product becomes active. Used for time-limited pricing versions. Format: ISO 8601 date (YYYY-MM-DD). Null if no start date is set.
activeTostring<date> | nullrequiredEnd date when this product becomes inactive. Used for time-limited pricing versions. Format: ISO 8601 date (YYYY-MM-DD). Null if no end date is set.
categoryIdstringrequiredUUID of the product category
finalNameobject | nullrequiredFinal display name combining product name and active variant name (if a variant is active). If no variant is active, this matches the product name.
finalPriceFixedobject | nullrequiredFinal calculated fixed price including variant and option adjustments. This is the price that will be used for billing. Null if the product does not have fixed pricing.
finalPricePerUnitobject | nullrequiredFinal calculated per-unit price including variant and option adjustments. This is the price per unit (e.g., per user, per hour). Null if the product does not have per-unit pricing.
finalPriceSubscriptionobject | nullrequiredFinal calculated subscription price including variant and option adjustments. This is the recurring price per billing period. Null if the product does not have subscription pricing.
fixedDiscountAmountnumberrequiredFixed price discount amount (0 = no discount)
fixedDiscountTypestringrequiredFixed price discount type
Allowed:
FixedPercentageidstringrequiredUUID of the product in the project
isActivebooleanrequiredWhether the product is currently active based on the activeFrom and activeTo date range. True if current date is within the active range (or no dates are set).
logoIdobject | nullrequiredUUID of the logo file associated with this product. Null if no logo is set.
namestringrequiredProduct name as defined in the product
perUnitDiscountAmountnumberrequiredPer-unit price discount amount (0 = no discount)
perUnitDiscountTypestringrequiredPer-unit price discount type
Allowed:
FixedPercentagequantitynumberrequiredNumber of units of this product in the project
subscriptionDiscountAmountnumberrequiredSubscription price discount amount (0 = no discount)
subscriptionDiscountTypestringrequiredSubscription price discount type
Allowed:
FixedPercentage401Unauthorized - Invalid or missing authentication token
403Forbidden - Insufficient permissions or no project access
404Not Found - Project does not exist
Request
curl -X GET "https://leadtime.app/api/public/projects/%3Cuuid%3E/products" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"const response = await fetch("https://leadtime.app/api/public/projects/%3Cuuid%3E/products", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
});import requests
response = requests.get(
"https://leadtime.app/api/public/projects/%3Cuuid%3E/products",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
},
)Response
[
{
"activeFrom": "2024-01-01",
"activeTo": "2024-12-31",
"categoryId": "550e8400-e29b-41d4-a716-446655440001",
"finalName": "Variant Name",
"finalPriceFixed": 100,
"finalPricePerUnit": 5,
"finalPriceSubscription": 25,
"fixedDiscountAmount": 0,
"fixedDiscountType": "Fixed",
"id": "550e8400-e29b-41d4-a716-446655440000",
"isActive": true,
"logoId": "550e8400-e29b-41d4-a716-446655440008",
"name": "Product Name",
"perUnitDiscountAmount": 0,
"perUnitDiscountType": "Fixed",
"quantity": 1,
"subscriptionDiscountAmount": 0,
"subscriptionDiscountType": "Fixed"
}
]Unauthorized - Invalid or missing authentication token
Forbidden - Insufficient permissions or no project access
Not Found - Project does not exist