Get the onboarding checklist

Get the rooftop's Vini onboarding checklist, grouped by agent segment and section, with each task's status.

GEThttps://api.spyne.ai/console/v1/onboarding/task/get-onboarding-task-v2
AuthBearer token (console user)Rate limitNot documentedProcessingSynchronous.

The API finds the rooftop's active product line by name (for Vini, conversationalAi) and reads all its active onboarding tasks, newest first. Tasks are grouped by segment (segmentName, one per agent) and then by section (task_group_name). Tasks without a segment go in a separate top-level list. Each task has its status and, when the template set it, whether it is required. You can pass one or more product line IDs instead. Nothing is written.

Before you call it

  • Send Authorization: Bearer YOUR_TOKEN. The token is the signed-in console user's session token. It is checked against the user service on every call.
  • The rooftop must have an active conversationalAi product line with onboarding tasks. Tasks are created from the product line's task template when onboarding starts.
  • Pass either productLineId, or both teamId and productLineName.
  • If a rooftop has more than one active conversationalAi product line, the one used is not defined. The lookup takes the first row with no ordering.
  • The call is synchronous. Rate limit: not documented.

Query parameters

Requiredalways sendRequired ifrequired only in the case describedOptionalcan be left out
Request checklist
  1. Authenticate: send Authorization: Bearer YOUR_TOKEN.
  2. Pick the product line: pass teamId and productLineName=conversationalAi.
  3. Read each agent: read data.product_group.segment_name.<segmentName>.task_group_list for each agent the rooftop bought.
  4. Read status: ignore tasks with is_active: false. Treat status: "COMPLETED" as done.
  5. Handle duplicates: if the same task_name appears more than once in a segment, use the row with the latest updated_at.
ParameterTypeRequiredDescription
Product line to read—RequiredSend productLineId, or both teamId and productLineName.
teamIdstringRequired ifRooftop ID. Required unless productLineId is sent. Used with productLineName to find the product line.
productLineNamestringRequired ifRequired unless productLineId is sent. conversationalAi for Vini. Allowed values: studioAi, conversationalAi.
productLineIdstringOptionalOne product line ID, or up to 20 comma-separated IDs. With more than one ID, do not send teamId, productLineName or productGroup.
productGroupstringOptionalAccepted but not used to filter the result.

Sample request

curl -X GET "https://api.spyne.ai/console/v1/onboarding/task/get-onboarding-task-v2?teamId=<teamId>&productLineName=conversationalAi" \
  -H "Authorization: Bearer YOUR_TOKEN"
import requests

resp = requests.get(
    "https://api.spyne.ai/console/v1/onboarding/task/get-onboarding-task-v2",
    params={"teamId": "<teamId>", "productLineName": "conversationalAi"},
    headers={"Authorization": "Bearer YOUR_TOKEN"},
)
segments = resp.json()["data"]["product_group"]["segment_name"]
const params = new URLSearchParams({ teamId: "<teamId>", productLineName: "conversationalAi" });
const res = await fetch(
  `https://api.spyne.ai/console/v1/onboarding/task/get-onboarding-task-v2?${params}`,
  { headers: { Authorization: "Bearer YOUR_TOKEN" } }
);
const { data } = await res.json();

Sample response

