Guided Selling
AI product matching and recommendations
Get use case categories for needs assessment
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Get product recommendations based on selected use cases
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Request Body
application/jsonRequireduseCaseIdsRequiredarray<string>Selected use case IDs
accountIdstringAccount ID for history-based recommendations
industrystringIndustry vertical
companySizestringCompany size tier
"SMALL" | "MEDIUM" | "LARGE" | "ENTERPRISE"budgetstringBudget tier
"LOW" | "MEDIUM" | "HIGH" | "ENTERPRISE"Header Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255Build a bundle with auto-discount calculation
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Request Body
application/jsonRequiredproductIdsRequiredarray<string>Product IDs to include in bundle
quantitiesRequiredobjectQuantities keyed by product ID
contractLengthnumberContract length in months (for contract-length discounts)
Header Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255Apply a bundle to an existing quote
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Request Body
application/jsonRequiredproductIdsRequiredarray<string>Product IDs in the bundle
quantitiesRequiredobjectQuantities keyed by product ID
contractLengthnumberContract length in months
Path Parameters
quoteIdRequiredstringHeader Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255Get cross-sell recommendations for a product
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Path Parameters
productIdRequiredstringList dynamic pricing rules
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Query Parameters
isActivebooleanCreate a dynamic pricing rule
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Request Body
application/jsonRequirednameRequiredstringRule name
descriptionstringRule description
conditionsRequiredarray<object>Conditions that must be met
conditionLogicRequiredstringLogic for combining conditions
"AND" | "OR"actionRequiredobjectAction to take when conditions are met
prioritynumberPriority (lower = higher priority)
100isActivebooleanWhether rule is active
truevalidFromstringValid from date (ISO string)
validTostringValid to date (ISO string)
maxUsagenumberMaximum number of times this rule can be used
Header Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255Update a dynamic pricing rule
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Request Body
application/jsonRequirednamestringRule name
descriptionstringRule description
conditionsarray<object>Conditions that must be met
conditionLogicstringLogic for combining conditions
"AND" | "OR"actionobjectAction to take when conditions are met
prioritynumberPriority (lower = higher priority)
isActivebooleanWhether rule is active
validFromstringValid from date (ISO string)
validTostringValid to date (ISO string)
maxUsagenumberMaximum number of times this rule can be used
Path Parameters
idRequiredstringHeader Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255Preview which pricing rules apply to a quote
Authorization
AuthorizationRequiredBearer <token>Session token from the SalesOS web app.
In: header
X-API-Key<token>API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.
In: header
Path Parameters
quoteIdRequiredstringHeader Parameters
Idempotency-KeystringUnique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.
255