Create a signal
https://myagentmail.com/linkedin/signalsCreate a real-time intent watcher. We poll LinkedIn on the chosen cadence using the named session, classify each NEW post against the keyword, and (if a webhookUrl is set) POST high-intent matches to your endpoint with an HMAC-SHA256 signature. The lookback window is fixed at 24 hours — for historical lookups across a wider window use POST /v1/linkedin/searches instead.
Request body
Content-Type: application/json
namerequired string | |
kind"keyword" | "engagement" | "job_change_watchlist" | keyword (default) — saved keyword search. engagement — watch a profile/company for engagers; requires `target`. job_change_watchlist — watch a list of profiles for role/company changes; requires `watchlist`. enum: "keyword" | "engagement" | "job_change_watchlist" default: "keyword" |
querystring | Required when kind=keyword. |
targetobject | Required when kind=engagement. |
kindrequired "profile" | "company" | enum: "profile" | "company" |
urlrequired string | format: uri |
labelstring | |
watchlistobject[] | Required when kind=job_change_watchlist. Up to 500 entries. |
profileUrlrequired string | format: uri |
labelstring | |
sessionIdstring | Omit or send null to auto-distribute polling across every healthy LinkedIn session for this tenant (recommended — multiplies daily throughput by the number of connected accounts and protects each individual account from rate limits). Pass a specific session id to pin all polls for this signal to that account. |
cadence"daily" | "every_12h" | "every_6h" | "manual" | enum: "daily" | "every_12h" | "every_6h" | "manual" default: "daily" |
webhookUrlstring | format: uri |
filterMinIntent"low" | "medium" | "high" | enum: "low" | "medium" | "high" default: "medium" |
intentDescriptionrequired string | Plain-English firing rule the LLM classifier treats as the authoritative definition of what should fire. Example: "Flag as ready when the author is a founder/ operator complaining about cold email — skip vendors, agencies, and content marketers." |
Responses
signalobject | |
idrequired string | |
kindrequired "keyword" | "engagement" | "job_change_watchlist" | Acquisition strategy for this signal: - keyword: poll LinkedIn search for the saved query. - engagement: poll a tracked profile/company's recent posts and fire on engagers. - job_change_watchlist: poll a list of profiles weekly and fire on role/company changes. enum: "keyword" | "engagement" | "job_change_watchlist" |
namerequired string | |
querystring | Required for kind=keyword; null otherwise. |
targetobject | Engagement signals only — the resolved actor target. |
kind"profile" | "company" | enum: "profile" | "company" |
urlstring | |
urnstring | Resolved urn:li:fsd_profile:* or urn:li:fsd_company:*. |
labelstring | |
lastSeenPostUrnstring | Engagement signals only — watermark of the most recent post processed. We only fire on engagers of posts newer than this. |
watchlistCountinteger | Watchlist signals only — number of profiles being tracked. |
sessionIdstring | null = auto-distribute polling across all healthy LinkedIn sessions for this tenant (recommended). Specific id = pin the signal to that account so all polls come from it. |
cadencerequired "daily" | "every_12h" | "every_6h" | "manual" | enum: "daily" | "every_12h" | "every_6h" | "manual" |
webhookUrlstring | |
webhookSecretstring | Returned only on creation. Verify with HMAC-SHA256. |
filterMinIntentrequired "low" | "medium" | "high" | enum: "low" | "medium" | "high" |
intentDescriptionrequired string | Plain-English firing rule the LLM classifier uses as the authoritative definition of what should fire. Example: "Flag as ready when the author is a founder/operator complaining about cold email — skip vendors, agencies, and content marketers." The keyword is only a coarse pre-filter; this rule decides engage=true/false and the cited reason on every match. |
enabledrequired boolean | |
lastPolledAtstring | format: date-time |
nextPollAtstring | format: date-time |
lastErrorstring | |
lastErrorCodestring | |
lastErrorAtstring | format: date-time |
matchesCountinteger | |
createdAtstring | format: date-time |
updatedAtstring | format: date-time |
Authentication
Send your API key in the X-API-Key header (or Authorization: Bearer <key>). Any prefix accepted by this endpoint — tk_, wk_, ak_, or sa_ — is documented in the key prefix table.