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
Path parameters
| Parameter | Type | Description |
|---|---|---|
| partner_workspace_id | string | Opaque workspace identifier from the partner system. |
Request body
All fields are optional.
| Field | Type | Default | Description |
|---|---|---|---|
| cursor | string | Opaque pagination cursor. Pass the next_cursor value from the previous response to fetch the next page. Omit for the first page. | |
| limit | integer | 25 | Number of items to return per page (1–100). |
| signal_start_date | string (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_date | string (date-time) | Return detections whose signal date is on or before this timestamp (ISO 8601 with UTC offset). | |
| detection_start_date | string (date-time) | Return detections that were first seen on or after this timestamp (ISO 8601 with UTC offset). | |
| detection_end_date | string (date-time) | Return detections that were first seen on or before this timestamp (ISO 8601 with UTC offset). | |
| agent_id | integer | Return detections produced by a specific agent. Pass the agent_id returned on each detection in the list response. | |
| signal_run_id | integer | Return detections from a specific run. Pass the run id returned by the signal-runs endpoint. Results are automatically scoped to the workspace. | |
| type | array of string | Filter results to one or more signal types; unknown values are rejected. See the Signal reference for the list of types. | |
| company_id | integer | Return 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_domain | array of string | Return 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_handle | array of string | Return 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_url | array of string | Return 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_id | integer | Filter 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
| Field | Type | Description |
|---|---|---|
| id | integer | Id of the signal. |
| signal_type | string or null | Signal type. |
| data | any or null | Signal-type-specific payload. |
| detected_at | string or null | When the signal was detected (ISO 8601). |
| signal_date | string or null | Date associated with the signal event (ISO 8601). |
| lead_id | integer or null | ID of the associated lead, if any. |
| company_id | integer or null | ID of the associated company, if any. |
| agent_id | integer or null | ID of the agent that produced this signal, if any. |
| source_url | string or null | Link 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. |
| author | object or null | The person behind the source content, when known: full_name, headline, linkedin_url (each nullable). null for company-level or authorless signals. |
| excerpt | string or null | A short text excerpt from the source content (post text, comment, or job description). null when no text is available. |
| meta.next_cursor | string or null | Cursor to pass as cursor on the next request. Null on last page. |
| meta.has_more | boolean | Whether more results exist beyond this page. |
Count signals
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
| Parameter | Type | Description |
|---|---|---|
| signal_start_date | string (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_date | string (date-time) | Count detections whose signal date is on or before this timestamp (ISO 8601 with UTC offset). |
| detection_start_date | string (date-time) | Count detections that were first seen on or after this timestamp (ISO 8601 with UTC offset). |
| detection_end_date | string (date-time) | Count detections that were first seen on or before this timestamp (ISO 8601 with UTC offset). |
| agent_id | integer | Count detections produced by a specific agent. Pass the agent_id returned on each detection in the list response. |
| signal_run_id | integer | Count detections from a specific run. Pass the run id returned by the signal-runs endpoint. |
| company_id | integer | Count 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_domain | string | Count 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_handle | string | Count 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_url | string | Count 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_id | integer | Filter 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
| Status | Meaning |
|---|---|
| 400 | List signals: invalid request body. Count signals: invalid query parameter. |
| 401 | The master key is missing or invalid. |
| 403 | The master key is not authorized to access this resource. |
| 404 | Returned 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. |
| 429 | Too many requests. |
| 500 | An unexpected server error occurred. |
Error responses use RFC 9457 problem documents with Content-Type: application/problem+json.