Skip to main content
POST
Create a companies watcher agent

Authorizations

Authorization
string
header
required

Your API token (af_…) as the Basic-auth username, with an empty password.

Body

application/json
listName
string
required

Name for BOTH the agent and the NEW dedicated results list this watcher creates. Must be unique — never reuse a source list's name; name it after the agent the user is creating.

Minimum string length: 1
eventType
enum<string>
required

Which change to watch on the companies in the source list(s).

Available options:
company-watch-linkedin-job-postings,
company-watch-linkedin-posts,
company-watch-press-mentions,
company-watch-funding-milestones
start
boolean
default:false

true creates AND activates the agent (spends credits); false (default) saves a draft to activate later.

listId
string

The existing SOURCE list(s) to watch, by id — the people/companies whose changes are tracked.

Minimum string length: 1
listIds
string[]

The existing SOURCE list(s) to watch, by id: the companies whose changes are tracked. Each id is a list id from GET /business/lists. Every list you name is watched, their members are unioned and duplicate ids are collapsed, and there is no cap on how many lists; listIds and listId are mutually exclusive (sending both is rejected). A source list holding no companies is rejected when the agent starts (422 AGENT_SOURCE_LIST_EMPTY).

Minimum array length: 1
Minimum string length: 1
expirationDate
string | null

Date the agent stops running, as YYYY-MM-DD (for example "2026-12-31"), and in the future. Pass null to run until you pause or delete it; omit it for the default of one month from creation.

keywords
string[]

Free text, matched as a keyword against the job POSTING TITLE upstream, never against the description (for example ["account executive", "sdr"]). At least one is required when eventType is company-watch-linkedin-job-postings, and the value is ignored entirely by the other event types. Every value must be distinct and non-empty: a repeated keyword is refused with 422 ("keywords must not contain duplicates") and so is an empty string. Values are passed to the provider as written, so near-duplicates that differ only by surrounding spaces are accepted and both kept. No cap on how many you send.

Minimum array length: 1
jobPostingLocationTypes
enum<string>[]

Work arrangement of the job posting. Use one of exactly: remote, on_site, hybrid. Multiple values are OR-joined (a posting with any listed arrangement matches); there are only three values, so listing all three is the same as omitting the field, which matches any arrangement. Read only when eventType is company-watch-linkedin-job-postings.

Minimum array length: 1
Available options:
remote,
on_site,
hybrid
frequency
integer
default:1

How often the watcher checks its source list(s), in days (1-90, default 1). This is also its billing cadence.

Required range: 1 <= x <= 90
maxContacts
integer

Cap on the total number of results this agent delivers into its list. Omit for no cap.

maxCreditSpend
integer

Maximum credits this agent may spend in a single run or refresh (1000 to 200000); delivery-driven monitors stop once their total delivered results reach it. Omit for no limit.

Required range: 1000 <= x <= 200000

Response

Success

agent
object
required