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.

Count leads

Count the leads that match filters.

Returns how many leads of your workspace match the filters. It takes exactly the filters of Query leads, in the same JSON body, without cursor, limit and sort.

It counts the same leads as Query leads returns: the ones your Sillage dashboard shows, prospects only, with expired leads, leads without a profile and leads outside your ideal customer profile left out. This is why the count can differ from the number of contacts in your CRM.

Route

POST/api/v3/leads/count

Access modes

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

Authorization: Bearer sk_live_...

Body parameters

All filters are optional; an empty body counts every lead. The four company filters add up: a lead matches when its company is any of the company_ids, domains, LinkedIn handles or LinkedIn URLs you send. A value that matches no company in your workspace matches nothing, so the count is 0, never an error. Company filters combine with every other filter, and all of those have to match.

ParameterTypeDescription
created_at_fromstringOnly leads created at or after this moment, the moment itself included. ISO 8601 date and time with a UTC offset, for example 2026-09-01T00:00:00Z. A date without a time is refused with 422.
created_at_tostringOnly leads created at or before this moment, the moment itself included. ISO 8601 date and time with a UTC offset, for example 2026-09-30T23:59:59Z. A date without a time is refused with 422.
company_idsarray of integerOnly leads whose company is one of these companies. Up to 100 company IDs, as returned by the company endpoints and by a lead's company.id.
company_domainsarray of stringOnly leads whose company has one of these website domains, for example acme.com. Up to 100 values.
company_linkedin_handlesarray of stringOnly leads whose company has one of these LinkedIn handles (the last part of the LinkedIn page address). Up to 100 values.
company_linkedin_urlsarray of stringOnly leads whose company has one of these LinkedIn page URLs. Up to 100 values.
countriesarray of stringOnly leads located in one of these countries, for example ["France", "Germany"]. Up to 100 values. Combined with cities: a lead matches when it is in one of the countries or one of the cities.
citiesarray of objectOnly leads located in one of these cities. Each city is an object { "name", "country" }, so Paris, France and Paris, United States stay distinct. Up to 100 values.

Example request

curl -X POST "https://api.getsillage.com/api/v3/leads/count" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "company_domains": [
    "acme.com"
  ],
  "countries": [
    "France"
  ]
}'

Success response

Status: 200 OK

{
  "data": {
    "total": 42
  }
}

Response fields

FieldTypeDescription
data.totalintegerThe number of leads that match.

Errors

StatusMeaning
401The API key is missing or invalid.
422A filter is not known or not valid, or a date has no time. A range that ends before it starts (created_at_from after created_at_to) is refused with the code invalid_date_range; errors.created_at_from says "must be on or before created_at_to".
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