# Manage Tasks

Operations for managing Tweet Catcher monitoring tasks

## Get User Info

> Returns a snapshot of the authenticated account, including:\
> \
> \- \*\*\`expireAt\`\*\* — subscription expiration timestamp (ms), or \`null\` for lifetime accounts\
> \- \*\*\`tasksLimit\`\*\* — maximum number of concurrently running tasks allowed by the plan\
> \- \*\*\`globalMonitorTasksLimit\`\*\* — cap on running keyword-monitoring tasks specifically\
> \- \*\*\`tasks\`\*\* — full list of all tasks owned by the account (both running and stopped)\
> \
> Use this as a quick health-check or to seed a local task cache

```json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/info":{"get":{"tags":["Manage Tasks"],"summary":"Get User Info","description":"Returns a snapshot of the authenticated account, including:\n\n- **`expireAt`** — subscription expiration timestamp (ms), or `null` for lifetime accounts\n- **`tasksLimit`** — maximum number of concurrently running tasks allowed by the plan\n- **`globalMonitorTasksLimit`** — cap on running keyword-monitoring tasks specifically\n- **`tasks`** — full list of all tasks owned by the account (both running and stopped)\n\nUse this as a quick health-check or to seed a local task cache","operationId":"getUserInfo","responses":{"200":{"description":"Account snapshot returned successfully","content":{"application/json":{"schema":{"type":"object","properties":{"expireAt":{"type":"number","nullable":true,"description":"Account expiration date"},"tasksLimit":{"type":"number","description":"Maximum number of running tasks available"},"globalMonitorTasksLimit":{"type":"number","description":"Maximum number of running keyword monitoring tasks available"},"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Unique task identifier"},"module":{"type":"string","enum":["twitter","truth_social","twitter_keyword"],"default":"twitter","description":"Platform module to monitor"},"userId":{"type":"string","description":"Internal user identifier"},"user":{"type":"string","description":"Username to monitor (not applicable for keyword tasks)"},"keyword":{"type":"string","description":"Keyword to monitor (used by twitter_keyword module)"},"group":{"type":"string","description":"Task group for organization"},"options":{"type":"array","items":{"type":"string","enum":["posts","retweets","replies","deletion","following","unfollow","userUpdates","ocr"],"description":"Monitoring option"},"default":["posts"],"description":"Monitoring options"},"notification":{"type":"string","enum":["discord","telegram","webhook","websocket"],"default":"discord","description":"Notification method"},"differentWebhooks":{"type":"boolean","default":false,"description":"Whether to use different webhooks/chat IDs per monitoring option"},"webhook":{"type":"string","description":"Discord webhook URL or custom webhook URL"},"webhook-posts":{"type":"string","description":"Webhook for posts (if differentWebhooks is true)"},"webhook-following":{"type":"string","description":"Webhook for following updates (if differentWebhooks is true)"},"webhook-unfollow":{"type":"string","description":"Webhook for unfollow updates (if differentWebhooks is true)"},"webhook-userUpdates":{"type":"string","description":"Webhook for user updates (if differentWebhooks is true)"},"webhook-deletion":{"type":"string","description":"Webhook for deletion updates (if differentWebhooks is true)"},"chatId":{"type":"string","description":"Telegram chat ID"},"chatId-posts":{"type":"string","description":"Telegram chat ID for posts (if differentWebhooks is true)"},"chatId-following":{"type":"string","description":"Telegram chat ID for following updates (if differentWebhooks is true)"},"chatId-unfollow":{"type":"string","description":"Telegram chat ID for unfollow updates (if differentWebhooks is true)"},"chatId-userUpdates":{"type":"string","description":"Telegram chat ID for user updates (if differentWebhooks is true)"},"chatId-deletion":{"type":"string","description":"Telegram chat ID for deletion updates (if differentWebhooks is true)"},"pingKeywords":{"type":"object","properties":{"n":{"type":"array","items":{"type":"string"},"default":[],"description":"Negative keywords that suppress pings"},"p":{"type":"array","items":{"type":"string"},"default":[],"description":"Positive keywords that trigger pings"},"regex":{"type":"string","description":"Regex pattern used for ping matching"},"isRegex":{"type":"boolean","default":false,"description":"Whether regex matching is enabled"}},"description":"Keywords or regex configuration used for selective pinging"},"useRegex":{"type":"boolean","default":false,"description":"Whether to use regex for ping keywords"},"ping":{"type":"string","enum":["everyone","here","role","none"],"default":"none","description":"Discord ping option"},"roleId":{"type":"string","description":"Discord role ID to ping (required if ping is role)"},"note":{"type":"string","description":"Task note shown in notifications"},"quickLink":{"type":"string","description":"Custom quick link included in notifications"},"ignoreImages":{"type":"boolean","default":false,"description":"Whether to ignore images in notifications"},"ignoreVideos":{"type":"boolean","default":false,"description":"Whether to ignore videos in notifications"},"followingFilters":{"type":"object","properties":{"followingMinPosts":{"type":"number","nullable":true,"description":"Minimum posts count filter"},"followingMaxPosts":{"type":"number","nullable":true,"description":"Maximum posts count filter"},"followingMinFollowers":{"type":"number","nullable":true,"description":"Minimum followers count filter"},"followingMaxFollowers":{"type":"number","nullable":true,"description":"Maximum followers count filter"},"followingMinFollowing":{"type":"number","nullable":true,"description":"Minimum following count filter"},"followingMaxFollowing":{"type":"number","nullable":true,"description":"Maximum following count filter"}},"description":"Filters for following notifications (typically used with Discord and Telegram notifications)"},"userUpdatesOptions":{"type":"object","properties":{"disableUsernameUpdate":{"type":"boolean","default":false,"description":"Disable username change notifications"},"disableNameUpdate":{"type":"boolean","default":false,"description":"Disable display name change notifications"},"disableAvatarUpdate":{"type":"boolean","default":false,"description":"Disable avatar change notifications"},"disableBannerUpdate":{"type":"boolean","default":false,"description":"Disable banner change notifications"},"disableLocationUpdate":{"type":"boolean","default":false,"description":"Disable location change notifications"},"disableDescriptionUpdate":{"type":"boolean","default":false,"description":"Disable bio/description change notifications"},"disableWebsiteUpdate":{"type":"boolean","default":false,"description":"Disable website change notifications"},"disablePinnedTweetUpdate":{"type":"boolean","default":false,"description":"Disable pinned tweet change notifications"}},"description":"Options for user update notifications (typically used with Discord and Telegram notifications)"},"running":{"type":"boolean","nullable":true,"description":"Whether the task is currently running"}},"required":["id","running"]},"description":"List of current tasks"}},"required":["expireAt","tasksLimit","globalMonitorTasksLimit","tasks"]}}}},"400":{"description":"Request could not be parsed or the auth token is present but malformed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Unexpected server error"}}}}}}
```

## Get Tasks List

> Returns all tasks belonging to the authenticated account\
> \
> Pass the optional \*\*\`group\`\*\* query parameter to filter results to a specific group label\
> Omitting it returns every task regardless of group\
> \
> This endpoint is a lighter alternative to \`/info\` when you only need the task array

```json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/tasks-list":{"get":{"tags":["Manage Tasks"],"summary":"Get Tasks List","description":"Returns all tasks belonging to the authenticated account\n\nPass the optional **`group`** query parameter to filter results to a specific group label\nOmitting it returns every task regardless of group\n\nThis endpoint is a lighter alternative to `/info` when you only need the task array","operationId":"getTasksList","parameters":[{"schema":{"type":"string","description":"Filter tasks by group"},"required":false,"description":"Filter tasks by group","name":"group","in":"query"}],"responses":{"200":{"description":"Task list returned successfully","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Unique task identifier"},"module":{"type":"string","enum":["twitter","truth_social","twitter_keyword"],"default":"twitter","description":"Platform module to monitor"},"userId":{"type":"string","description":"Internal user identifier"},"user":{"type":"string","description":"Username to monitor (not applicable for keyword tasks)"},"keyword":{"type":"string","description":"Keyword to monitor (used by twitter_keyword module)"},"group":{"type":"string","description":"Task group for organization"},"options":{"type":"array","items":{"type":"string","enum":["posts","retweets","replies","deletion","following","unfollow","userUpdates","ocr"],"description":"Monitoring option"},"default":["posts"],"description":"Monitoring options"},"notification":{"type":"string","enum":["discord","telegram","webhook","websocket"],"default":"discord","description":"Notification method"},"differentWebhooks":{"type":"boolean","default":false,"description":"Whether to use different webhooks/chat IDs per monitoring option"},"webhook":{"type":"string","description":"Discord webhook URL or custom webhook URL"},"webhook-posts":{"type":"string","description":"Webhook for posts (if differentWebhooks is true)"},"webhook-following":{"type":"string","description":"Webhook for following updates (if differentWebhooks is true)"},"webhook-unfollow":{"type":"string","description":"Webhook for unfollow updates (if differentWebhooks is true)"},"webhook-userUpdates":{"type":"string","description":"Webhook for user updates (if differentWebhooks is true)"},"webhook-deletion":{"type":"string","description":"Webhook for deletion updates (if differentWebhooks is true)"},"chatId":{"type":"string","description":"Telegram chat ID"},"chatId-posts":{"type":"string","description":"Telegram chat ID for posts (if differentWebhooks is true)"},"chatId-following":{"type":"string","description":"Telegram chat ID for following updates (if differentWebhooks is true)"},"chatId-unfollow":{"type":"string","description":"Telegram chat ID for unfollow updates (if differentWebhooks is true)"},"chatId-userUpdates":{"type":"string","description":"Telegram chat ID for user updates (if differentWebhooks is true)"},"chatId-deletion":{"type":"string","description":"Telegram chat ID for deletion updates (if differentWebhooks is true)"},"pingKeywords":{"type":"object","properties":{"n":{"type":"array","items":{"type":"string"},"default":[],"description":"Negative keywords that suppress pings"},"p":{"type":"array","items":{"type":"string"},"default":[],"description":"Positive keywords that trigger pings"},"regex":{"type":"string","description":"Regex pattern used for ping matching"},"isRegex":{"type":"boolean","default":false,"description":"Whether regex matching is enabled"}},"description":"Keywords or regex configuration used for selective pinging"},"useRegex":{"type":"boolean","default":false,"description":"Whether to use regex for ping keywords"},"ping":{"type":"string","enum":["everyone","here","role","none"],"default":"none","description":"Discord ping option"},"roleId":{"type":"string","description":"Discord role ID to ping (required if ping is role)"},"note":{"type":"string","description":"Task note shown in notifications"},"quickLink":{"type":"string","description":"Custom quick link included in notifications"},"ignoreImages":{"type":"boolean","default":false,"description":"Whether to ignore images in notifications"},"ignoreVideos":{"type":"boolean","default":false,"description":"Whether to ignore videos in notifications"},"followingFilters":{"type":"object","properties":{"followingMinPosts":{"type":"number","nullable":true,"description":"Minimum posts count filter"},"followingMaxPosts":{"type":"number","nullable":true,"description":"Maximum posts count filter"},"followingMinFollowers":{"type":"number","nullable":true,"description":"Minimum followers count filter"},"followingMaxFollowers":{"type":"number","nullable":true,"description":"Maximum followers count filter"},"followingMinFollowing":{"type":"number","nullable":true,"description":"Minimum following count filter"},"followingMaxFollowing":{"type":"number","nullable":true,"description":"Maximum following count filter"}},"description":"Filters for following notifications (typically used with Discord and Telegram notifications)"},"userUpdatesOptions":{"type":"object","properties":{"disableUsernameUpdate":{"type":"boolean","default":false,"description":"Disable username change notifications"},"disableNameUpdate":{"type":"boolean","default":false,"description":"Disable display name change notifications"},"disableAvatarUpdate":{"type":"boolean","default":false,"description":"Disable avatar change notifications"},"disableBannerUpdate":{"type":"boolean","default":false,"description":"Disable banner change notifications"},"disableLocationUpdate":{"type":"boolean","default":false,"description":"Disable location change notifications"},"disableDescriptionUpdate":{"type":"boolean","default":false,"description":"Disable bio/description change notifications"},"disableWebsiteUpdate":{"type":"boolean","default":false,"description":"Disable website change notifications"},"disablePinnedTweetUpdate":{"type":"boolean","default":false,"description":"Disable pinned tweet change notifications"}},"description":"Options for user update notifications (typically used with Discord and Telegram notifications)"},"running":{"type":"boolean","nullable":true,"description":"Whether the task is currently running"}},"required":["id","running"]},"description":"List of current tasks"}}}},"400":{"description":"Invalid query parameters (e.g. unrecognised group format)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Unexpected server error"}}}}}}
```

## Add Task

> Creates a new monitoring task for the authenticated account\
> \
> Set \*\*\`start: true\`\*\* to activate the task immediately after creation\
> Omitting it (or passing \`false\`) leaves the task in a stopped state, you can start it later with \`/start-task\`\
> \
> The \`module\` field defaults to \`twitter\` when omitted\
> For keyword monitoring use \`module: "twitter\_keyword"\` and supply a \`keyword\` instead of a \`user\`

```json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/add-task":{"post":{"tags":["Manage Tasks"],"summary":"Add Task","description":"Creates a new monitoring task for the authenticated account\n\nSet **`start: true`** to activate the task immediately after creation\nOmitting it (or passing `false`) leaves the task in a stopped state, you can start it later with `/start-task`\n\nThe `module` field defaults to `twitter` when omitted\nFor keyword monitoring use `module: \"twitter_keyword\"` and supply a `keyword` instead of a `user`","operationId":"addTask","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"module":{"type":"string","enum":["twitter","truth_social","twitter_keyword"],"default":"twitter","description":"Platform module to monitor"},"user":{"type":"string","description":"Username to monitor (not applicable for keyword tasks)"},"keyword":{"type":"string","description":"Keyword to monitor (used by twitter_keyword module)"},"group":{"type":"string","description":"Task group for organization"},"options":{"type":"array","items":{"type":"string","enum":["posts","retweets","replies","deletion","following","unfollow","userUpdates","ocr"],"description":"Monitoring option"},"default":["posts"],"description":"Monitoring options"},"notification":{"type":"string","enum":["discord","telegram","webhook","websocket"],"default":"discord","description":"Notification method"},"differentWebhooks":{"type":"boolean","default":false,"description":"Whether to use different webhooks/chat IDs per monitoring option"},"webhook":{"type":"string","description":"Discord webhook URL or custom webhook URL"},"webhook-posts":{"type":"string","description":"Webhook for posts (if differentWebhooks is true)"},"webhook-following":{"type":"string","description":"Webhook for following updates (if differentWebhooks is true)"},"webhook-unfollow":{"type":"string","description":"Webhook for unfollow updates (if differentWebhooks is true)"},"webhook-userUpdates":{"type":"string","description":"Webhook for user updates (if differentWebhooks is true)"},"webhook-deletion":{"type":"string","description":"Webhook for deletion updates (if differentWebhooks is true)"},"chatId":{"type":"string","description":"Telegram chat ID"},"chatId-posts":{"type":"string","description":"Telegram chat ID for posts (if differentWebhooks is true)"},"chatId-following":{"type":"string","description":"Telegram chat ID for following updates (if differentWebhooks is true)"},"chatId-unfollow":{"type":"string","description":"Telegram chat ID for unfollow updates (if differentWebhooks is true)"},"chatId-userUpdates":{"type":"string","description":"Telegram chat ID for user updates (if differentWebhooks is true)"},"chatId-deletion":{"type":"string","description":"Telegram chat ID for deletion updates (if differentWebhooks is true)"},"pingKeywords":{"type":"object","properties":{"n":{"type":"array","items":{"type":"string"},"default":[],"description":"Negative keywords that suppress pings"},"p":{"type":"array","items":{"type":"string"},"default":[],"description":"Positive keywords that trigger pings"},"regex":{"type":"string","description":"Regex pattern used for ping matching"},"isRegex":{"type":"boolean","default":false,"description":"Whether regex matching is enabled"}},"description":"Keywords or regex configuration used for selective pinging"},"useRegex":{"type":"boolean","default":false,"description":"Whether to use regex for ping keywords"},"ping":{"type":"string","enum":["everyone","here","role","none"],"default":"none","description":"Discord ping option"},"roleId":{"type":"string","description":"Discord role ID to ping (required if ping is role)"},"note":{"type":"string","description":"Task note shown in notifications"},"quickLink":{"type":"string","description":"Custom quick link included in notifications"},"ignoreImages":{"type":"boolean","default":false,"description":"Whether to ignore images in notifications"},"ignoreVideos":{"type":"boolean","default":false,"description":"Whether to ignore videos in notifications"},"followingFilters":{"type":"object","properties":{"followingMinPosts":{"type":"number","nullable":true,"description":"Minimum posts count filter"},"followingMaxPosts":{"type":"number","nullable":true,"description":"Maximum posts count filter"},"followingMinFollowers":{"type":"number","nullable":true,"description":"Minimum followers count filter"},"followingMaxFollowers":{"type":"number","nullable":true,"description":"Maximum followers count filter"},"followingMinFollowing":{"type":"number","nullable":true,"description":"Minimum following count filter"},"followingMaxFollowing":{"type":"number","nullable":true,"description":"Maximum following count filter"}},"description":"Filters for following notifications (typically used with Discord and Telegram notifications)"},"userUpdatesOptions":{"type":"object","properties":{"disableUsernameUpdate":{"type":"boolean","default":false,"description":"Disable username change notifications"},"disableNameUpdate":{"type":"boolean","default":false,"description":"Disable display name change notifications"},"disableAvatarUpdate":{"type":"boolean","default":false,"description":"Disable avatar change notifications"},"disableBannerUpdate":{"type":"boolean","default":false,"description":"Disable banner change notifications"},"disableLocationUpdate":{"type":"boolean","default":false,"description":"Disable location change notifications"},"disableDescriptionUpdate":{"type":"boolean","default":false,"description":"Disable bio/description change notifications"},"disableWebsiteUpdate":{"type":"boolean","default":false,"description":"Disable website change notifications"},"disablePinnedTweetUpdate":{"type":"boolean","default":false,"description":"Disable pinned tweet change notifications"}},"description":"Options for user update notifications (typically used with Discord and Telegram notifications)"},"start":{"type":"boolean","description":"Whether to automatically start the task after creation"}}}}}},"responses":{"200":{"description":"Task created successfully, the response includes the new task ID","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"id":{"type":"number","description":"Created task ID"}},"required":["error","id"]}}}},"400":{"description":"Invalid or incomplete request body (e.g. missing `user`/`keyword`, unknown module, task limit reached)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Unexpected server error"}}}}}}
```

## Start Task

> Activates a previously created (or stopped) task by its ID\
> \
> Starting an already-running task is a no-op, it returns success without restarting it

```json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/start-task":{"post":{"tags":["Manage Tasks"],"summary":"Start Task","description":"Activates a previously created (or stopped) task by its ID\n\nStarting an already-running task is a no-op, it returns success without restarting it","operationId":"startTask","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"Task ID"}},"required":["id"],"description":"Task identifier payload"}}}},"responses":{"200":{"description":"Task started successfully","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"}},"required":["error"]}}}},"400":{"description":"Invalid request body or task not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Unexpected server error"}}}}}}
```

## Edit Task

> Updates the configuration of an existing task\
> \
> The task \*\*\`id\`\*\* is required, all other fields are optional and replace the current values when provided\
> The task does \*\*not\*\* need to be stopped before editing, changes are applied immediately

```json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/edit-task":{"post":{"tags":["Manage Tasks"],"summary":"Edit Task","description":"Updates the configuration of an existing task\n\nThe task **`id`** is required, all other fields are optional and replace the current values when provided\nThe task does **not** need to be stopped before editing, changes are applied immediately","operationId":"editTask","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","description":"Unique task identifier"},"module":{"type":"string","enum":["twitter","truth_social","twitter_keyword"],"default":"twitter","description":"Platform module to monitor"},"user":{"type":"string","description":"Username to monitor (not applicable for keyword tasks)"},"keyword":{"type":"string","description":"Keyword to monitor (used by twitter_keyword module)"},"group":{"type":"string","description":"Task group for organization"},"options":{"type":"array","items":{"type":"string","enum":["posts","retweets","replies","deletion","following","unfollow","userUpdates","ocr"],"description":"Monitoring option"},"default":["posts"],"description":"Monitoring options"},"notification":{"type":"string","enum":["discord","telegram","webhook","websocket"],"default":"discord","description":"Notification method"},"differentWebhooks":{"type":"boolean","default":false,"description":"Whether to use different webhooks/chat IDs per monitoring option"},"webhook":{"type":"string","description":"Discord webhook URL or custom webhook URL"},"webhook-posts":{"type":"string","description":"Webhook for posts (if differentWebhooks is true)"},"webhook-following":{"type":"string","description":"Webhook for following updates (if differentWebhooks is true)"},"webhook-unfollow":{"type":"string","description":"Webhook for unfollow updates (if differentWebhooks is true)"},"webhook-userUpdates":{"type":"string","description":"Webhook for user updates (if differentWebhooks is true)"},"webhook-deletion":{"type":"string","description":"Webhook for deletion updates (if differentWebhooks is true)"},"chatId":{"type":"string","description":"Telegram chat ID"},"chatId-posts":{"type":"string","description":"Telegram chat ID for posts (if differentWebhooks is true)"},"chatId-following":{"type":"string","description":"Telegram chat ID for following updates (if differentWebhooks is true)"},"chatId-unfollow":{"type":"string","description":"Telegram chat ID for unfollow updates (if differentWebhooks is true)"},"chatId-userUpdates":{"type":"string","description":"Telegram chat ID for user updates (if differentWebhooks is true)"},"chatId-deletion":{"type":"string","description":"Telegram chat ID for deletion updates (if differentWebhooks is true)"},"pingKeywords":{"type":"object","properties":{"n":{"type":"array","items":{"type":"string"},"default":[],"description":"Negative keywords that suppress pings"},"p":{"type":"array","items":{"type":"string"},"default":[],"description":"Positive keywords that trigger pings"},"regex":{"type":"string","description":"Regex pattern used for ping matching"},"isRegex":{"type":"boolean","default":false,"description":"Whether regex matching is enabled"}},"description":"Keywords or regex configuration used for selective pinging"},"useRegex":{"type":"boolean","default":false,"description":"Whether to use regex for ping keywords"},"ping":{"type":"string","enum":["everyone","here","role","none"],"default":"none","description":"Discord ping option"},"roleId":{"type":"string","description":"Discord role ID to ping (required if ping is role)"},"note":{"type":"string","description":"Task note shown in notifications"},"quickLink":{"type":"string","description":"Custom quick link included in notifications"},"ignoreImages":{"type":"boolean","default":false,"description":"Whether to ignore images in notifications"},"ignoreVideos":{"type":"boolean","default":false,"description":"Whether to ignore videos in notifications"},"followingFilters":{"type":"object","properties":{"followingMinPosts":{"type":"number","nullable":true,"description":"Minimum posts count filter"},"followingMaxPosts":{"type":"number","nullable":true,"description":"Maximum posts count filter"},"followingMinFollowers":{"type":"number","nullable":true,"description":"Minimum followers count filter"},"followingMaxFollowers":{"type":"number","nullable":true,"description":"Maximum followers count filter"},"followingMinFollowing":{"type":"number","nullable":true,"description":"Minimum following count filter"},"followingMaxFollowing":{"type":"number","nullable":true,"description":"Maximum following count filter"}},"description":"Filters for following notifications (typically used with Discord and Telegram notifications)"},"userUpdatesOptions":{"type":"object","properties":{"disableUsernameUpdate":{"type":"boolean","default":false,"description":"Disable username change notifications"},"disableNameUpdate":{"type":"boolean","default":false,"description":"Disable display name change notifications"},"disableAvatarUpdate":{"type":"boolean","default":false,"description":"Disable avatar change notifications"},"disableBannerUpdate":{"type":"boolean","default":false,"description":"Disable banner change notifications"},"disableLocationUpdate":{"type":"boolean","default":false,"description":"Disable location change notifications"},"disableDescriptionUpdate":{"type":"boolean","default":false,"description":"Disable bio/description change notifications"},"disableWebsiteUpdate":{"type":"boolean","default":false,"description":"Disable website change notifications"},"disablePinnedTweetUpdate":{"type":"boolean","default":false,"description":"Disable pinned tweet change notifications"}},"description":"Options for user update notifications (typically used with Discord and Telegram notifications)"},"_keys":{"type":"array","items":{"type":"string"}}},"required":["id","_keys"]}}}},"responses":{"200":{"description":"Task updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"}},"required":["error"]}}}},"400":{"description":"Invalid request body or task not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Unexpected server error"}}}}}}
```

## Stop Task

> Pauses a running task without deleting it\
> \
> The task retains all its configuration and can be restarted with \`/start-task\` at any time\
> Stopping an already-stopped task is a no-op, it returns success without side effects

```json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/stop-task":{"post":{"tags":["Manage Tasks"],"summary":"Stop Task","description":"Pauses a running task without deleting it\n\nThe task retains all its configuration and can be restarted with `/start-task` at any time\nStopping an already-stopped task is a no-op, it returns success without side effects","operationId":"stopTask","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"Task ID"}},"required":["id"],"description":"Task identifier payload"}}}},"responses":{"200":{"description":"Task stopped successfully","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"}},"required":["error"]}}}},"400":{"description":"Invalid request body or task not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Unexpected server error"}}}}}}
```

## Delete Task

> Permanently delete a task\
> \
> \> \*\*This action is irreversible\*\* If you only want to pause monitoring, use \`/stop-task\` instead\
> \
> The task is automatically stopped before deletion if it is currently running

```json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/delete-task":{"post":{"tags":["Manage Tasks"],"summary":"Delete Task","description":"Permanently delete a task\n\n> **This action is irreversible** If you only want to pause monitoring, use `/stop-task` instead\n\nThe task is automatically stopped before deletion if it is currently running","operationId":"deleteTask","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number","nullable":true,"description":"Task ID"}},"required":["id"],"description":"Task identifier payload"}}}},"responses":{"200":{"description":"Task deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"}},"required":["error"]}}}},"400":{"description":"Invalid request body or task not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Unexpected server error"}}}}}}
```

## Bulk Add Tasks

> Creates up to 200 tasks in a single request. Progress is streamed back via \*\*Server-Sent Events\*\* — one \`progress\` event per task, followed by \`done\` (or \`error\` on a fatal failure)

````json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/bulk-add-tasks":{"post":{"tags":["Manage Tasks"],"summary":"Bulk Add Tasks","description":"Creates up to 200 tasks in a single request. Progress is streamed back via **Server-Sent Events** — one `progress` event per task, followed by `done` (or `error` on a fatal failure)","operationId":"bulkAddTasks","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"module":{"type":"string","enum":["twitter","truth_social","twitter_keyword"],"default":"twitter","description":"Platform module to monitor"},"user":{"type":"string","description":"Username to monitor (not applicable for keyword tasks)"},"keyword":{"type":"string","description":"Keyword to monitor (used by twitter_keyword module)"},"group":{"type":"string","description":"Task group for organization"},"options":{"type":"array","items":{"type":"string","enum":["posts","retweets","replies","deletion","following","unfollow","userUpdates","ocr"],"description":"Monitoring option"},"default":["posts"],"description":"Monitoring options"},"notification":{"type":"string","enum":["discord","telegram","webhook","websocket"],"default":"discord","description":"Notification method"},"differentWebhooks":{"type":"boolean","default":false,"description":"Whether to use different webhooks/chat IDs per monitoring option"},"webhook":{"type":"string","description":"Discord webhook URL or custom webhook URL"},"webhook-posts":{"type":"string","description":"Webhook for posts (if differentWebhooks is true)"},"webhook-following":{"type":"string","description":"Webhook for following updates (if differentWebhooks is true)"},"webhook-unfollow":{"type":"string","description":"Webhook for unfollow updates (if differentWebhooks is true)"},"webhook-userUpdates":{"type":"string","description":"Webhook for user updates (if differentWebhooks is true)"},"webhook-deletion":{"type":"string","description":"Webhook for deletion updates (if differentWebhooks is true)"},"chatId":{"type":"string","description":"Telegram chat ID"},"chatId-posts":{"type":"string","description":"Telegram chat ID for posts (if differentWebhooks is true)"},"chatId-following":{"type":"string","description":"Telegram chat ID for following updates (if differentWebhooks is true)"},"chatId-unfollow":{"type":"string","description":"Telegram chat ID for unfollow updates (if differentWebhooks is true)"},"chatId-userUpdates":{"type":"string","description":"Telegram chat ID for user updates (if differentWebhooks is true)"},"chatId-deletion":{"type":"string","description":"Telegram chat ID for deletion updates (if differentWebhooks is true)"},"pingKeywords":{"type":"object","properties":{"n":{"type":"array","items":{"type":"string"},"default":[],"description":"Negative keywords that suppress pings"},"p":{"type":"array","items":{"type":"string"},"default":[],"description":"Positive keywords that trigger pings"},"regex":{"type":"string","description":"Regex pattern used for ping matching"},"isRegex":{"type":"boolean","default":false,"description":"Whether regex matching is enabled"}},"description":"Keywords or regex configuration used for selective pinging"},"useRegex":{"type":"boolean","default":false,"description":"Whether to use regex for ping keywords"},"ping":{"type":"string","enum":["everyone","here","role","none"],"default":"none","description":"Discord ping option"},"roleId":{"type":"string","description":"Discord role ID to ping (required if ping is role)"},"note":{"type":"string","description":"Task note shown in notifications"},"quickLink":{"type":"string","description":"Custom quick link included in notifications"},"ignoreImages":{"type":"boolean","default":false,"description":"Whether to ignore images in notifications"},"ignoreVideos":{"type":"boolean","default":false,"description":"Whether to ignore videos in notifications"},"followingFilters":{"type":"object","properties":{"followingMinPosts":{"type":"number","nullable":true,"description":"Minimum posts count filter"},"followingMaxPosts":{"type":"number","nullable":true,"description":"Maximum posts count filter"},"followingMinFollowers":{"type":"number","nullable":true,"description":"Minimum followers count filter"},"followingMaxFollowers":{"type":"number","nullable":true,"description":"Maximum followers count filter"},"followingMinFollowing":{"type":"number","nullable":true,"description":"Minimum following count filter"},"followingMaxFollowing":{"type":"number","nullable":true,"description":"Maximum following count filter"}},"description":"Filters for following notifications (typically used with Discord and Telegram notifications)"},"userUpdatesOptions":{"type":"object","properties":{"disableUsernameUpdate":{"type":"boolean","default":false,"description":"Disable username change notifications"},"disableNameUpdate":{"type":"boolean","default":false,"description":"Disable display name change notifications"},"disableAvatarUpdate":{"type":"boolean","default":false,"description":"Disable avatar change notifications"},"disableBannerUpdate":{"type":"boolean","default":false,"description":"Disable banner change notifications"},"disableLocationUpdate":{"type":"boolean","default":false,"description":"Disable location change notifications"},"disableDescriptionUpdate":{"type":"boolean","default":false,"description":"Disable bio/description change notifications"},"disableWebsiteUpdate":{"type":"boolean","default":false,"description":"Disable website change notifications"},"disablePinnedTweetUpdate":{"type":"boolean","default":false,"description":"Disable pinned tweet change notifications"}},"description":"Options for user update notifications (typically used with Discord and Telegram notifications)"},"start":{"type":"boolean","description":"Whether to automatically start the task after creation"}}},"minItems":1,"maxItems":200}}}},"responses":{"200":{"description":"SSE stream — tasks are processed sequentially; each result is emitted as a `progress` event","content":{"text/event-stream":{"schema":{"type":"string","description":"A **Server-Sent Events (SSE)** stream (`Content-Type: text/event-stream`).\n\nThe connection stays open while tasks are processed. Three named event types are sent:\n\n| Event      | When                             | Data shape                 |\n|------------|----------------------------------|----------------------------|\n| `progress` | After each task is processed     | `{ index, total, result }` |\n| `done`     | All tasks finished successfully  | `{ total }`                |\n| `error`    | Fatal error aborts the operation | `{ error: true, message }` |\n\nExample stream:\n```\nevent: progress\ndata: {\"index\":0,\"total\":3,\"result\":{\"error\":false,\"id\":932}}\n\nevent: progress\ndata: {\"index\":1,\"total\":3,\"result\":{\"error\":true,\"message\":\"Task limit reached\"}}\n\nevent: done\ndata: {\"total\":3}\n```"}}}},"400":{"description":"Invalid request parameters (stream never opened)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Authentication failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Server error"}}}}}}
````

