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.

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

GET/api/v3/partner/workspaces/{partner_workspace_id}/signal-templates/{signal_template_id}

Path parameters

ParameterTypeDescription
partner_workspace_idstringYour own ID for the client workspace, as you chose it at creation. URL-encode it in the path.
signal_template_idintegerID of the signal template, from the list route.

Query parameters

ParameterTypeDescription
persona_idintegerShow 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

FieldTypeDescription
data.idintegerID of the signal template. Use it as signal_template_id when you set a signal up.
data.keystringStable 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.namestringThe name of the signal template.
data.descriptionstring or nullA short explanation of what the signal watches for.
data.row_summarystring or nullA one-line summary, for a compact display.
data.categorystringThe category of the signal template. See the list of categories on the overview page.
data.statusstringlive: the signal can be set up.
data.subjectsarray of stringWho the signal watches: person, company, or both.
data.scopesarray of stringWhich setups the signal supports: discovery, account_monitoring, or both.
data.tagsarray of stringWhat 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.pricingobjectWhat 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_monitoringobject or nullThe account-monitoring price.
data.pricing.account_monitoring.signal_bucketstringThe pricing tier this price belongs to.
data.pricing.account_monitoring.creditsnumberThe exact price, in credits.
data.pricing.account_monitoring.unitstringper_key_account_per_month: the price is charged for each key account, each month.
data.pricing.discoveryobject or nullThe Discovery price.
data.pricing.discovery.creditsnumberThe exact price, in credits.
data.pricing.discovery.unitstringsignal_found: the price is charged for each signal found.
data.setupobjectWhat a setup for this signal template can carry.
data.setup.fieldsobjectA JSON Schema (2020-12) document describing the setup's parameters. See the page of each template for its parameters and defaults.
data.setup.shapestringThe family of parameters the signal asks for: keyword, engagement, job_change, job_posting, firmographic, internal_signal or custom.
data.archived_atstring or nullWhen 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

StatusMeaning
401The master key is missing or invalid.
404No workspace found for this partner_workspace_id, or no signal template matches this id.
422signal_template_id or persona_id is not valid: an unknown persona_id, or an archived persona.
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