Get a client's signal template
Retrieve one signal template, including an archived one.
Retrieves one signal template by its ID, with the parameters a setup for it takes. Unlike List a client's signal templates, this also returns an archived signal template, so you can still read the template a setup points at. Setting up an archived signal template is refused with a 409.
Use the id returned by List a client's signal templates.
Route
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_template_id | integer | ID of the signal template, from the list route. |
Query parameters
| Parameter | Type | Description |
|---|---|---|
| persona_id | integer | Show the computed defaults (the client's domain, the names of the client's competitors) as they would be applied for this persona, given by its ID from List personas. It must be an active persona of the client's workspace. It also decides which setups count for the not_set_up tag: those of this persona and those that belong to no persona. |
Example request
curl "https://api.getsillage.com/api/v3/partner/workspaces/ws_123/signal-templates/4" \
-H "Authorization: Bearer $SILLAGE_MASTER_KEY"Success response
Status: 200 OK
{
"data": {
"id": 4,
"key": "mentioned-keywords-on-linkedin",
"name": "Mentioned keywords on LinkedIn",
"description": "Detect when prospects post about the problems and technologies you address.",
"row_summary": "Posts naming the problems and technologies you address.",
"category": "market",
"status": "live",
"subjects": ["person"],
"scopes": ["discovery", "account_monitoring"],
"tags": ["popular", "not_set_up"],
"pricing": {
"account_monitoring": {
"signal_bucket": "essential",
"credits": 50,
"unit": "per_key_account_per_month"
},
"discovery": {
"credits": 20,
"unit": "signal_found"
}
},
"setup": {
"fields": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"keywords": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"x-label": "Keywords to spot in their posts",
"x-hint": "The keywords are yours to set.",
"x-control": "keywords"
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": ["discovery", "account_monitoring"]
},
"x-label": "Where it looks"
}
},
"required": ["scopes", "keywords"],
"unevaluatedProperties": false
},
"shape": "keyword"
},
"archived_at": null
}
}Response fields
| Field | Type | Description |
|---|---|---|
| data.id | integer | ID of the signal template. Use it as signal_template_id when you set a signal up. |
| data.key | string | Stable identifier of the signal template, such as mentioned-my-brand. It is also the key of the template in Credit usage. Prefer it to id when you store a reference. |
| data.name | string | The name of the signal template. |
| data.description | string or null | A short explanation of what the signal watches for. |
| data.row_summary | string or null | A one-line summary, for a compact display. |
| data.category | string | The category of the signal template. See the list of categories on the overview page. |
| data.status | string | live: the signal can be set up. |
| data.subjects | array of string | Who the signal watches: person, company, or both. |
| data.scopes | array of string | Which setups the signal supports: discovery, account_monitoring, or both. |
| data.tags | array of string | What the template is flagged with, and what you can filter on. popular: Sillage recommends starting with it. not_set_up: the client's workspace has no active or paused signal setup of it (see persona_id). |
| data.pricing | object | What the signal costs the client's workspace, by setup. pricing.account_monitoring and pricing.discovery are each null when the signal has no price for that mode. |
| data.pricing.account_monitoring | object or null | The account-monitoring price. |
| data.pricing.account_monitoring.signal_bucket | string | The pricing tier this price belongs to. |
| data.pricing.account_monitoring.credits | number | The exact price, in credits. |
| data.pricing.account_monitoring.unit | string | per_key_account_per_month: the price is charged for each key account, each month. |
| data.pricing.discovery | object or null | The Discovery price. |
| data.pricing.discovery.credits | number | The exact price, in credits. |
| data.pricing.discovery.unit | string | signal_found: the price is charged for each signal found. |
| data.setup | object | What a setup for this signal template can carry. |
| data.setup.fields | object | A JSON Schema (2020-12) document describing the setup's parameters. See the page of each template for its parameters and defaults. |
| data.setup.shape | string | The family of parameters the signal asks for: keyword, engagement, job_change, job_posting, firmographic, internal_signal or custom. |
| data.archived_at | string or null | When the signal template was archived, null while it is not. |
A default in setup.fields is exactly what is stored when you leave the property out.
Where the default depends on the client's workspace (the client's domain, the names of
the client's competitors), pass persona_id to see it for one persona. Without
persona_id: if the client's workspace has one persona, it is resolved for it; if it
has several, it is not shown, and those properties carry no default.
Errors
| Status | Meaning |
|---|---|
| 401 | The master key is missing or invalid. |
| 404 | No workspace found for this partner_workspace_id, or no signal template matches this id. |
| 422 | signal_template_id or persona_id is not valid: an unknown persona_id, or an archived persona. |
| 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.