API v3 is live and in beta: expect possible malfunctions and breaking changes in the coming days. If you find a bug, please report it to your Sillage contact.
APIv3

Get setup state

See what is left to set up in the workspace.

Returns how far your workspace is set up, in one call, as a checklist of four steps: persona, accounts, signal_setups and contents.

Each step has a status, a plain-language message and, when something is left to do, a recommended_next_route naming the call to make next.

Route

GET/api/v3/setup-state

Access modes

Use a workspace API key. The workspace is inferred from the key.

Authorization: Bearer sk_live_...

Statuses

StatusMeaning
okThe step is done.
warningThe step is started but not complete.
blockedNothing is done yet for this step, or the feature is not enabled.

Steps

StepDone when
personaThe oldest active persona has at least one job title and one location. Only that persona is checked, even when there are several. job_titles_set and locations_set tell which of the two is there.
accountsAt least one company sits on a customer or prospect list. Until then, recommended_next_route is POST /v3/lists to create a list, then POST /v3/lists/{kind}/{list_id}/members to add accounts. count is the number of accounts on your customer and prospect lists.
signal_setupsThe workspace runs at least 3 signals. count is the number of signal setups of your workspace, the same as the total of Signal setups. missing_priority_types lists the key of the signal templates still worth setting up, in priority order. A template counts as set up when the workspace has a signal setup of it. It is informational and never changes status.
contentsContent has been generated. A blocked status means the contents feature is not enabled for your workspace (contact Sillage); warning means it is enabled and nothing has been generated yet.

recommended_next_route is one of the following, written as METHOD /path. It is left out when nothing more is recommended.

ValueMeaning
POST /v3/personasThe persona is missing: create it.
PATCH /v3/personas/{persona_id}The persona is incomplete: complete it.
POST /v3/listsNo customer or prospect list yet: create one.
POST /v3/lists/{kind}/{list_id}/membersAdd accounts to a list.
POST /v3/signal-setupsSet up a signal.
GET /v3/requests-statusContent is still being prepared: check what is running.

Example request

curl "https://api.getsillage.com/api/v3/setup-state" \
  -H "Authorization: Bearer $SILLAGE_API_KEY"

Success response

Status: 200 OK

{
  "data": {
    "checklist": {
      "persona": {
        "status": "ok",
        "message": "Persona is set up with a job title and a location.",
        "job_titles_set": true,
        "locations_set": true
      },
      "accounts": {
        "status": "ok",
        "message": "12 account(s) on your customer and prospect lists.",
        "count": 12
      },
      "signal_setups": {
        "status": "warning",
        "message": "2 signal setup(s); the recommended minimum is 3. Call POST /v3/signal-setups to add more.",
        "recommended_next_route": "POST /v3/signal-setups",
        "count": 2,
        "missing_priority_types": ["mentioned-keywords-on-linkedin"]
      },
      "contents": {
        "status": "warning",
        "message": "The contents feature is enabled but nothing has been generated yet. Call GET /v3/requests-status to check whether account mapping or content generation is still in progress.",
        "recommended_next_route": "GET /v3/requests-status",
        "has_contents": false
      }
    }
  }
}

Response fields

FieldTypeDescription
data.checklist.personaobjectThe persona step.
data.checklist.persona.statusstringok, warning or blocked.
data.checklist.persona.messagestringWhat to do, in plain language.
data.checklist.persona.recommended_next_routestringPOST /v3/personas or PATCH /v3/personas/{persona_id}. Left out when the step is ok.
data.checklist.persona.job_titles_setbooleanWhether the persona has at least one job title.
data.checklist.persona.locations_setbooleanWhether the persona has at least one location.
data.checklist.accountsobjectThe accounts step.
data.checklist.accounts.statusstringok once at least one account is on a customer or prospect list, blocked before that.
data.checklist.accounts.messagestringWhat to do, in plain language.
data.checklist.accounts.recommended_next_routestringPOST /v3/lists while there is no account. Left out when the step is ok.
data.checklist.accounts.countintegerHow many accounts sit on your customer and prospect lists.
data.checklist.signal_setupsobjectThe signal setups step.
data.checklist.signal_setups.statusstringok, warning or blocked.
data.checklist.signal_setups.messagestringWhat to do, in plain language.
data.checklist.signal_setups.recommended_next_routestringPOST /v3/signal-setups. Left out when the step is ok.
data.checklist.signal_setups.countintegerThe number of signal setups of your workspace.
data.checklist.signal_setups.missing_priority_typesarray of stringThe key of each signal template still worth setting up, in priority order. Informational only.
data.checklist.contentsobjectThe contents step.
data.checklist.contents.statusstringok, warning or blocked.
data.checklist.contents.messagestringWhat to do, in plain language.
data.checklist.contents.recommended_next_routestringGET /v3/requests-status. Left out when nothing more is recommended.
data.checklist.contents.has_contentsbooleanWhether content has been generated.

Errors

StatusMeaning
401The API key is missing or invalid.
422A query parameter is sent: this route takes none, and errors names the parameter.
429Rate limit exceeded.
500An unexpected server error occurred.

Error responses use RFC 9457 problem documents with Content-Type: application/problem+json. type is always about:blank; code tells one problem from another, detail says what went wrong this time, and errors names the field at fault.

On this page