Create Agent

Create an agent for your workspace.

Creates an agent for your workspace. A workspace can have multiple agents. The agent is created enabled (enabled: true) and starts monitoring immediately.

Credit usage

champion_tracking agents consume credits from your workspace balance each time a tracked champion is re-enriched — a recurring cost for as long as the agent stays enabled. Keyword agents (keyword_detection, keyword_post_search, job_posting_keyword_detection) consume credits for the keyword signals they detect.

Ten agent types are supported: keyword_detection, keyword_post_search, job_posting_keyword_detection, job_update, champion_tracking, plus five semantic watchlist types.

TypeDescription
keyword_detectionMonitors LinkedIn posts for specified keywords, scoped to your target accounts.
keyword_post_searchMonitors LinkedIn broadly for specified keywords — not limited to your target accounts.
job_posting_keyword_detectionMonitors the job postings your tracked companies publish for specified keywords.
job_updateDetects job changes and promotions among your contacts.
competitorWatches a list of competitor companies. (company list)
partnerWatches a list of partner companies. (company list)
customerWatches a list of customer companies. (company list)
influencerWatches a list of influencer profiles. (profile list)
championWatches a list of champion profiles. (profile list)
champion_trackingDetects when a tracked champion leaves their company, changes company, or is promoted. (profile list)

Note: For the five semantic watchlist types, a watchlist of the matching type is created automatically and bound to the new agent. Pass watchlist_id to bind an existing list instead — its type must equal the chosen agent type, otherwise the request returns 422.

champion_tracking works the same way, but always binds a profile watchlist of type champion — the same list a champion agent can bind to, simultaneously. Pass watchlist_id to bind an existing champion watchlist instead of creating one automatically; it must be of type champion, otherwise the request returns 422.

Minimum setup required

Most agent types need a usable persona and at least one target account before they can start monitoring — otherwise there is nothing to target. Before creating an agent of one of these types, your workspace must have:

  • a persona with both a job title and a location set (having a persona on file is not enough on its own), and
  • at least one target account.

job_update, job_posting_keyword_detection, and champion_tracking are exempt and can be created right away, since none of them is tied to a specific persona or account list.

If your workspace does not meet these requirements yet, the request is refused with 422 and a message naming the missing prerequisite and the tool to call first, for example:

  • "Create a persona with sillage_v2_upsert_persona (job_title and location required) before creating an agent."
  • "Persona is missing job_title. Update it with sillage_v2_upsert_persona before creating an agent."
  • "Add at least one top account with sillage_v2_add_top_accounts first."

The response also includes a type field that identifies the missing prerequisite, so your code can check it instead of parsing the message: https://docs.getsillage.com/errors/persona-incomplete when the persona is missing or incomplete (also returned when both prerequisites are missing — the message then names both), or https://docs.getsillage.com/errors/insufficient-top-accounts when only the target account is missing.

{
  "type": "https://docs.getsillage.com/errors/persona-incomplete",
  "title": "Persona incomplete",
  "status": 422,
  "detail": "Create a persona with sillage_v2_upsert_persona (job_title and location required) before creating an agent.",
  "instance": "/api/v2/agents"
}

Create agent

POST/api/v2/agents

Request body

FieldTypeDescription
namestringDisplay name of the agent. Between 1 and 100 characters.
typeenum (keyword_detection, keyword_post_search, job_posting_keyword_detection, job_update, competitor, partner, customer, influencer, champion, champion_tracking)The agent type.
parametersobjectkeyword_detection, keyword_post_search, and job_posting_keyword_detection only. Type-specific configuration (see below). Omit for watchlist types and champion_tracking.
parameters.tracking_keywordsstring[]Keywords Sillage monitors — in LinkedIn posts for keyword_detection (scoped to your target accounts) or keyword_post_search (broad search across LinkedIn), or in your tracked companies' job postings (title and description) for job_posting_keyword_detection. Minimum 1 required.
parameters.max_posts_to_scrapeintegerkeyword_detection only. Optional. Maximum number of posts to scrape per run.
parameters.start_datestringkeyword_detection and keyword_post_search only. Optional. ISO 8601 date — scrape only posts published after this date.
watchlist_idintegerOptional. Watchlist types and champion_tracking only. Bind an existing list of the expected type instead of creating one automatically — for champion_tracking the list must be of type champion, otherwise returns 422.

Example request — keyword detection

curl -X POST "https://api.getsillage.com/api/v2/agents" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "LinkedIn keyword monitor",
    "type": "keyword_detection",
    "parameters": {
      "tracking_keywords": ["fundraising", "series a", "\"series a\"", "hiring sales"]
    }
  }'

Example request — competitor watchlist (bound at creation)

curl -X POST "https://api.getsillage.com/api/v2/agents" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Competitor tracker",
    "type": "competitor",
    "watchlist_id": 7
  }'

Example request — job update

curl -X POST "https://api.getsillage.com/api/v2/agents" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Job change tracker",
    "type": "job_update"
  }'

Example request — job posting keyword detection

curl -X POST "https://api.getsillage.com/api/v2/agents" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Hiring intent monitor",
    "type": "job_posting_keyword_detection",
    "parameters": {
      "tracking_keywords": ["salesforce", "revenue operations", "outbound"]
    }
  }'

Example request — champion tracking (implicit watchlist)

curl -X POST "https://api.getsillage.com/api/v2/agents" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Champion job change tracker",
    "type": "champion_tracking"
  }'

Example response

201 Created

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

Response fields

FieldTypeDescription
data.idintegerIdentifier of the agent.
data.namestringDisplay name of the agent.
data.typestringAgent type (keyword_detection, keyword_post_search, job_posting_keyword_detection, job_update, competitor, partner, customer, influencer, champion, champion_tracking).
data.enabledbooleanWhether the agent is currently active. A newly created agent is true.
data.parametersobjectConfigured parameters (keyword detection, keyword post search, and job posting keyword detection); empty object for watchlist types and champion_tracking.
data.watchlist_kindstring | nullKind of the bound watchlist (company or profile), or null when unbound.
data.watchlist_idinteger | nullNumeric id of the bound watchlist, or null when unbound.
data.created_atstringISO 8601 creation timestamp.
data.updated_atstringISO 8601 last-update timestamp.

Errors

StatusDescription
401The API key is missing or invalid.
422Invalid request body — unsupported type, missing tracking_keywords for keyword_detection, keyword_post_search, or job_posting_keyword_detection, or watchlist_id references a list whose type does not match the expected watchlist type for the chosen agent type (for champion_tracking, it must be a champion watchlist). Also returned when the workspace does not yet meet the minimum setup required for this agent type — see Minimum setup required.

On this page