## Bulk Start Tasks

> Starts up to 200 tasks by ID. Progress is streamed back via \*\*Server-Sent Events\*\* — one \`progress\` event per task, followed by \`done\` (or \`error\` on a fatal failure)

````json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/bulk-start-tasks":{"post":{"tags":["Manage Tasks"],"summary":"Bulk Start Tasks","description":"Starts up to 200 tasks by ID. Progress is streamed back via **Server-Sent Events** — one `progress` event per task, followed by `done` (or `error` on a fatal failure)","operationId":"bulkStartTasks","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"number","nullable":true},"minItems":1,"maxItems":200,"description":"Array of task IDs"}}}},"responses":{"200":{"description":"SSE stream — tasks are started sequentially; each result is emitted as a `progress` event","content":{"text/event-stream":{"schema":{"type":"string","description":"A **Server-Sent Events (SSE)** stream (`Content-Type: text/event-stream`).\n\nThe connection stays open while tasks are processed. Three named event types are sent:\n\n| Event      | When                             | Data shape                 |\n|------------|----------------------------------|----------------------------|\n| `progress` | After each task is processed     | `{ index, total, result }` |\n| `done`     | All tasks finished successfully  | `{ total }`                |\n| `error`    | Fatal error aborts the operation | `{ error: true, message }` |\n\nExample stream:\n```\nevent: progress\ndata: {\"index\":0,\"total\":3,\"result\":{\"error\":false,\"id\":932}}\n\nevent: progress\ndata: {\"index\":1,\"total\":3,\"result\":{\"error\":true,\"message\":\"Task limit reached\"}}\n\nevent: done\ndata: {\"total\":3}\n```"}}}},"400":{"description":"Invalid request parameters (stream never opened)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Authentication failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Server error"}}}}}}
````

