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.
v2DeprecatedLists

Add Members

Add companies or people to a list by LinkedIn identity or company domain.

Adds companies or people to a list. Identify each member by linkedin_url or linkedin_handle (preferred). For company lists only, a domain (e.g. stripe.com) is also accepted as a fallback when no LinkedIn identifier is available. Providing a domain on a people list is reported as a wrong_entity_type row error. A value that is not a usable identifier is reported as invalid_identifier. Rows that do not match the list kind never fail the whole request, the other members are still added.

On champion lists, each member can also carry company — the company where you know this contact, so a job change can be detected. Providing company on any other list returns a hard 422.

The call is partial-success: members that were added appear in data, and any per-member failures appear in errors. A 200 response means the request was accepted, always inspect errors for any that were not added. Re-adding members that are already present is safe and returns 200 with an empty data array. If no members could be added because every one failed, the response is 422 with data: [] and errors populated.

Add members

POST/api/v2/partner/workspaces/{partner_workspace_id}/lists/{kind}/{list_id}/members

Path parameters

ParameterTypeDescription
partner_workspace_idstringOpaque workspace identifier from the partner system.
kindstringList kind: company or profile (matches the list type).
list_idintegerIdentifier of the list.

Request body

FieldTypeRequiredDescription
membersarrayYes1 to 100 members to add.
members[].linkedin_urlstringOne ofLinkedIn URL, with or without https:// (e.g. linkedin.com/company/openai). Preferred identifier.
members[].linkedin_handlestringOne ofLinkedIn handle. Preferred identifier.
members[].domainstringOne ofCompany domain (e.g. stripe.com). Company lists only, accepted as a fallback when no LinkedIn identifier is available. Not accepted on people lists.
members[].companyobjectNoChampion lists only. The company where you know this contact, so a job change can be detected. At least one of name or domain.

Example request

curl -X POST "https://api.getsillage.com/api/v2/partner/workspaces/ws_123/lists/company/128/members" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "members": [
        { "linkedin_url": "https://www.linkedin.com/company/openai" },
        { "linkedin_handle": "anthropic" }
      ] }'

Example response

Each member's id is the canonical company/profile id, pass it to Remove member. The shape follows the list kind: company lists return name, people lists return first_name / last_name.

The response always includes both data (added members) and errors (per-member failures). A 200 means the request was accepted. Inspect errors to identify any members that could not be added.

{
  "data": [
    {
      "id": 901,
      "name": "OpenAI",
      "linkedin_handle": "openai",
      "linkedin_url": "https://www.linkedin.com/company/openai",
      "tracking_status": null,
      "signal_bucket": null
    },
    {
      "id": 902,
      "name": "Stripe",
      "linkedin_handle": null,
      "linkedin_url": null,
      "tracking_status": null,
      "signal_bucket": null
    }
  ],
  "errors": [
    {
      "input": { "domain": "acme.com" },
      "code": "multiple_domain_matches",
      "message": "The domain matched more than one company. Provide a LinkedIn URL or handle to identify the exact company."
    }
  ]
}

Per-member error codes

When a member cannot be added, its failure is reported in errors rather than failing the whole request.

CodeMeaning
multiple_domain_matchesThe domain matched more than one company. Use a LinkedIn URL or handle instead.
apollo_failedThe company could not be found or created from the domain provided.
resolution_failedAn unexpected error occurred while resolving the member.
wrong_entity_typeThe identifier does not match the list kind: a person URL on a company list, a company URL on a people list, a domain on a people list, or a handle already known as the other kind.
invalid_identifierThe value is not usable as an identifier, such as a domain without a dot or a LinkedIn URL with no handle.

Status codes

StatusDescription
200Request accepted. data contains newly-added members (empty if all were already present). Check errors for any per-member failures.
401The API key is missing or invalid.
403The API key does not have access to this workspace.
404The list does not exist in this workspace.
422Every member failed to be added (see errors), the body is invalid, or company was provided on a non-champion list.
429Too many requests.

On this page