{
  "message": "Found 3 onboarding tasks",
  "totalCount": 3,
  "data": {
    "product_line_id": "<productLineId>",
    "product_group": {
      "segment_name": {
        "inboundSales": {
          "task_group_list": [
            {
              "task_group_name": "Agent Setup",
              "task_list": [
                {
                  "id": "<taskId>",
                  "product_line_id": "<productLineId>",
                  "team_id": "<teamId>",
                  "start_time": null,
                  "end_time": null,
                  "segment_name": "inboundSales",
                  "task_name": "Agent Customization",
                  "status": "PENDING",
                  "is_active": true,
                  "created_at": "2026-10-01T10:00:00.000Z",
                  "updated_at": "2026-10-01T10:00:00.000Z",
                  "required": true
                }
              ]
            },
            {
              "task_group_name": "Rooftop Setup",
              "task_list": [
                {
                  "id": "<taskId>",
                  "product_line_id": "<productLineId>",
                  "team_id": "<teamId>",
                  "start_time": "2026-10-01T11:00:00.000Z",
                  "end_time": "2026-10-01T11:00:00.000Z",
                  "segment_name": "inboundSales",
                  "task_name": "Rooftop Setup",
                  "status": "COMPLETED",
                  "is_active": true,
                  "created_at": "2026-10-01T10:00:00.000Z",
                  "updated_at": "2026-10-01T11:00:00.000Z",
                  "required": true
                }
              ]
            }
          ]
        }
      },
      "task_group_list": [
        {
          "task_group_name": "Rooftop Setup",
          "task_list": [
            {
              "id": "<taskId>",
              "product_line_id": "<productLineId>",
              "team_id": "<teamId>",
              "start_time": null,
              "end_time": null,
              "segment_name": null,
              "task_name": "User Setup",
              "status": "PENDING",
              "is_active": true,
              "created_at": "2026-10-01T10:00:00.000Z",
              "updated_at": "2026-10-01T10:00:00.000Z"
            }
          ]
        }
      ]
    }
  }
}
{
  "message": "Either productLineId, or both teamId and productLineName, must be provided",
  "error": true
}
{
  "message": "Invalid Token",
  "error": true,
  "code": "ERROR_AUTH_401",
  "details": "",
  "data": null
}
{
  "message": "No conversationalAi product line found for team <teamId>",
  "data": []
}
{
  "message": "No onboarding tasks found for the specified product line",
  "data": []
}

Response parameters (200)

ParameterTypeDescription
messagestringFound <n> onboarding tasks.
totalCountnumberNumber of active tasks returned.
data.product_line_idstringThe product line the tasks belong to.
data.product_group.segment_nameobject or nullTasks with a segment, keyed by segmentName, for example inboundSales. null when no task has a segment.
data.product_group.segment_name.<segmentName>.task_group_listarraySections in this segment.
data.product_group.task_group_listarraySections for tasks with no segment.
task_group_list[].task_group_namestringSection name, for example Rooftop Setup, Integrations, Agent Setup, Go Live Readiness.
task_group_list[].task_list[]arrayTasks in the section, newest first.
task_list[].idstringTask ID.
task_list[].product_line_idstringProduct line ID.
task_list[].team_idstringRooftop ID.
task_list[].start_timestring or nullWhen the task was first started.
task_list[].end_timestring or nullWhen the task was completed. Cleared when it is set back to in progress.
task_list[].segment_namestring or nullThe task's segment.
task_list[].task_namestringTask name. Send this exact string as taskName when you mark it done.
task_list[].statusstringPENDING, INPROGRESS, COMPLETED or N/A.
task_list[].is_activebooleanAlways true in this response. Only active tasks are read.
task_list[].created_atstringCreation time.
task_list[].updated_atstringLast update time.
task_list[].requiredbooleanWhether the task must be done before go-live. Present only when the template set it.

With several productLineId values, data is an array of { product_line_id, product_group } objects instead.

Errors

StatusCodeWhen it happens
400Missing inputNeither productLineId nor both teamId and productLineName were sent.
400Too many IDsMore than 20 productLineId values.
400Conflicting inputsSeveral productLineId values together with teamId, productLineName or productGroup.
400Invalid productLineNameA value other than studioAi or conversationalAi. The framework rejects the request.
400Failed to retrieve onboarding tasksAny other failure while reading. The body has error (the error message) and message.
401ERROR_AUTH_401Missing, malformed or invalid token.
404No product lineNo active product line with that name for the rooftop.
404No tasksThe product line has no active tasks.

What happens next

Show one checklist per agent the rooftop bought, using its segment. Use Get contracted agent details to load each agent. When a setup step finishes, call Mark a task done with the task's task_name. Call this endpoint again to refresh status.

This call comes after List active Vini products.


Did this page help you?