prompt to have OutX regenerate the entire keyword set in the background (Prompt mode at the bottom of this page).
Request Body (patch mode)
Watchlist ID to update.
New watchlist name.
New fetch frequency. Allowed values:
1, 3, 6, 12, 24, 48, 72.Patch the tracked keywords on the watchlist. Accepts the same shape as the Create endpoint, simple strings or advanced keyword objects with Advanced format:By default this replaces the set: the watchlist’s existing keywords and associated
required_keywords, excluded_keywords (NOT), and include_all_required (AND vs OR over the required keywords).Simple format:keyword_tracking tasks are deleted and recreated from the new list (set append: true to add instead). Newly created keywords backfill recent matching posts from the existing pool in the background. Updating keywords does not change existing labels. Omit the field to leave keywords untouched.When
true, the supplied keywords are added to the existing set instead of replacing it. Existing keyword tracking rows and tasks are kept, and only keywords whose primary keyword is not already on the list (case-insensitive) are created. Labels are left untouched unless labels is also provided.Replace the custom labels on the watchlist. Same shape as Create.Labels are only changed when this field is sent. Updating
keywords alone leaves your existing labels untouched, so a keyword edit will never wipe a hand-built label set. Omit labels to leave them as they are.Set to
true to pause tracking, false to resume.Update or clear the Slack webhook URL for this watchlist. Pass
null to clear.Semantics
- Keyword replacement is wipe-and-recreate (default). Existing
keyword_trackingrows and theirkeyword_trackingtasks are deleted, then new ones are created from the payload. Posts already collected are not deleted, they remain attached to the watchlist and visible via the Posts API. - Append mode keeps what you have. With
append: true, existing keywords and tasks are kept and only the new, not-yet-present primary keywords are added. - New keywords backfill the existing pool. Whether replacing or appending, each newly created keyword backfills recent matching posts from OutX’s existing pool in the background, so it does not have to wait for the next live fetch to show results.
- Labels are preserved unless you send
labels. Updatingkeywordsalone never overwrites existing labels. To change labels, pass alabelsarray. - Only
keyword_trackingtasks are touched. Any other task types on the same watchlist are left alone. - Partial updates are safe. Sending only
{ "id": "...", "name": "new name" }changes just the name; keywords, labels, and tasks are untouched.
Response Fields
Watchlist ID that was updated.
Updated watchlist name (only present when
name was in the request).Updated fetch frequency (only present when
fetchFreqInHours was in the request).Current active/disabled status (only present when
disable was in the request).Array of primary keywords after the update (only present when
keywords was in the request).Per-keyword creation result (only present when
keywords was in the request). Each entry has success, keyword, and either keyword_id or error.Labels persisted on the watchlist (only present when
labels or keywords was in the request).Whether the update was successful.
Success message.
Error Responses
| Status Code | Error Message | Description |
|---|---|---|
| 400 | Missing required parameter: id | Watchlist ID is required |
| 400 | No valid update fields provided | Body didn’t include any updatable fields |
| 400 | keywords array is required and must not be empty | keywords was passed but empty or not an array |
| 400 | No valid keywords provided after cleaning | All keywords were empty strings after normalization |
| 400 | Invalid fetchFreqInHours. Allowed values: 1, 3, 6, 12, 24, 48, 72 (hours) | Unsupported fetch frequency |
| 400 | disable must be a boolean value | disable sent as a non-boolean |
| 400 | Name cannot be empty | name was an empty or whitespace-only string |
| 401 | Missing API Key / Invalid API Key | Missing or invalid x-api-key header |
| 404 | Watchlist not found or access denied | Watchlist doesn’t exist, isn’t a keyword list, or isn’t yours |
Prompt mode
Replace the prompt on an existing watchlist. OutX wipes the existing keywords and labels and regenerates them from the new prompt in the background. Use this when you want to redirect a watchlist to a different angle without recreating it.Request Body
Watchlist ID to update.
New natural-language prompt. OutX will regenerate keywords and labels from this, replacing the current set.
keywords patch: existing keyword_tracking rows and pending tasks are deleted, but historical posts remain attached to the watchlist.
Frequently Asked Questions
What properties can I update on a keyword watchlist?
What properties can I update on a keyword watchlist?
You can update
name, fetchFreqInHours, keywords, labels, disable, and slack_webhook_url, any combination. Every field except id is optional; unspecified fields are left unchanged.What happens to my existing keywords when I update them?
What happens to my existing keywords when I update them?
When you pass a
keywords array, the API deletes the watchlist’s existing keyword_tracking rows and their associated keyword_tracking tasks, then creates new ones from your payload. The watchlist ID stays the same, and previously collected posts remain accessible via the Posts API.Does updating a watchlist reset existing collected data?
Does updating a watchlist reset existing collected data?
No. Changing the name, fetch frequency, keywords, or labels does not delete posts that have already been collected. If you update
fetchFreqInHours, the new interval takes effect from the next scheduled fetch cycle.Can I update labels without changing keywords?
Can I update labels without changing keywords?
Yes. Send only
id and labels. The existing keywords and their tasks are untouched.Do new or changed labels apply to posts I already collected?
Do new or changed labels apply to posts I already collected?
No. Each post is classified into a label once, when it is first enriched. Updating or adding
labels changes how future posts are classified but does not re-label posts that were already collected, they keep the tags they had. To re-classify recent posts against the new labels, those posts must be explicitly re-enriched (OutX re-runs classification over roughly the last 30 days). See How intent labels are calculated.What if I only want to add or remove a single keyword?
What if I only want to add or remove a single keyword?
To add keywords without disturbing the rest, send just the new keywords with
append: true, only the ones not already on the list (case-insensitive) are created. To remove a keyword, fetch the current set with GET /api-keyword-watchlist?id=…, then send the full desired list back without append (default replace).
