Skip to main content
GET
Get one brand tracker

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.

Path Parameters

id
string
required

The brand tracker id.

Response

The brand tracker.

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.