Tune a running campaign
update_campaignAdjust a live campaign without recreating it. Free — nothing here spends credits, though the next generate_posts run bills as usual. Keywords MERGE (add_keywords never drops what is already there). sources is how research findings get applied: high-intent phrases, influencer accounts and lists that run_research found stay dormant until you enable their source. relevance_threshold moves the bar the relevance gate keeps posts above (new campaigns start lenient at 5; raise it when discovery is noisy). is_active:false pauses discovery so nothing more is found or billed. visibility decides who posts the drafts — flipping to 'public' also releases the already-discovered drafts to the community, so only do it when the user has said yes. target_subreddits / target_youtube_channels re-aim discovery within its platform (send an empty array to clear and search the whole platform). platform itself can only change while the campaign has discovered nothing — after that it is fixed, and a second campaign is the answer. Changes apply to the NEXT generate_posts run; existing posts are not re-scored.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Required (true) when setting visibility to public — confirms the user agreed to community distribution and per-posted-reply billing. Without it the API returns confirmation_required. | |
| sources | No | Which discovery sources run. 'keywords' is always included. Enable 'phrases'/'influencers'/'lists'/'competitors' to actually USE what run_research found — they do nothing until enabled. | |
| platform | No | Which network discovery works. Only changeable while the campaign has discovered nothing — otherwise it returns platform_locked, because switching would mix two platforms' posts and proof rules in one campaign. | |
| is_active | No | false pauses discovery, true resumes it | |
| visibility | No | Who posts the drafted replies. private = the user posts them from the workbench; public = the community earn feed distributes them and members post them, billing the user per posted reply. Flipping to public REQUIRES confirm: true — ask the user first, then pass it. | |
| campaign_id | Yes | ||
| add_keywords | No | Keywords to add — merged with the existing list, duplicates ignored | |
| remove_keywords | No | Keywords to drop (at least one must remain) | |
| monitor_accounts | No | Specific handles the influencers source should watch; enables that source automatically | |
| target_subreddits | No | Reddit only, enforced server-side — sending it on a non-Reddit campaign is REJECTED, not ignored. REPLACES the list rather than appending; [] clears it and searches all of Reddit. To add one, read the current list with get_campaign first and send the full merged list. | |
| relevance_threshold | No | Keep only posts scoring at or above this on semantic relevance (new campaigns start at 5) | |
| target_youtube_channels | No | YouTube only, enforced server-side — sending it on a non-YouTube campaign is REJECTED, not ignored. REPLACES the list rather than appending; [] clears it and runs keyword search alone. To add one, read the current list with get_campaign first and send the full merged list. |