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

List Signals

Return a cursor-paginated list of signals for a partner workspace.

Returns a cursor-paginated list of signals for the workspace, sorted by detection date descending.

Pass the next_cursor from each response as the cursor parameter of the next request to advance through results. When has_more is false, you have reached the last page. To get a total count, call the Count Signals endpoint with the same filters.

List signals

POST/api/v2/partner/workspaces/{partner_workspace_id}/signals/query

Path parameters

ParameterTypeDescription
partner_workspace_idstringOpaque workspace identifier from the partner system.

Request body

All fields are optional.

FieldTypeDefaultDescription
cursorstringOpaque pagination cursor. Pass the next_cursor value from the previous response to fetch the next page. Omit for the first page.
limitinteger25Number of items to return per page (1–100).
signal_start_datestring (date-time)Return detections whose signal date is on or after this timestamp (ISO 8601 with UTC offset). Defaults to 90 days before now. Cannot go further back than 180 days — an older value is clamped to that limit.
signal_end_datestring (date-time)Return detections whose signal date is on or before this timestamp (ISO 8601 with UTC offset).
detection_start_datestring (date-time)Return detections that were first seen on or after this timestamp (ISO 8601 with UTC offset).
detection_end_datestring (date-time)Return detections that were first seen on or before this timestamp (ISO 8601 with UTC offset).
agent_idintegerReturn detections produced by a specific agent. Pass the agent_id returned on each detection in the list response.
signal_run_idintegerReturn detections from a specific run. Pass the run id returned by the signal-runs endpoint. Results are automatically scoped to the workspace.
typearray of stringFilter results to one or more signal types; unknown values are rejected. See the Signal reference for the list of types.
company_idintegerReturn detections for a specific company on the workspace top-account list. Pass the company_id from the workspace target account list. Taken at face value — no lookup is performed, so an unknown company_id or a company that exists in the workspace but is not on the top-account list returns an empty page rather than a 404. Takes priority over all identifier fields below.
company_domainarray of stringReturn detections for companies on the workspace top-account list matching this domain. OR filtering across multiple companies. See company_id for tier priority. Returns 404 when none of the supplied values resolve to a known company on the workspace top-account list.
company_linkedin_handlearray of stringReturn detections for companies on the workspace top-account list matching this LinkedIn handle. See company_id for tier priority. Returns 404 when none of the supplied values resolve to a known company on the workspace top-account list.
company_linkedin_urlarray of stringReturn detections for companies on the workspace top-account list matching this LinkedIn URL. See company_id for tier priority. Returns 404 when none of the supplied values resolve to a known company on the workspace top-account list.
lead_idintegerFilter to signals linked to a specific lead. Use the lead_id returned by the signals endpoints. Only matches detections directly linked to the lead, not signals attributed to that lead through fallback matching.

Results are sorted by detection date descending (most recent first).

Example request

curl -X POST "https://api.getsillage.com/api/v2/partner/workspaces/ws_123/signals/query" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit": 25}'

Example response

{
  "data": [
    {
      "id": 301,
      "signal_type": "keywordDetection",
      "data": {
        "content_id": 5100,
        "author": {
          "type": "profile",
          "full_name": "Jane Doe",
          "headline": "VP Product at Acme",
          "linkedin_url": "https://linkedin.com/in/janedoe"
        },
        "keywords_found": ["AI"]
      },
      "detected_at": "2026-06-12T09:00:00.000Z",
      "signal_date": "2026-06-12T08:55:00.000Z",
      "lead_id": null,
      "company_id": 456,
      "agent_id": 789,
      "source_url": "https://www.linkedin.com/feed/update/urn:li:activity:7100000000000000000/",
      "author": {
        "full_name": "Jane Doe",
        "headline": "VP Product at Acme",
        "linkedin_url": "https://linkedin.com/in/janedoe"
      },
      "excerpt": "Excited to share how AI is transforming our product roadmap this quarter."
    }
  ],
  "meta": {
    "next_cursor": "eyJkZXRlY3RlZEF0IjoiMjAyNi0wNi0xMlQwOTowMDowMC4wMDBaIiwiaWQiOjMwMX0=",
    "has_more": true
  }
}