## Bulk Edit Tasks

> Edits up to 200 tasks in a single request. Progress is streamed back via \*\*Server-Sent Events\*\* — one \`progress\` event per task, followed by \`done\` (or \`error\` on a fatal failure)

````json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/bulk-edit-tasks":{"post":{"tags":["Manage Tasks"],"summary":"Bulk Edit Tasks","description":"Edits up to 200 tasks in a single request. Progress is streamed back via **Server-Sent Events** — one `progress` event per task, followed by `done` (or `error` on a fatal failure)","operationId":"bulkEditTasks","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Unique task identifier"},"module":{"type":"string","enum":["twitter","truth_social","twitter_keyword"],"default":"twitter","description":"Platform module to monitor"},"user":{"type":"string","description":"Username to monitor (not applicable for keyword tasks)"},"keyword":{"type":"string","description":"Keyword to monitor (used by twitter_keyword module)"},"group":{"type":"string","description":"Task group for organization"},"options":{"type":"array","items":{"type":"string","enum":["posts","retweets","replies","deletion","following","unfollow","userUpdates","ocr"],"description":"Monitoring option"},"default":["posts"],"description":"Monitoring options"},"notification":{"type":"string","enum":["discord","telegram","webhook","websocket"],"default":"discord","description":"Notification method"},"differentWebhooks":{"type":"boolean","default":false,"description":"Whether to use different webhooks/chat IDs per monitoring option"},"webhook":{"type":"string","description":"Discord webhook URL or custom webhook URL"},"webhook-posts":{"type":"string","description":"Webhook for posts (if differentWebhooks is true)"},"webhook-following":{"type":"string","description":"Webhook for following updates (if differentWebhooks is true)"},"webhook-unfollow":{"type":"string","description":"Webhook for unfollow updates (if differentWebhooks is true)"},"webhook-userUpdates":{"type":"string","description":"Webhook for user updates (if differentWebhooks is true)"},"webhook-deletion":{"type":"string","description":"Webhook for deletion updates (if differentWebhooks is true)"},"chatId":{"type":"string","description":"Telegram chat ID"},"chatId-posts":{"type":"string","description":"Telegram chat ID for posts (if differentWebhooks is true)"},"chatId-following":{"type":"string","description":"Telegram chat ID for following updates (if differentWebhooks is true)"},"chatId-unfollow":{"type":"string","description":"Telegram chat ID for unfollow updates (if differentWebhooks is true)"},"chatId-userUpdates":{"type":"string","description":"Telegram chat ID for user updates (if differentWebhooks is true)"},"chatId-deletion":{"type":"string","description":"Telegram chat ID for deletion updates (if differentWebhooks is true)"},"pingKeywords":{"type":"object","properties":{"n":{"type":"array","items":{"type":"string"},"default":[],"description":"Negative keywords that suppress pings"},"p":{"type":"array","items":{"type":"string"},"default":[],"description":"Positive keywords that trigger pings"},"regex":{"type":"string","description":"Regex pattern used for ping matching"},"isRegex":{"type":"boolean","default":false,"description":"Whether regex matching is enabled"}},"description":"Keywords or regex configuration used for selective pinging"},"useRegex":{"type":"boolean","default":false,"description":"Whether to use regex for ping keywords"},"ping":{"type":"string","enum":["everyone","here","role","none"],"default":"none","description":"Discord ping option"},"roleId":{"type":"string","description":"Discord role ID to ping (required if ping is role)"},"note":{"type":"string","description":"Task note shown in notifications"},"quickLink":{"type":"string","description":"Custom quick link included in notifications"},"ignoreImages":{"type":"boolean","default":false,"description":"Whether to ignore images in notifications"},"ignoreVideos":{"type":"boolean","default":false,"description":"Whether to ignore videos in notifications"},"followingFilters":{"type":"object","properties":{"followingMinPosts":{"type":"number","nullable":true,"description":"Minimum posts count filter"},"followingMaxPosts":{"type":"number","nullable":true,"description":"Maximum posts count filter"},"followingMinFollowers":{"type":"number","nullable":true,"description":"Minimum followers count filter"},"followingMaxFollowers":{"type":"number","nullable":true,"description":"Maximum followers count filter"},"followingMinFollowing":{"type":"number","nullable":true,"description":"Minimum following count filter"},"followingMaxFollowing":{"type":"number","nullable":true,"description":"Maximum following count filter"}},"description":"Filters for following notifications (typically used with Discord and Telegram notifications)"},"userUpdatesOptions":{"type":"object","properties":{"disableUsernameUpdate":{"type":"boolean","default":false,"description":"Disable username change notifications"},"disableNameUpdate":{"type":"boolean","default":false,"description":"Disable display name change notifications"},"disableAvatarUpdate":{"type":"boolean","default":false,"description":"Disable avatar change notifications"},"disableBannerUpdate":{"type":"boolean","default":false,"description":"Disable banner change notifications"},"disableLocationUpdate":{"type":"boolean","default":false,"description":"Disable location change notifications"},"disableDescriptionUpdate":{"type":"boolean","default":false,"description":"Disable bio/description change notifications"},"disableWebsiteUpdate":{"type":"boolean","default":false,"description":"Disable website change notifications"},"disablePinnedTweetUpdate":{"type":"boolean","default":false,"description":"Disable pinned tweet change notifications"}},"description":"Options for user update notifications (typically used with Discord and Telegram notifications)"},"_keys":{"type":"array","items":{"type":"string"}}},"required":["id","_keys"]},"minItems":1,"maxItems":200}}}},"responses":{"200":{"description":"SSE stream — tasks are edited sequentially; each result is emitted as a `progress` event","content":{"text/event-stream":{"schema":{"type":"string","description":"A **Server-Sent Events (SSE)** stream (`Content-Type: text/event-stream`).\n\nThe connection stays open while tasks are processed. Three named event types are sent:\n\n| Event      | When                             | Data shape                 |\n|------------|----------------------------------|----------------------------|\n| `progress` | After each task is processed     | `{ index, total, result }` |\n| `done`     | All tasks finished successfully  | `{ total }`                |\n| `error`    | Fatal error aborts the operation | `{ error: true, message }` |\n\nExample stream:\n```\nevent: progress\ndata: {\"index\":0,\"total\":3,\"result\":{\"error\":false,\"id\":932}}\n\nevent: progress\ndata: {\"index\":1,\"total\":3,\"result\":{\"error\":true,\"message\":\"Task limit reached\"}}\n\nevent: done\ndata: {\"total\":3}\n```"}}}},"400":{"description":"Invalid request parameters (stream never opened)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Authentication failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Server error"}}}}}}
````

