Get Setup State
Check what is left to configure in your workspace, with a diagnostic checklist.
Get setup state
Returns the authenticated workspace's overall setup progress, plus a diagnostic checklist covering the persona, target accounts, agents, and content — each with a status and, when it applies, a recommended next step.
The four top-level fields (persona_set, list_uploaded, ingestion_complete, has_contents) are the overall completion flags: true once that step is done at all, regardless of quality. The checklist object is the diagnostic layer underneath: an entry can still report warning even when its matching top-level flag is true, when the step was completed but is worth improving (for example, a persona with no job title set).
Checklist statuses
| Status | Meaning |
|---|---|
ok | Nothing to do. |
warning | Working, but could be improved — this never blocks anything. |
blocked | A hard prerequisite is missing, or the feature is not enabled for your workspace. |
Each checklist entry may also include recommended_next_tool, naming the next action to take (for example sillage_v2_upsert_persona, sillage_v2_add_top_accounts, or sillage_v2_create_agent).
Example request
curl "https://api.getsillage.com/api/v2/setup-state" \
-H "Authorization: Bearer $SILLAGE_API_KEY"const response = await fetch('https://api.getsillage.com/api/v2/setup-state', {
headers: {
Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
},
})
const result = await response.json()import { request } from 'node:https'
const req = request(
new URL('https://api.getsillage.com/api/v2/setup-state'),
{
headers: {
Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
},
},
(res) => {
let data = ''
res.on('data', (chunk) => {
data += chunk
})
res.on('end', () => {
console.log(JSON.parse(data))
})
},
)
req.end()import os
import requests
response = requests.get(
"https://api.getsillage.com/api/v2/setup-state",
headers={"Authorization": f"Bearer {os.environ['SILLAGE_API_KEY']}"},
timeout=30,
)
response.raise_for_status()
result = response.json()Example response
A workspace midway through setup — persona set but missing a job title, target accounts still processing, one agent created, content generation not enabled:
{
"persona_set": true,
"list_uploaded": true,
"ingestion_complete": false,
"has_contents": false,
"checklist": {
"persona": {
"status": "warning",
"message": "No job_title set. Content generation and account mapping will target every job title until this is set.",
"recommended_next_tool": "sillage_v2_upsert_persona",
"job_title_set": false,
"location_set": true
},
"accounts": {
"status": "warning",
"message": "Your target accounts are still being processed. Check back once this completes.",
"count": 12,
"ingestion_state": "processing",
"has_unresolved_accounts": false
},
"agents": {
"status": "warning",
"message": "You have 1 agent. Consider adding a competitor or customer agent to widen coverage.",
"recommended_next_tool": "sillage_v2_create_agent",
"count": 1,
"missing_priority_types": ["competitor", "customer", "keyword_detection"]
},
"contents": {
"status": "blocked",
"message": "Content generation is not enabled for your workspace. Contact Sillage support to enable it.",
"has_contents": false
}
}
}Response fields
| Field | Type | Description |
|---|---|---|
| persona_set | boolean | Whether a persona has been configured, regardless of quality. |
| list_uploaded | boolean | Whether at least one target account has been added. |
| ingestion_complete | boolean | Whether target account processing has finished. |
| has_contents | boolean | Whether any content has been generated. |
| checklist.persona.status | string | ok, warning, or blocked — see Checklist statuses. |
| checklist.persona.message | string | Plain-language explanation of the status. |
| checklist.persona.recommended_next_tool | string | Optional. Next tool to call to improve this area. |
| checklist.persona.job_title_set | boolean | Whether the persona has at least one job title. |
| checklist.persona.location_set | boolean | Whether the persona has at least one location. |
| checklist.accounts.status | string | ok, warning, or blocked. |
| checklist.accounts.message | string | Plain-language explanation of the status. |
| checklist.accounts.recommended_next_tool | string | Optional. Next tool to call to improve this area. |
| checklist.accounts.count | integer | Number of target accounts currently in the workspace. |
| checklist.accounts.ingestion_state | string | queued, processing, completed, or failed. |
| checklist.accounts.has_unresolved_accounts | boolean | Whether some submitted accounts could not be matched to a company. |
| checklist.agents.status | string | ok, warning, or blocked. |
| checklist.agents.message | string | Plain-language explanation of the status. |
| checklist.agents.recommended_next_tool | string | Optional. Next tool to call to improve this area. |
| checklist.agents.count | integer | Number of agents currently configured. |
| checklist.agents.missing_priority_types | string[] | Recommended agent types (job_update, competitor, customer, keyword_detection, …) not yet created. |
| checklist.contents.status | string | ok, warning, or blocked. |
| checklist.contents.message | string | Plain-language explanation of the status. |
| checklist.contents.recommended_next_tool | string | Optional. Next tool to call to improve this area. |
| checklist.contents.has_contents | boolean | Whether any content has been generated. |
Errors
| Status | Description |
|---|---|
| 401 | The API key is missing or invalid. |