Get a client's signal setup
Retrieve one of a client's signal setups by ID.
Retrieves one signal setup by ID, with its signal template embedded and its parameters as applied.
Use the id returned by List a client's signal setups or Set up a signal for a client.
Route
GET/api/v3/partner/workspaces/{partner_workspace_id}/signal-setups/{signal_setup_id}
Path parameters
| Parameter | Type | Description |
|---|---|---|
| partner_workspace_id | string | Your own ID for the client workspace, as you chose it at creation. URL-encode it in the path. |
| signal_setup_id | integer | ID of the signal setup, from the list or create endpoint. |
Example request
curl "https://api.getsillage.com/api/v3/partner/workspaces/ws_123/signal-setups/42" \
-H "Authorization: Bearer $SILLAGE_MASTER_KEY"Success response
Status: 200 OK
{
"data": {
"id": 42,
"signal_template": {
"id": 2,
"key": "mentioned-my-brand",
"name": "Mentioned my brand",
"description": "Detect when prospects mention your brand on LinkedIn.",
"row_summary": "Posts naming your product anywhere on LinkedIn.",
"category": "my_network",
"status": "live",
"subjects": ["person"],
"scopes": ["discovery", "account_monitoring"],
"tags": [],
"pricing": {
"account_monitoring": {
"signal_bucket": "essential",
"credits": 50,
"unit": "per_key_account_per_month"
},
"discovery": {
"credits": 20,
"unit": "signal_found"
}
},
"archived_at": null
},
"name": "Acme brand mentions",
"status": "enabled",
"parameters": {
"scopes": ["discovery"],
"keywords": ["acme.com"]
},
"schedule": null,
"persona_id": 7,
"created_at": "2026-09-18T12:00:00.000Z",
"last_detected_at": "2026-09-20T08:30:00.000Z"
}
}Response fields
| Field | Type | Description |
|---|---|---|
| data.id | integer | ID of the signal setup. |
| data.signal_template | object | The signal template this setup is for, as List a client's signal templates returns it, without its setup block. It carries the template's id, key, name, category, status, subjects, scopes, tags, pricing and the other fields listed there. |
| data.name | string | Display name for this setup. |
| data.status | string | enabled when the setup is active, disabled when it is paused. An active setup runs every week when it has a schedule, and otherwise only when you launch a signal run. |
| data.parameters | object | The parameters the setup runs with, as applied: the ones you sent, plus the default of every parameter you left out. They are validated against the setup.fields of the signal template. The schedule is not one of them: it has its own schedule field. |
| data.schedule | string or null | "weekly" when the setup runs every week, null when it has no schedule. |
| data.persona_id | integer or null | The persona this setup belongs to. null when it is tied to no persona (see Persona required). It never changes. |
| data.last_detected_at | string or null | When this setup last found a signal you can list, null while it has found none. |
| data.created_at | string | When this setup was created. |
Errors
| Status | Meaning |
|---|---|
| 401 | The master key is missing or invalid. |
| 404 | No workspace found for this partner_workspace_id, or no signal setup matches this ID. |
| 422 | signal_setup_id is not a valid ID. Also returned when partner_workspace_id is invalid. 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.