Update Agent

Update an agent configured for your workspace.

Partially updates an agent by its numeric id, scoped to the workspace. All fields are optional, but at least one must be provided. Returns 404 when the agent does not exist.

Update agent

PUT/api/v2/agents/:agent_id

Path parameters

ParameterTypeDescription
agent_idintegerIdentifier of the agent.

Request body

FieldTypeDescription
namestringOptional. Display name of the agent. Between 1 and 100 characters.
enabledbooleanOptional. Whether the agent is active and monitoring.
parametersobjectOptional. Type-specific configuration (see below).
parameters.tracking_keywordsstring[]Keywords Sillage monitors — LinkedIn posts for keyword_detection agents, your tracked companies' job postings for job_posting_keyword_detection agents. Minimum 1 required.
parameters.max_posts_to_scrapeintegerOptional. Maximum number of posts to scrape per run.
parameters.start_datestringOptional. ISO 8601 date — scrape only posts published after this date.
watchlist_idinteger | nullOptional. Bind the agent to a watchlist by id. The kind is derived from the agent type — watchlist_kind may be omitted. Pass null (alongside null watchlist_kind) to unbind — this resets a watchlist agent to unconfigured (see note below).
watchlist_kindenum (company, profile) | nullOptional. When provided with watchlist_id, must match the kind implied by the agent type. Pass null alongside null watchlist_id to unbind. A contradicting kind returns 422.

Unbinding a watchlist agent resets its type

Unbinding a watchlist-type agent (competitor, partner, customer, influencer, or champion) by sending watchlist_id: null sets its type to unconfigured, empties its parameters, and stops its monitoring until you bind a new watchlist. The previous type is not remembered — bind a watchlist again with watchlist_id to reconfigure the agent.

Example request

curl -X PUT "https://api.getsillage.com/api/v2/agents/42" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "parameters": {
      "tracking_keywords": ["fundraising", "series a", "\"series a\"", "hiring sales", "product launch"]
    }
  }'
const response = await fetch('https://api.getsillage.com/api/v2/agents/42', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    enabled: true,
    parameters: {
      tracking_keywords: [
        'fundraising',
        'series a',
        '"series a"',
        'hiring sales',
        'product launch',
      ],
    },
  }),
})

const result = await response.json()
import { request } from 'node:https'

const body = JSON.stringify({
  enabled: true,
  parameters: {
    tracking_keywords: [
      'fundraising',
      'series a',
      '"series a"',
      'hiring sales',
      'product launch',
    ],
  },
})

const req = request(
  new URL('https://api.getsillage.com/api/v2/agents/42'),
  {
    method: 'PUT',
    headers: {
      Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
      'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(body),
    },
  },
  (res) => {
    let data = ''
    res.on('data', (chunk) => {
      data += chunk
    })
    res.on('end', () => {
      console.log(JSON.parse(data))
    })
  },
)

req.write(body)
req.end()
import os
import requests

response = requests.put(
    "https://api.getsillage.com/api/v2/agents/42",
    json={
        "enabled": True,
        "parameters": {
            "tracking_keywords": ["fundraising", "series a", '"series a"', "hiring sales", "product launch"],
        },
    },
    headers={"Authorization": f"Bearer {os.environ['SILLAGE_API_KEY']}"},
    timeout=30,
)
response.raise_for_status()
result = response.json()

Example response

{
  "data": {
    "id": 42,
    "name": "LinkedIn keyword monitor",
    "type": "keyword_detection",
    "enabled": true,
    "parameters": {
      "tracking_keywords": ["fundraising", "series a", "hiring sales", "product launch"]
    },
    "watchlist_kind": null,
    "watchlist_id": null,
    "created_at": "2026-06-18T10:00:00.000Z",
    "updated_at": "2026-06-18T11:30:00.000Z"
  }
}

Response fields

FieldTypeDescription
data.idintegerIdentifier of the agent.
data.namestringDisplay name of the agent.
data.typestringAgent type.
data.enabledbooleanWhether the agent is currently active.
data.parametersobjectThe configured parameters, echoed back.
data.watchlist_kindstringKind (company/profile) of the bound watchlist, or null when unbound.
data.watchlist_idintegerId of the bound watchlist, or null when the agent is unbound.
data.created_atstringISO 8601 creation timestamp.
data.updated_atstringISO 8601 last-update timestamp.

Errors

StatusDescription
401The API key is missing or invalid.
404The agent does not exist.
422Invalid request body — no field provided, or empty tracking_keywords.

On this page