Get a signal run
Follow a signal run until it completes or fails.
Returns the current state of a run started by Launch a signal run. Poll it until its status is completed or failed. A run that belongs to another workspace returns 404.
Route
Access modes
Use a workspace API key. The workspace is inferred from the key.
Authorization: Bearer sk_live_...Path parameters
| Parameter | Type | Description |
|---|---|---|
| signal_run_id | integer | The id of the run, as returned by the launch endpoint. |
Example request
curl "https://api.getsillage.com/api/v3/signal-runs/12345" \
-H "Authorization: Bearer $SILLAGE_API_KEY"Success response (still running)
Status: 200 OK
{
"data": {
"id": 12345,
"status": "in_progress",
"label": "Detecting signals",
"created_at": "2026-01-15T09:30:00.000Z",
"updated_at": "2026-01-15T09:30:00.000Z",
"companies": [
{
"id": 88,
"name": "Acme",
"domain": "acme.com",
"linkedin_url": "https://www.linkedin.com/company/acme",
"linkedin_handle": "acme",
"logo_url": "https://example.com/acme-logo.png"
}
],
"signal_setup_id": 42,
"metadata": null
}
}Success response (completed)
Status: 200 OK
{
"data": {
"id": 12345,
"status": "completed",
"label": "Completed",
"created_at": "2026-01-15T09:30:00.000Z",
"updated_at": "2026-01-15T09:30:00.000Z",
"companies": [
{
"id": 88,
"name": "Acme",
"domain": "acme.com",
"linkedin_url": "https://www.linkedin.com/company/acme",
"linkedin_handle": "acme",
"logo_url": "https://example.com/acme-logo.png"
}
],
"signal_setup_id": 42,
"metadata": null
}
}When the check of some accounts failed while the run was going, the run is still completed, its label says so, and metadata lists those accounts so you can retry. A run that could not start for some accounts is failed and lists them the same way:
{
"data": {
"id": 12345,
"status": "completed",
"label": "Completed (some accounts could not be checked)",
"created_at": "2026-01-15T09:30:00.000Z",
"updated_at": "2026-01-15T09:30:00.000Z",
"companies": [
{
"id": 88,
"name": "Acme",
"domain": "acme.com",
"linkedin_url": "https://www.linkedin.com/company/acme",
"linkedin_handle": "acme",
"logo_url": "https://example.com/acme-logo.png"
}
],
"signal_setup_id": 42,
"metadata": {
"failed": {
"dropped_company_ids": [202, 203]
}
}
}
}Response fields
data has the fields below.
| Field | Type | Description |
|---|---|---|
| id | integer | ID of the signal run. |
| status | string | Where the run stands: pending, in_progress, completed or failed. See Run statuses. |
| label | string | A short readable description of the current step. |
| created_at | string (date-time) | When the run was started. |
| updated_at | string (date-time) | When the run was last updated. |
| companies | array | The accounts being scanned. An empty array means the run covers the whole workspace. |
| companies[].id | integer | ID of the company, as returned by POST /v3/companies/query. |
| companies[].name | string | null | Company name. |
| companies[].domain | string | null | Company domain. |
| companies[].linkedin_url | string | null | LinkedIn page of the company. |
| companies[].linkedin_handle | string | null | LinkedIn handle of the company. |
| companies[].logo_url | string | null | Logo of the company. |
| signal_setup_id | integer | null | ID of the signal setup the run belongs to, the same ID as in the client's signal setups. null when the run is not tied to one of the signal setups, for example a very old run, or a setup deleted while it was running. |
| metadata | object | null | Present when some accounts could not be checked: metadata.failed.dropped_company_ids lists their company IDs, both the accounts whose check could not be started when the run was launched (the run is then failed) and the accounts whose check failed while the run was going (the run is completed and its label says some accounts could not be checked). A failed check that covers the whole workspace names no company, so an empty or missing list does not mean every account was checked: read status and label for that. |
See Run statuses for the four values of status.
Errors
| Status | Meaning |
|---|---|
| 401 | The API key is missing or invalid. |
| 404 | No signal run matches this ID. |
| 422 | signal_run_id is not a valid ID. A query parameter is sent: this route takes none, and errors names the parameter. |
| 429 | Rate limit exceeded. |
| 500 | An 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.