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
| Parameter | Type | Description |
|---|---|---|
| agent_id | integer | Identifier of the agent. |
Request body
| Field | Type | Description |
|---|---|---|
| name | string | Optional. Display name of the agent. Between 1 and 100 characters. |
| enabled | boolean | Optional. Whether the agent is active and monitoring. |
| parameters | object | Optional. Type-specific configuration (see below). |
| parameters.tracking_keywords | string[] | 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_scrape | integer | Optional. Maximum number of posts to scrape per run. |
| parameters.start_date | string | Optional. ISO 8601 date — scrape only posts published after this date. |
| watchlist_id | integer | null | Optional. 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_kind | enum (company, profile) | null | Optional. 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
| Field | Type | Description |
|---|---|---|
| data.id | integer | Identifier of the agent. |
| data.name | string | Display name of the agent. |
| data.type | string | Agent type. |
| data.enabled | boolean | Whether the agent is currently active. |
| data.parameters | object | The configured parameters, echoed back. |
| data.watchlist_kind | string | Kind (company/profile) of the bound watchlist, or null when unbound. |
| data.watchlist_id | integer | Id of the bound watchlist, or null when the agent is unbound. |
| data.created_at | string | ISO 8601 creation timestamp. |
| data.updated_at | string | ISO 8601 last-update timestamp. |
Errors
| Status | Description |
|---|---|
| 401 | The API key is missing or invalid. |
| 404 | The agent does not exist. |
| 422 | Invalid request body — no field provided, or empty tracking_keywords. |