I’m sure @Osama’s method works, but setting user watches via the category seemed a bit weird to me. The following sets the watch list directly against the user (This is via python requests, but shows what is required).
DISCOURSE_URL - domain, including http(s)
username - user to change
DISCOURSE_API_KEY - api key generated by, and associated with a user
DISCOURSE_API_USERNAME - user who the key is associated with
watch_category - a list of categories the user should be watching
requests.request(‘PUT’, ‘{0}/u/{1}.json’.format(DISCOURSE_URL, username), allow_redirects=False, params={“api_key”:DISCOURSE_API_KEY, “api_username”: DISCOURSE_API_USERNAME}, json={‘watched_category_ids’: [watch_category]}, headers={‘Accept’: ‘application/json; charset=utf-8’})
@SwisherSweet if you end up opening a bug against the docs for missing info on how to modify the watch list/user prefs do post back here with it.