## Bulk Stop Tasks

> Stops up to 200 tasks by ID. Progress is streamed back via \*\*Server-Sent Events\*\* — one \`progress\` event per task, followed by \`done\` (or \`error\` on a fatal failure)

````json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/bulk-stop-tasks":{"post":{"tags":["Manage Tasks"],"summary":"Bulk Stop Tasks","description":"Stops up to 200 tasks by ID. Progress is streamed back via **Server-Sent Events** — one `progress` event per task, followed by `done` (or `error` on a fatal failure)","operationId":"bulkStopTasks","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"number","nullable":true},"minItems":1,"maxItems":200,"description":"Array of task IDs"}}}},"responses":{"200":{"description":"SSE stream — tasks are stopped sequentially; each result is emitted as a `progress` event","content":{"text/event-stream":{"schema":{"type":"string","description":"A **Server-Sent Events (SSE)** stream (`Content-Type: text/event-stream`).\n\nThe connection stays open while tasks are processed. Three named event types are sent:\n\n| Event      | When                             | Data shape                 |\n|------------|----------------------------------|----------------------------|\n| `progress` | After each task is processed     | `{ index, total, result }` |\n| `done`     | All tasks finished successfully  | `{ total }`                |\n| `error`    | Fatal error aborts the operation | `{ error: true, message }` |\n\nExample stream:\n```\nevent: progress\ndata: {\"index\":0,\"total\":3,\"result\":{\"error\":false,\"id\":932}}\n\nevent: progress\ndata: {\"index\":1,\"total\":3,\"result\":{\"error\":true,\"message\":\"Task limit reached\"}}\n\nevent: done\ndata: {\"total\":3}\n```"}}}},"400":{"description":"Invalid request parameters (stream never opened)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Authentication failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Server error"}}}}}}
````

