Skip to main content
PATCH
Update a LinkedIn content signal

Authorizations

Authorization
string
header
required

Account API key passed in the Authorization header

Path Parameters

id
string
required

Query Parameters

account_id
string

Target account UUID. Required for staff callers; ignored for customer API keys.

Body

application/json
accept_all_posts
boolean

Switch the AI post judge off (true) or on (false). Either way the current window's posts are re-marked on the next sweep.

author_profile_urls
string[]

New list of LinkedIn profile URLs, replacing the current one. Send an empty list to remove the people facet (the signal must then have keyword queries or companies).

collection
enum<string>

Engagers only: switch between collecting the people who engaged with a relevant post (engagers) and the person who wrote it (post_authors). Relevant posts not yet extracted are collected the new way on the next sweep. Rejected for the authors subject.

Available options:
engagers,
post_authors
company_linkedin_ids
string[]

New list of numeric LinkedIn company IDs, replacing the current one. Send an empty list to remove the company facet (the signal must then have keyword queries or people).

contacts_list_ids
string[]

Contacts lists whose members an authors signal watches. Resolved to contacts at sweep time, so a contact added to the list later is picked up without editing the signal. Authors only; at least one of contacts_list_ids or author_profile_urls is required in that subject.

Maximum array length: 20
detects_event_attendance
boolean

Turn the built-in event rule on or off. Turning it on replaces the current relevance rule; the current window's posts are re-judged on the next sweep. Cannot be combined with accept_all_posts or post_filter.

is_enabled
boolean

false pauses the signal: no sweep, no spend, history kept. true resumes it.

keyword_queries
string[]

New list of short LinkedIn content queries, replacing the current one. Send an empty list to remove the keyword facet (the signal must then have companies or people).

Maximum array length: 10
max_contacts_per_sweep
integer<int32>

Authors cost dial: how many contacts have their posts fetched per sweep, least-recently-checked first, so a large list drains over several sweeps. One LinkedinContentSignalAuthor credit each. Defaults to 50.

Required range: 1 <= x <= 500
max_engagers_per_post
integer<int32>

How many likers and how many commenters are read per relevant post.

Required range: 1 <= x <= 500
max_posts_per_contact
integer<int32>

Authors cost dial: how many of each watched contact's recent posts are fetched and judged. Defaults to 10.

Required range: 1 <= x <= 50
max_posts_per_sweep
integer<int32>

How many new posts one pass of a sweep reads and, at most, judges (up to 10 passes per sweep).

Required range: 1 <= x <= 1000
mentioned_company_linkedin_ids
string[]

New list of numeric LinkedIn company IDs the posts must mention, replacing the current one. Send an empty list to remove the mentioned-companies facet.

mentioned_profile_urls
string[]

New list of LinkedIn profile URLs of people the posts must mention, replacing the current one. Send an empty list to remove the mentioned-people facet.

min_engagements
integer<int32>

Only consider posts with reactions + comments >= this.

Required range: x >= 0
name
string

New label. Unique per account.

Minimum string length: 1
post_filter
string

New keyword relevance rule, replacing the current one (same syntax as on create). Send an empty string to go back to the AI judge on the use-cases. The current window's posts are re-judged on the next sweep. Cannot be combined with accept_all_posts.

Maximum string length: 500
post_sources
enum<string>[]

Authors only: which of a watched person's posts count. authored (the default) is what they wrote themselves; mentioned is posts by anyone that tag them, answering "is anyone talking about this person?". Both together reads both corpora. mentioned costs more than authored -- one search per contact per sweep, plus a one-off profile lookup for each contact whose LinkedIn member ID is not already known -- and it can answer nothing for a contact with no LinkedIn profile, which the per-contact counters report separately. Billed as LinkedinContentSignalMention, one per contact searched.

Maximum array length: 2
Available options:
authored,
mentioned
search_sort
enum<string>

Engagers only: switch the search order between date_posted (Latest) and relevance (Top match). Applies from the next sweep.

Available options:
date_posted,
relevance
search_window
string

Engagers only: past_24h, past_week or past_month, or an empty string to follow sweep_frequency again. Rejected when shorter than the time between two sweeps. Applies from the next sweep.

subject
enum<string>

Switch what the signal watches. Changing subject re-validates the whole definition: the facets the new subject does not use must be empty.

Available options:
engagers,
authors
use_cases
object[]

New ordered list of use-cases, replacing the current one. Any change re-judges every post of the past week on the next sweep, and each re-judged post is billed again.

Required array length: 1 - 10 elements

Response

OK

accept_all_posts
boolean
required

When true, every post the search returns is taken as relevant without the AI judge (no LinkedinPostAnalyzed credit); the people who engaged are still filtered on their headline and billed. Use-cases are optional in that mode.

author_profile_urls
string[] | null
required

LinkedIn profile URLs of people whose posts are searched, normalised to https://www.linkedin.com/in/. Authors (companies and people) are a union, combined with keywords into one search.

collection
enum<string>
required

