# botsmith X KOL Watchlist Monitor

> botsmith X KOL Watchlist Monitor is a paid API for AI agents from x402.botsmith.dev, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-10).

Polls up to 15 X (Twitter) accounts for new posts since a given ID, filtered by engagement floor and spam type, returning deduplicated results with a cursor for incremental polling.

## Facts

- Endpoint: GET https://x402.botsmith.dev/x/watchlist?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/botsmith-x-kol-watchlist-monitor-67b6261d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_sJWR9HO5FDq-RnsjgnF8L

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability botsmith-x-kol-watchlist-monitor-67b6261d
```

Example prompt: Watch these 15 crypto influencers on X — @elonmusk, @VitalikButerin, @cz_binance, @SBF_FTX, @aantonop, @balajis, @naval, @APompliano, @RaoulGMI, @CathieDWood, @novogratz, @woonomic, @PeterSchiff, @NickSzabo4, @TuurDemeester — only show me English posts with at least 50 likes, filter out spam, and start from post ID 1800000000000000000 so I only get what's new since my last check.

## When to prefer this

Choose this endpoint when you need to monitor multiple X accounts (up to 15) in a single call with built-in spam filtering, engagement thresholds, and incremental cursor support — eliminating the need to build your own search, deduplication, retweet filtering, and paging logic. Prefer it over raw X API or search endpoints when you want a zero-setup KOL monitoring loop that requires no X account or API key, and when crypto spam filtering is important. Use the sibling X Tweet Search endpoint instead if you need arbitrary advanced-search query syntax beyond a fixed handle list.

## Known failure modes

- Invalid handles format returns validation error — handles must be comma-separated, 1-15 accounts, valid X handle format
- sinceId not numeric or out of range returns schema validation error
- Language code not a valid two-letter ISO code returns error
- minFaves out of range (above 100000) returns validation error
- All posts filtered out by spam or engagement floor returns empty posts array with valid newestId
- X/Twitter upstream unavailability causes fetch failure
- Payment not completed results in 402 response before data is returned

## How this service works

X KOL Watchlist Monitor ($0.05/call): Watch up to 15 X (Twitter) accounts with one call: every new post from the list since your last poll, above your engagement floor, with retweets and crypto-spam (airdrop/giveaway/presale bait) filtered out and duplicates removed. Pass the returned newestId back as sinceId to get only what is new - replaces the search + filter + dedupe + paging loop KOL-monitoring agents build by hand. No X account or API key needed.

## Output

Returns a JSON object containing: an array of posts (each with id, url, text, createdAt, lang, author object with handle/name/id, engagement metrics, hashtags, outbound links, and mentions), a newestId string to use as sinceId on the next poll, a complete flag indicating whether all results were returned, the query parameters used, and a polledAt timestamp.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "handles",
      "minFaves",
      "lang",
      "filter"
     ],
     "properties": {
      "lang": {
       "type": "string",
       "default": "en",
       "pattern": "^[a-z]{2}$",
       "description": "Restrict to posts in this language"
      },
      "filter": {
       "enum": [
        "spam",
        "none"
       ],
       "type": "string",
       "default": "spam",
       "description": "\"spam\" excludes airdrop/giveaway/presale bait; \"none\" returns everything"
      },
      "handles": {
       "type": "string",
       "pattern": "^@?[A-Za-z0-9_]{1,15}(,\\s?@?[A-Za-z0-9_]{1,15}){0,14}$",
       "description": "Comma-separated list of up to 15 X handles to monitor, with or without leading @"
      },
      "sinceId": {
       "type": "string",
       "pattern": "^[0-9]{1,25}$",
       "description": "Only return posts newer than this id; pass the newestId from your last poll"
      },
      "minFaves": {
       "type": "integer",
       "default": 5,
       "maximum": 100000,
       "minimum": 0,
       "description": "Minimum likes a post needs to be included (engagement floor)"
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "posts",
      "newestId",
      "complete",
      "query",
      "polledAt"
     ],
     "properties": {
      "posts": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "id",
         "url",
         "text",
         "createdAt",
         "lang",
         "author",
         "metrics",
         "hashtags",
         "links",
         "mentions"
        ],
        "properties": {
         "id": {
          "type": "string"
         },
         "url": {
          "anyOf": [
           {
            "type": "string"
           },
           {
            "type": "null"
           }
          ]
 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "posts": [
   {
    "id": "1846987139428634858",
    "url": "https://x.com/example/status/1846987139428634858",
    "lang": "en",
    "text": "Shipping the new agent payments stack today. HTTP 402 is finally real.",
    "links": [
     "https://x402.org"
    ],
    "author": {
     "id": "44196397",
     "name": "Example Dev",
     "handle": "example"
    },
    "metrics": {
     "likes": 1200,
     "views": 250000,
     "quotes": 12,
     "replies": 85,
     "retweets": 340
    },
    "hashtags": [
     "x402"
    ],
    "mentions": [
     "coinbase"
    ],
    "createdAt": "2026-07-01T07:00:30.000Z"
   }
  ],
  "query": "(from:aeyakovenko OR from:0xMert_ OR from:blknoiz06) min_faves:5 lang:en -filter:retweets -airdrop -giveaway -presale -\"drop your\" -\"gm family\" -winner",
  "complete": true,
  "newestId": "1846987139428634858",
  "polledAt": "2026-07-01T07:05:00.000Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/botsmith-x-kol-watchlist-monitor-67b6261d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.botsmith.dev](https://www.zero.xyz/host/x402.botsmith.dev/llms.txt)
