Poll a Signal Run

Check a signal run's stage until it reaches a terminal state.

Poll a run started by the launch endpoint until its stage becomes terminal (completed, completed_partial, or failed).

The {id} path parameter is the signal_request_id returned at launch — an ID specific to your environment.

GET/api/v2/workspace/signal-runs/{id}

Path parameters

ParameterTypeDescription
idintegerThe signal_request_id returned by the launch endpoint. This ID is specific to your environment. A signal_request_id belonging to another workspace returns 404.

Stage values

StageTerminalDescription
waitingnoRun is accepted and accounts are being prepared.
runningnoAccounts are actively being scanned.
completedyesAll accounts were scanned successfully.
completed_partialyesSome accounts were scanned; at least one could not be.
failedyesThe run could not complete — no accounts were scanned.

Poll until stage is completed, completed_partial, or failed.

Example request

curl "https://api.getsillage.com/api/v2/workspace/signal-runs/12345" \
  -H "Authorization: Bearer $SILLAGE_API_KEY"
const response = await fetch(
  'https://api.getsillage.com/api/v2/workspace/signal-runs/12345',
  {
    headers: {
      Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
    },
  },
)

const result = await response.json()
import { request } from 'node:https'

const req = request(
  new URL('https://api.getsillage.com/api/v2/workspace/signal-runs/12345'),
  {
    headers: {
      Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
    },
  },
  (res) => {
    let data = ''
    res.on('data', (chunk) => {
      data += chunk
    })
    res.on('end', () => {
      console.log(JSON.parse(data))
    })
  },
)

req.end()
import os
import requests

response = requests.get(
    "https://api.getsillage.com/api/v2/workspace/signal-runs/12345",
    headers={"Authorization": f"Bearer {os.environ['SILLAGE_API_KEY']}"},
    timeout=30,
)
response.raise_for_status()
result = response.json()

Example response (still running)

200 OK

{
  "signal_request_id": 12345,
  "stage": "running",
  "metadata": null
}

Example response (completed)

200 OK

{
  "signal_request_id": 12345,
  "stage": "completed",
  "metadata": null
}

When some accounts could not be scanned, metadata reports them so you can retry:

{
  "signal_request_id": 12345,
  "stage": "completed_partial",
  "metadata": { "failed": { "dropped_account_ids": [202, 203] } }
}

Response fields

FieldTypeDescription
signal_request_idintegerID of the run.
stagestringCurrent stage (see stage values table above).
metadataobject | nullAccounts that were not scanned (failed.dropped_account_ids). null when every account was scanned, or when the run failed entirely (stage is failed).

Errors

StatusMeaning
400Invalid path parameter.
401The API key is missing or invalid.
403The workspace does not have access to this resource.
404Signal run not found or belongs to another workspace.
429Rate limit exceeded.
500An unexpected server error occurred.

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

{
  "type": "https://docs.getsillage.com/errors/not-found",
  "title": "Not Found",
  "status": 404,
  "detail": "Signal run not found.",
  "instance": "/api/v2/workspace/signal-runs/12345"
}

On this page