Engagers only: which person a relevant post yields. engagers (the default): the people who liked or commented on it. post_authors: the person who wrote it -- the one shopping in public when the post itself is the buying signal. Posts written by a company page have no person and are skipped. Each collected author is one event with interaction_type Author, filtered and billed like an engager.

Available options:
engagers,
post_authors
company_linkedin_ids
string[] | null
required

Numeric LinkedIn company IDs whose posts are searched. Combined with each keyword query into one search.

contacts_list_ids
string[] | null
required

Contacts lists whose members an authors signal watches. Resolved to contacts at sweep time, so a contact added to the list later is picked up without editing the signal. Authors only; at least one of contacts_list_ids or author_profile_urls is required in that subject.

created_at
string<date-time>
required
detects_event_attendance
boolean
required

Whether the built-in event rule is this signal's relevance rule: a post is relevant when its author said they will be at a named, upcoming event. The event found is reported on the post.

id
string
required
is_enabled
boolean
required

A disabled signal is not swept and costs nothing, but keeps its history.

keyword_queries
string[] | null
required

The short LinkedIn content queries, exactly as you wrote them. Each one runs as its own search. Empty for a search that only follows companies or people.

max_contacts_per_sweep
integer<int32>
required

Authors cost dial: how many contacts have their posts fetched per sweep, least-recently-checked first, so a large list drains over several sweeps. One LinkedinContentSignalAuthor credit each. Defaults to 50.

max_engagers_per_post
integer<int32>
required

Cost dial: how many likers and how many commenters are read per relevant post.

max_posts_per_contact
integer<int32>
required

Authors cost dial: how many of each watched contact's recent posts are fetched and judged. Defaults to 10.

max_posts_per_sweep
integer<int32>
required

Cost dial: how many new posts one pass of a sweep reads and, at most, judges. A sweep runs up to 10 passes, each reading past the posts it already knows, and stops once it has collected about 50 people or finds nothing new. Re-found posts keep their cached verdict and cost nothing.

mentioned_company_linkedin_ids
string[] | null
required

Numeric LinkedIn company IDs the posts must mention (tag), whoever wrote them. Combined with the keyword queries and authors into the same searches.

mentioned_profile_urls
string[] | null
required

LinkedIn profile URLs of people the posts must mention (tag), whoever wrote them, normalised to https://www.linkedin.com/in/.

min_engagements
integer<int32>
required

Only posts with reactions + comments >= this are considered.

name
string
required

Your label for this signal. Unique per account.

Example:

"Shop-floor visibility pains"

post_filter
string
required

The seller's own relevance rule, when the AI judge is not used: a boolean keyword expression over the post's text (words, quoted phrases, AND, OR, NOT, parentheses). Empty means the use-cases and the AI judge decide. When set, every post the search returns is judged by the rule alone, at no LinkedinPostAnalyzed credit, and use-cases are optional.

post_sources
string[] | null
required

Authors only: which of a watched person's posts count. authored (the default) is what they wrote themselves; mentioned is posts by anyone that tag them, answering "is anyone talking about this person?". Both together reads both corpora. mentioned costs more than authored -- one search per contact per sweep, plus a one-off profile lookup for each contact whose LinkedIn member ID is not already known -- and it can answer nothing for a contact with no LinkedIn profile, which the per-contact counters report separately. Billed as LinkedinContentSignalMention, one per contact searched.

search_sort
enum<string>
required

The order the searches ask LinkedIn for. date_posted (LinkedIn's Latest): the newest posts of the window first. relevance (Top match): the posts LinkedIn finds most relevant to the query first, which suits a broad query. The sweep's date window applies to both.

Available options:
date_posted,
relevance
search_window
string
required

How far back the searches look, and so the oldest a post may be to count: past_24h, past_week or past_month. Empty when the window follows sweep_frequency (daily reads the past week, weekly and once the past month).

subject
enum<string>
required

What the signal watches. engagers (default): search LinkedIn for posts and collect the people who liked or commented on the relevant ones. authors: take people you already know -- the contacts lists below -- and judge their own posts, answering "has this person posted about this?" per contact. The use-cases mean the same thing in both.

Available options:
engagers,
authors
updated_at
string<date-time>
required
use_cases
object[] | null
required

Ordered list of named use-cases, each with its own AI prompt. A post is relevant when it falls into at least one; the names are stamped on the engagers it yields.

last_sweep_engagers_collected
integer<int32>

How many people the last run collected from relevant posts. Each one cost one LinkedinContentSignalEngager credit.

last_sweep_outcome
string

What the last run did. One of:

  • completed: it ran; last_sweep_posts_analyzed and last_sweep_engagers_collected say what it did. Zero is a real answer.
  • out_of_credits: skipped before spending, because the account could not pay for a single post analysis or a single engager. This is the one to check when a feed goes quiet — topping up resumes it on the next sweep.
  • failed: it ran and something went wrong, usually the provider. Self-correcting, since the next sweep re-reads an overlapping window.
last_sweep_posts_analyzed
integer<int32>

How many posts the last run had the AI judge. Each one cost one LinkedinPostAnalyzed credit; cached re-finds are not counted.

last_swept_at
string<date-time>

When this signal last ran. Absent until its first sweep.