Import product from catalog to task
What are Task Products? Task products allow you to add standardized services or goods from your product catalog directly to tasks (tickets). This enables quick pricing for support requests, service tickets, or express quotes without creating a full project. Products can include variants (e.g., Standard, Pro, Enterprise) and options (e.g., additional services or upgrades).
How this endpoint works: This endpoint imports a product from your workspace product catalog into a specific task. The product is copied into the task context, allowing you to customize quantity, select variants, and configure options without affecting the original catalog product.
What you need to provide:
- productId: The UUID of the product from your catalog (must exist in catalog, not already assigned to a task or project)
- quantity: How many units of this product (minimum 1)
- activeVariantId: (Optional) Which variant to activate if the product has multiple variants
- options: Array of option selections, where each option specifies which values are selected
Important notes:
- Only products from the catalog (not already assigned to tasks or projects) can be imported
- The product is copied into the task - changes here do not affect the catalog version
- Products support three pricing models: fixed price, subscription price, and per-unit pricing
- Variants allow different configurations (e.g., different package sizes or service levels)
- Options allow customers to add extra services or upgrades (e.g., “Add workshop” or “Enable premium support”)
What is returned: Returns the ID of the newly created task product, which can be used for subsequent updates or deletion.
Permission requirements: Requires “manageProducts” permission on tasks and “api” scope.
/tasks/{identifier}/productsAuthorizationOAuth2 access token · headerrequiredapi:writeAuthorizationBearer token (JWT) · headerrequiredidentifierstringrequiredfieldsToReturnstringresponseShapestringcompactfullLT-Response-Shapestringfullapplication/jsonactiveFromFixedDatestring<date> | nullactiveFromTypestringImmediatelyProjectBillingFixedDateactiveVariantIdobject | nullcustomPricesobjectrequiredoptionsProductSettingOptionDto[]requiredShow propertiesHide properties
ProductSettingOptionDtoidstringrequiredvaluestring[]requiredproductIdstringrequiredquantitynumberrequiredsuccessbooleanrequiredcurl -X POST "https://leadtime.app/api/public/tasks/123/products" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"activeFromFixedDate": "2024-01-01",
"activeFromType": "Immediately",
"activeVariantId": "550e8400-e29b-41d4-a716-446655440003",
"customPrices": {
"base": {
"priceFixed": 100.5,
"pricePerUnit": null,
"priceSubscription": null
},
"variant_550e8400": {
"priceFixed": 150,
"pricePerUnit": null,
"priceSubscription": null
}
},
"options": [
{
"id": "550e8400-e29b-41d4-a716-446655440004",
"value": [
"550e8400-e29b-41d4-a716-446655440005"
]
}
],
"productId": "550e8400-e29b-41d4-a716-446655440002",
"quantity": 2
}'const response = await fetch("https://leadtime.app/api/public/tasks/123/products", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"activeFromFixedDate": "2024-01-01",
"activeFromType": "Immediately",
"activeVariantId": "550e8400-e29b-41d4-a716-446655440003",
"customPrices": {
"base": {
"priceFixed": 100.5,
"pricePerUnit": null,
"priceSubscription": null
},
"variant_550e8400": {
"priceFixed": 150,
"pricePerUnit": null,
"priceSubscription": null
}
},
"options": [
{
"id": "550e8400-e29b-41d4-a716-446655440004",
"value": [
"550e8400-e29b-41d4-a716-446655440005"
]
}
],
"productId": "550e8400-e29b-41d4-a716-446655440002",
"quantity": 2
})
});import requests
response = requests.post(
"https://leadtime.app/api/public/tasks/123/products",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
json={
"activeFromFixedDate": "2024-01-01",
"activeFromType": "Immediately",
"activeVariantId": "550e8400-e29b-41d4-a716-446655440003",
"customPrices": {
"base": {
"priceFixed": 100.5,
"pricePerUnit": None,
"priceSubscription": None
},
"variant_550e8400": {
"priceFixed": 150,
"pricePerUnit": None,
"priceSubscription": None
}
},
"options": [
{
"id": "550e8400-e29b-41d4-a716-446655440004",
"value": [
"550e8400-e29b-41d4-a716-446655440005"
]
}
],
"productId": "550e8400-e29b-41d4-a716-446655440002",
"quantity": 2
},
){
"success": true
}