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.

Update a list

Rename a list, archive it, change its personas, or monitor or stop a whole list.

Renames a list, changes its description, archives it or brings it back, replaces the personas it belongs to, and monitors or stops the whole list. The type of a list cannot be changed. Archiving follows the same rule as deleting: it is refused when the list is the only list of its kind for its persona (for a prospect list, of its tier, such as the only prospect Tier 1 list for this persona), while a signal setup still watches it, and on the "All my employees" list, which cannot be moved to a persona either.

To monitor or stop a whole list, including the accounts added to it later, send signal_buckets: see Monitor or stop a whole list.

Route

PATCH/api/v3/lists/{kind}/{list_id}

Access modes

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

Authorization: Bearer sk_live_...

Path parameters

ParameterTypeDescription
kindstringcompany or profile. It matches the kind of the list.
list_idintegerID of the list.

Body parameters

ParameterTypeDescription
namestringNew name. Up to 255 characters.
descriptionstring or nullNew description, up to 1000 characters. null clears it.
signal_bucketsarray of string or nullCustomer and prospect lists only. ["essential"] monitors the whole list, null stops it. See Monitor or stop a whole list.
archivedbooleantrue archives the list, false brings it back. Archiving keeps every member. Archiving a monitored list stops its monitoring (the month already paid is not refunded) but the list keeps its signal_buckets, and every monitoring_by_persona entry reads 0 while it is archived; bringing it back restores the monitoring, and charging, right away.
persona_idsarray of integerReplaces the full set of personas the list belongs to. Leave it out to keep them; send [] to make the list visible from every persona. A monitored list attached to no persona is monitored, and charged, in every active persona. Up to 100 values. A change is refused with 409 when a signal setup using the list would be left on a list that is not attached to its persona: the answer names those signal setups in signal_setup_ids.

Send only the fields you want to change, at least one: an empty body {} is refused with 422. Any other field is refused with a 422, including type (it cannot be changed) and mode (it is read-only).

Monitor or stop a whole list

On a customer or prospect list, signal_buckets monitors or stops every account of the list at once:

  • "signal_buckets": ["essential"] monitors every account of the list, including the accounts added to it later.
  • "signal_buckets": null stops monitoring every account of the list, including the ones you picked one by one. The month already paid is not refunded.
  • Leaving signal_buckets out leaves the list and its accounts as they are.

A list attached to several personas is monitored, and charged, in each of them. To pick individual accounts instead, use Monitor or stop accounts. To see the result for each account, read the monitoring of List members. See Account Monitoring.

Sending signal_buckets on a list that is not a customer or prospect list is refused with 422, and errors.signal_buckets says "only allowed on customer or prospect lists".

Example request

This call monitors every account of the list, including the ones added later.

curl -X PATCH "https://api.getsillage.com/api/v3/lists/company/12" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "signal_buckets": [
    "essential"
  ]
}'

Success response

Status: 200 OK

{
  "data": {
    "id": 12,
    "kind": "company",
    "type": "customer",
    "name": "Key customers",
    "description": "The accounts we want to keep watching",
    "member_count": 48,
    "bound_signal_setup_count": 0,
    "tier": null,
    "signal_buckets": ["essential"],
    "monitoring_by_persona": [
      { "persona_id": 7, "monitored_count": 48, "not_covered_count": 0 }
    ],
    "mode": "manual",
    "archived": false,
    "archived_at": null,
    "persona_ids": [7],
    "is_deletable": true,
    "not_deletable_reason": null
  }
}

Response fields

FieldTypeDescription
data.idintegerID of the list.
data.kindstringcompany or profile. Follows from type, read-only.
data.typestringWhat the list is for: competitor, partner, customer, prospect, influencer, champion or employee.
data.namestringName of the list.
data.descriptionstring or nullDescription of the list.
data.member_countintegerHow many companies or people are on the list.
data.bound_signal_setup_countintegerHow many signal setups and older app signals use this list.
data.tierinteger or nullTier of the list, 1 to 3, on prospect lists. null on every other type.
data.signal_bucketsarray of string or null["essential"] when every account of the list is monitored, including the accounts that join later. null when the whole list is not monitored. Only customer and prospect lists carry it. An archived list keeps its value, restored when you unarchive it.
data.monitoring_by_personaarray of object or nullOne entry per persona the list is watched for: its attached personas, or every active persona when it is attached to none. null on lists that are not customer or prospect lists. Left out with concise.
data.monitoring_by_persona[].persona_idintegerID of the persona.
data.monitoring_by_persona[].monitored_countintegerAccounts of the list monitored, and paid for, in this persona. 0 while the list is archived.
data.monitoring_by_persona[].not_covered_countintegerAccounts of the list with monitoring on in this persona but not paid for. 0 while the list is archived.
data.modestringmanual or smart. See Smart lists. Read-only.
data.archivedbooleantrue while the list is archived.
data.archived_atstring or nullWhen the list was archived, as an ISO 8601 timestamp. null while it is in use.
data.persona_idsarray of integerIDs of the personas the list belongs to. An empty array means the list is visible from every persona. A monitored list attached to no persona is monitored, and charged, in every active persona.
data.is_deletablebooleanWhether deleting or archiving the list would succeed right now.
data.not_deletable_reasonstring or nullWhy the list cannot be deleted or archived, null when it can: last_list_of_tier (it is the only list of its kind for its persona, for a prospect list of its tier, such as the only prospect Tier 1 list for this persona, or the only one attached to no persona: create another one first), in_use (a signal setup, or an older signal set up in the Sillage app, uses it) or employee_list (the "All my employees" list is never deleted). New values may be added; ignore values you don't know.

Errors

StatusMeaning
401The API key is missing or invalid.
404The list does not exist.
409You tried to archive a list that cannot go: the only list of its kind for its persona (for a prospect list, of its tier), one a signal setup still watches, or the "All my employees" list (also refused when you move it to a persona). Or a persona_ids change would leave signal setups on a list that is not attached to their persona (list_persona_setup_conflict): detail says how to fix it and signal_setup_ids lists those signal setups.
422The body is not valid, is empty ({}), a name or description is longer than allowed, there are more than 100 persona_ids, or it has an unknown field, signal_buckets is sent for a list that is not a customer or prospect list (errors.signal_buckets says "only allowed on customer or prospect lists"), or a persona_ids entry is not one of your personas.
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