List active Vini products
List which Vini agents the rooftop bought, grouped by category.
The API reads the rooftop's active products on active product lines in the Onboarding or Live stage. It groups the product names by category: sales, service, acquisition and reception. The category comes from the product registry. A product without a category falls back to a name match on "sales", "service" or "reception". A category key appears only when it has at least one product. Nothing is written.
Before you call it
- Send
Authorization: Bearer YOUR_TOKEN, the signed-in console user's session token. - You need the rooftop's
teamId. - A product appears only when it is active and in the
OnboardingorLivestage. A product that is onlyContractedis not listed. - The call is synchronous. Rate limit: not documented.
Query parameters
- Authenticate: send
Authorization: Bearer YOUR_TOKEN. - Identify the rooftop: pass
teamIdas a query parameter. - Read the agents: each product name in a category is the agent's
segmentName. See the agent table in the Introduction.
| Parameter | Type | Required | Description |
|---|---|---|---|
teamId | string | Required | Rooftop ID. |
Sample request
curl -X GET "https://api.spyne.ai/user-management/v1/vini/active-products?teamId=<teamId>" \
-H "Authorization: Bearer YOUR_TOKEN"import requests
resp = requests.get(
"https://api.spyne.ai/user-management/v1/vini/active-products",
params={"teamId": "<teamId>"},
headers={"Authorization": "Bearer YOUR_TOKEN"},
)
products = resp.json()const res = await fetch(
"https://api.spyne.ai/user-management/v1/vini/active-products?teamId=<teamId>",
{ headers: { Authorization: "Bearer YOUR_TOKEN" } }
);
const products = await res.json();Sample response
{
"sales": ["inboundSales", "outboundSales"],
"service": ["inboundService"],
"acquisition": ["acquisitionAiOutbound"],
"reception": ["receptionWebChat"]
}{}{
"message": "Invalid Token",
"error": true,
"code": "ERROR_AUTH_401",
"details": "",
"data": null
}{
"message": "Internal server error while fetching Vini active products",
"error": "<error message>",
"code": "",
"details": null,
"data": null
}Response parameters (200)
The success body is a plain object. It is not wrapped in data.
| Parameter | Type | Description |
|---|---|---|
sales | string[] | Active sales agents, for example inboundSales, outboundSales. |
service | string[] | Active service agents, for example inboundService, outboundService. |
acquisition | string[] | Active acquisition agents, for example acquisitionAiOutbound. |
reception | string[] | Active receptionist product, receptionWebChat. |
| other keys | string[] | Any other category set in the product registry. The key is the registry category with a trailing "Agent" removed, in lower case. |
Errors
| Status | Code | When it happens |
|---|---|---|
400 | Missing parameter | teamId is missing. The framework rejects the request. |
401 | ERROR_AUTH_401 | Missing, malformed or invalid token. |
500 | Server error | The database read or the product registry call failed. error holds the error message. |
What happens next
Use the product names to decide which agent checklists to show. Each name is the segmentName you read in the checklist and send when you mark agent tasks done. Then call Get the onboarding checklist.
This call comes after Get contract product lines.
Updated about 1 hour ago
