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

Get requests status

Get a snapshot of all the work currently being processed in your workspace.

Returns all the work in progress in your workspace, signal runs and the preparation of your accounts, as one flat list, newest first. Each item has a type that tells you what kind of work it is. Use it to check what is still being prepared before concluding that results are missing.

Only pending and in_progress items are returned: failed and completed requests are not part of this snapshot. An empty data array means nothing is running, it is not an error.

Route

GET/api/v3/requests-status

Access modes

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

Authorization: Bearer sk_live_...

Query parameters

Both are optional. Without them, one call returns up to the 500 most recent items, which covers virtually every workspace.

ParameterTypeDescription
pageintegerPage number, from 1. Defaults to 1. Only needed when meta.pagination.page_count is above 1.
page_sizeintegerItems per page, from 1 to 500. Defaults to 500.

Example request

curl "https://api.getsillage.com/api/v3/requests-status" \
  -H "Authorization: Bearer $SILLAGE_API_KEY"

Success response

Status: 200 OK

{
  "data": [
    {
      "type": "signal",
      "id": 5,
      "status": "in_progress",
      "label": "Detecting signals",
      "created_at": "2026-06-30T08:05:00.000Z",
      "updated_at": "2026-06-30T08:05: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
    },
    {
      "type": "account_mapping",
      "id": 12,
      "status": "in_progress",
      "label": "Mapping the account",
      "failed_reason": null,
      "created_at": "2026-06-30T08:00:00.000Z",
      "updated_at": "2026-06-30T08:01:00.000Z",
      "company": {
        "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"
      }
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "page_size": 500,
      "page_count": 1,
      "total": 2
    }
  }
}

Response fields

data mixes every kind of work in one list, newest first. Branch on each item's type.

The list is paged by page number: see Pagination.

FieldTypeDescription
data[]arrayThe items of the page.
meta.pagination.pageintegerCurrent page.
meta.pagination.page_sizeintegerItems per page.
meta.pagination.page_countintegerNumber of pages. Above 1 only in extreme cases, for example a large list being added: fetch the remaining pages to see everything.
meta.pagination.totalintegerTotal number of pending and in-progress items, whatever the page.

Items of type signal

A signal item is exactly a run as Signal Runs describes it, plus its type.

FieldTypeDescription
typestringAlways "signal".
idintegerID of the signal run.
statusstringpending or in_progress.
labelstringA short readable description of the current step.
created_atstring (date-time)When the run was started.
updated_atstring (date-time)When the run was last updated.
companiesarrayThe accounts being scanned. An empty array means the run covers the whole workspace.
companies[].idintegerID of the company, as returned by POST /v3/companies/query.
companies[].namestring | nullCompany name.
companies[].domainstring | nullCompany domain.
companies[].linkedin_urlstring | nullLinkedIn page of the company.
companies[].linkedin_handlestring | nullLinkedIn handle of the company.
companies[].logo_urlstring | nullLogo of the company.
signal_setup_idinteger | nullID 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.

Items of type account_mapping or key_account_content

FieldTypeDescription
typestringWhat kind of work the item is: "account_mapping" or "key_account_content".
idintegerID of the request.
statusstringpending or in_progress.
labelstringA short readable description of the current step.
failed_reasonnullAlways null here: a request that failed is no longer in progress.
created_atstring (date-time)When the request was created.
updated_atstring (date-time)When the request was last updated.
companyobject | nullThe company the request is running for. null for a request that spans the whole workspace.
company.idintegerID of the company, as returned by POST /v3/companies/query.
company.namestring | nullCompany name.
company.domainstring | nullCompany domain, for example acme.com.
company.linkedin_urlstring | nullLinkedIn page of the company.
company.linkedin_handlestring | nullLinkedIn handle of the company.
company.logo_urlstring | nullLogo of the company.

How the work relates

Account mapping comes first, then the gathering of content for the accounts, then signal detection. When the list holds account_mapping items but no signal items, signals are not missing: they cannot start until the earlier work is done.

Errors

StatusMeaning
401The API key is missing or invalid.
422page or page_size is not valid, or a query parameter is not known.
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