Requests Status

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

Returns all in-flight work in your workspace — account mapping, top-account content, and signal runs — as a single requests list, newest first. Each item carries a type field telling you what kind of work it is. Use this 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 excluded from the snapshot.

IDs in this response are specific to your environment. A numeric id from production is not meaningful in staging or development.

Get in-flight requests

GET/api/v2/requests-status

Query parameters

Both are optional — without them, one call returns up to the 500 most recent in-flight items, which covers virtually every workspace.

ParameterTypeDescription
pageintegerPage number (default 1). Only needed when a previous response reported meta.page_count above 1.
page_sizeintegerItems per page (default and maximum 500).

Example request

curl "https://api.getsillage.com/api/v2/requests-status" \
  -H "Authorization: Bearer $SILLAGE_API_KEY"
const response = await fetch('https://api.getsillage.com/api/v2/requests-status', {
  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/requests-status'),
  {
    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/requests-status",
    headers={"Authorization": f"Bearer {os.environ['SILLAGE_API_KEY']}"},
    timeout=30,
)
response.raise_for_status()
result = response.json()

Example response

200 OK

{
  "data": {
    "requests": [
      {
        "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",
        "scope": "company",
        "companies": [{ "id": 88, "name": "Acme", "domain": "acme.com" }]
      },
      {
        "type": "account_mapping",
        "id": 12,
        "status": "in_progress",
        "label": "Mapping the account",
        "created_at": "2026-06-30T08:00:00.000Z",
        "updated_at": "2026-06-30T08:01:00.000Z",
        "company": { "id": 88, "name": "Acme", "domain": "acme.com" }
      }
    ]
  },
  "meta": { "in_flight_total": 2, "page": 1, "page_size": 500, "page_count": 1 }
}

An idle workspace returns the same structure with an empty requests array and in_flight_total: 0 — never a 403.

Response fields

data.requests mixes all kinds of in-flight work in one list, sorted by created_at (newest first). Branch on each item's type: "account_mapping" and "top_account_content" items share one shape; "signal" items have another.

Items with type account_mapping or top_account_content

FieldTypeDescription
typestringWhat kind of work this item is: "account_mapping" or "top_account_content".
idintegerID of the request. Specific to your environment.
statusstringNormalized status: "pending" (waiting to start) or "in_progress" (actively processing). Failed and completed requests are excluded from this endpoint.
labelstringPlain-language description of what is happening, safe to show to a user (e.g. "Gathering content for your accounts").
created_atstring (ISO 8601)When this request was created.
updated_atstring (ISO 8601)When this request was last updated.
companyobject | nullThe company this request is running for. null for workspace-wide requests.
company.idintegerNumeric ID of the company. Specific to your environment.
company.namestring | nullCompany name.
company.domainstring | nullCompany domain (e.g. acme.com).

Items with type signal

Signal runs have a different shape because one run can cover multiple accounts:

FieldTypeDescription
typestringWhat kind of work this item is: always "signal" for this shape.
idintegerID of the run. Specific to your environment.
statusstringNormalized status: "pending" (waiting to start) or "in_progress" (actively processing). Failed and completed runs are excluded from this endpoint.
labelstringPlain-language description of what is happening, safe to show to a user (e.g. "Detecting signals").
created_atstring (ISO 8601)When the run was started.
updated_atstring (ISO 8601)When the run was last updated.
scopestring"company" when the run targets specific accounts; "workspace" when it spans the whole workspace. An empty companies array with scope: "workspace" is expected, not missing data.
companiesarrayThe accounts being scanned. Empty when scope is "workspace".
companies[].idintegerNumeric ID of the company.
companies[].namestring | nullCompany name.
companies[].domainstring | nullCompany domain.

meta

FieldTypeDescription
in_flight_totalintegerTrue total of pending and in-progress items, regardless of pagination.
pageintegerCurrent page.
page_sizeintegerItems per page.
page_countintegerTotal number of pages. Above 1 only in extreme cases (e.g. a large account list being ingested) — fetch the remaining pages to see everything.

How the pipelines relate

The three pipelines run in sequence: account mapping feeds top-account content, which feeds signal detection. If the list contains account_mapping items but no signal items, signals are not missing — they cannot start until the earlier stages finish.

Errors

StatusMeaning
401The API key is missing or invalid.
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/unauthorized",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Invalid or missing API key.",
  "instance": "/api/v2/requests-status"
}

On this page