Response fields

FieldTypeDescription
idintegerId of the signal.
signal_typestring or nullSignal type.
dataany or nullSignal-type-specific payload.
detected_atstring or nullWhen the signal was detected (ISO 8601).
signal_datestring or nullDate associated with the signal event (ISO 8601).
lead_idinteger or nullID of the associated lead, if any.
company_idinteger or nullID of the associated company, if any.
agent_idinteger or nullID of the agent that produced this signal, if any.
source_urlstring or nullLink to the source content behind the signal (the post, interaction, or job posting). null when the signal has no public external link. Presence depends on signal_type.
authorobject or nullThe person behind the source content, when known: full_name, headline, linkedin_url (each nullable). null for company-level or authorless signals.
excerptstring or nullA short text excerpt from the source content (post text, comment, or job description). null when no text is available.
meta.next_cursorstring or nullCursor to pass as cursor on the next request. Null on last page.
meta.has_morebooleanWhether more results exist beyond this page.

Count signals

GET/api/v2/partner/workspaces/{partner_workspace_id}/signals/count

Returns the total number of signal detections matching the given filters. Accepts the same filters as List signals, passed as query-string parameters instead of a JSON body — company identifiers take a comma-separated list here instead of an array.

Query parameters

ParameterTypeDescription
signal_start_datestring (date-time)Count detections whose signal date is on or after this timestamp (ISO 8601 with UTC offset). Defaults to 90 days before now. Cannot go further back than 180 days — an older value is clamped to that limit.
signal_end_datestring (date-time)Count detections whose signal date is on or before this timestamp (ISO 8601 with UTC offset).
detection_start_datestring (date-time)Count detections that were first seen on or after this timestamp (ISO 8601 with UTC offset).
detection_end_datestring (date-time)Count detections that were first seen on or before this timestamp (ISO 8601 with UTC offset).
agent_idintegerCount detections produced by a specific agent. Pass the agent_id returned on each detection in the list response.
signal_run_idintegerCount detections from a specific run. Pass the run id returned by the signal-runs endpoint.
company_idintegerCount detections for a specific company on the workspace top-account list. Pass the company_id from the workspace target account list. Taken at face value — no lookup is performed, so an unknown company_id or a company that exists in the workspace but is not on the top-account list returns a zero count rather than a 404.
company_domainstringCount detections for companies on the workspace top-account list matching this domain. Accepts a comma-separated list for OR filtering across multiple companies (e.g. acme.com,widgets.io). Returns 404 when none of the supplied values resolve to a known company on the workspace top-account list.
company_linkedin_handlestringCount detections for companies on the workspace top-account list matching this LinkedIn handle. Accepts a comma-separated list (e.g. acme-corp,widgets-io). Returns 404 when none of the supplied values resolve to a known company on the workspace top-account list.
company_linkedin_urlstringCount detections for companies on the workspace top-account list matching this LinkedIn URL. Accepts a comma-separated list. Returns 404 when none of the supplied values resolve to a known company on the workspace top-account list.
lead_idintegerFilter to signals linked to a specific lead. Use the lead_id returned by the signals endpoints. Only matches detections directly linked to the lead, not signals attributed to that lead through fallback matching.

Example request

curl "https://api.getsillage.com/api/v2/partner/workspaces/ws_123/signals/count" \
  -H "Authorization: Bearer $SILLAGE_API_KEY"

Example response

{
  "total": 42
}

Errors

StatusMeaning
400List signals: invalid request body. Count signals: invalid query parameter.
401The master key is missing or invalid.
403The master key is not authorized to access this resource.
404Returned when string company identifier(s) (company_domain, company_linkedin_handle, or company_linkedin_url) were supplied and none resolved to a known company in the workspace. company_id is never validated and never triggers a 404.
429Too many requests.
500An unexpected server error occurred.

Error responses use RFC 9457 problem documents with Content-Type: application/problem+json.

On this page