Skip to main content
GET
List brand trackers

Authorizations

Authorization
string
header
required

An agent key (rpk_...) created in Settings → API & MCP, sent as Authorization: Bearer rpk_.... Bearer only: a cookie session can never drive this API. An OAuth 2.1 access token obtained from the same host works identically and lands on the same ceiling.

Headers

X-Workspace-Id
string

Which workspace to read. Omit it and you get the account’s home workspace, which on an agency account is often not where the live businesses are. A workspace this credential cannot read is refused with 403 rather than quietly answered from the default.

Query Parameters

q
string

JSON filter object, for example {"needs_response":true}.

sort_by
string

Field to sort on.

limit
integer

Maximum rows to return.

skip
integer

Rows to skip, for paging.

Response

Matching brand trackers.

id
string

Unique id.

location_id
string
tracker_name
string
search_query
string
search_keywords
string[]
exclude_keywords
string[]
platforms
string[]
is_active
boolean
last_synced_at
string
last_tweet_id
string
last_tweet_time
string
total_mentions
integer
sync_frequency_minutes
integer
include_retweets
boolean
auto_archive_irrelevant
boolean
language_filter
string[]
lookback_hours
integer
reddit_search_query
string
reddit_subreddits
string[]
reddit_include_comments
boolean
reddit_last_synced_at
string
reddit_last_post_id
string
web_monitoring_enabled
boolean
web_search_query
string
web_last_synced_at
string
news_last_synced_at
string
web_sync_frequency_minutes
integer
news_sync_frequency_minutes
integer
excluded_domains
string[]
monitored_source_types
string[]
tracker_type
enum<string>

'brand' = matches exact brand mentions (existing behavior). 'keyword' = matches topical mentions scoped to the attached BusinessLocation's geography (or globally for online-only businesses).

Available options:
brand,
keyword
topic_keywords
string[]

For tracker_type='keyword' only. Topical phrases to track. Semantically distinct from search_keywords (exact-match brand terms). Example: ['car accident', 'auto collision', 'DUI accident']. Joined as OR on each platform's search syntax.

required_terms
string[]

For tracker_type='keyword' only, opt-in. A fetched post/comment is dropped at sync time unless its text (title + body + subreddit name) contains at least one of these terms, case-insensitive. Fixes the Reddit over-fetch where the partial-match ranker drops the discriminating token from a multi-word keyword ('sell property Kellyville' matching worldwide 'sell property' posts). Empty = filter off. Currently enforced on the Reddit fetch; other platforms rely on the relevance LLM (their fetch text can be a truncated SERP snippet, so a hard drop there would false-positive).

geo_inheritance
enum<string>

How this tracker derives its geographic search context from the attached business.

Available options:
inherit,
global,
custom
geo_scope
enum<string>
Available options:
global,
country,
state,
city,
suburb
lead_detection_enabled
boolean

When true, mentions whose intent_score meets lead_intent_threshold are auto-promoted to the /leads kanban as Lead rows in stage=new. Default ON so every tracker contributes to the Leads inbox; users can opt out per-tracker in the wizard.

lead_intent_threshold
number

Minimum intent_score (0-1) from the sentiment LLM for a mention to become a Lead. Lower = more sensitive, higher = stricter.

lead_categories
string[]

Recommendation requests for any of these categories qualify. Falls back to BusinessLocation.business_category when empty.

lead_notify_max_post_age_days
number

Per-tracker override for how old a post may be and still fire a lead notification. Unset falls back to env LEAD_NOTIFY_MAX_POST_AGE_DAYS, then to 7. 0 or less disables the age gate for this tracker (notify at any age) — it never means 'block everything'. Only affects DELIVERY: leads are created at any age regardless. See lib/notificationChannels.js.