## Bulk Delete Tasks

> Deletes up to 200 tasks by ID. Progress is streamed back via \*\*Server-Sent Events\*\* — one \`progress\` event per task, followed by \`done\` (or \`error\` on a fatal failure)

````json
{"openapi":"3.0.3","info":{"title":"Tweet Catcher Monitor API","version":"1.0.0"},"tags":[{"name":"Manage Tasks","description":"Operations for managing Tweet Catcher monitoring tasks"}],"servers":[{"url":"https://monitor-api.tweet-catcher.com/pro","description":"Production server"}],"security":[{"ApiKeyToken":[]}],"components":{"securitySchemes":{"ApiKeyToken":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey","description":"Api key for application authentication"}}},"paths":{"/bulk-delete-tasks":{"post":{"tags":["Manage Tasks"],"summary":"Bulk Delete Tasks","description":"Deletes up to 200 tasks by ID. Progress is streamed back via **Server-Sent Events** — one `progress` event per task, followed by `done` (or `error` on a fatal failure)","operationId":"bulkDeleteTasks","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"number","nullable":true},"minItems":1,"maxItems":200,"description":"Array of task IDs"}}}},"responses":{"200":{"description":"SSE stream — tasks are deleted sequentially; each result is emitted as a `progress` event","content":{"text/event-stream":{"schema":{"type":"string","description":"A **Server-Sent Events (SSE)** stream (`Content-Type: text/event-stream`).\n\nThe connection stays open while tasks are processed. Three named event types are sent:\n\n| Event      | When                             | Data shape                 |\n|------------|----------------------------------|----------------------------|\n| `progress` | After each task is processed     | `{ index, total, result }` |\n| `done`     | All tasks finished successfully  | `{ total }`                |\n| `error`    | Fatal error aborts the operation | `{ error: true, message }` |\n\nExample stream:\n```\nevent: progress\ndata: {\"index\":0,\"total\":3,\"result\":{\"error\":false,\"id\":932}}\n\nevent: progress\ndata: {\"index\":1,\"total\":3,\"result\":{\"error\":true,\"message\":\"Task limit reached\"}}\n\nevent: done\ndata: {\"total\":3}\n```"}}}},"400":{"description":"Invalid request parameters (stream never opened)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"The errors"}},"required":["error","message"]}}}},"401":{"description":"Authentication failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"boolean","description":"Whether an error occurred"},"message":{"type":"string","description":"The error message"}},"required":["error","message"]}}}},"500":{"description":"Server error"}}}}}}
````


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tweet-catcher.gitbook.io/tweet-catcher/tweet-catcher-guide/tweet-catcher-monitor/pro-plan/api/manage-tasks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
