User Guide

Synapse-Twitter User Guide

Synapse-Twitter adds new Storm commands to allow you to query the Twitter v2 API using your existing API Bearer token. In certain specific cases the v1.1 API is used until Twitter ports the functionality over to their v2 API.

Getting Started

Check with your Admin to enable permissions and find out if you need a personal Bearer Token or personal OAuth keys.

Examples

Setting your personal API key

To set-up a personal use Bearer Token:

> twitter.setup.apikey --self myapikey
Setting Synapse-Twitter API key for the current user.

Fetching User Profiles

Fetch a user profile from twitter:

> inet:service:account:user=invisig0th +:platform::name=x | twitter.user.profile
inet:service:account=733940dfd57f81c890d48e813692afd0
        .created = 2025/12/04 01:17:29.820
        .seen = ('2009/04/12 21:22:36.000', '2009/04/12 21:22:36.001')
        :id = 30724377
        :period = ('2009/04/12 21:22:36.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 733940dfd57f81c890d48e813692afd0
        :user = invisig0th

Fetch a user profile without first creating a new node:

> twitter.user.profile --user vpEpiphyte --yield
inet:service:account=05902ea9c32843c63fd6e8bd9acb20ae
        .created = 2025/12/04 01:17:29.946
        .seen = ('2017/08/19 14:04:50.000', '2017/08/19 14:04:50.001')
        :id = 898908618011152385
        :period = ('2017/08/19 14:04:50.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 05902ea9c32843c63fd6e8bd9acb20ae
        :user = vpepiphyte

Fetching Followers and Followings

Fetch an existing user’s followers:

> inet:service:account:user=invisig0th +:platform::name=x | twitter.user.followers --size 3 --yield
inet:service:relationship=10b5e4b28dede3a5be0061e6b58701ee
        .created = 2025/12/04 01:17:30.048
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '612cd65f010c40c9ae3a63c865302944')
        :target = ('inet:service:account', '733940dfd57f81c890d48e813692afd0')
        :type = follows
inet:service:relationship=250a928b23a71f2fcc87fe2a502b1712
        .created = 2025/12/04 01:17:30.083
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '74de79ad9b3cc21f36bdf21b8f693f1e')
        :target = ('inet:service:account', '733940dfd57f81c890d48e813692afd0')
        :type = follows
inet:service:relationship=3d915a6423f7b74d97b2d5c21bd3e2a7
        .created = 2025/12/04 01:17:30.120
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '40c801a33672a80abf033f3e64b99af8')
        :target = ('inet:service:account', '733940dfd57f81c890d48e813692afd0')
        :type = follows

Add a new user and their followers:

> twitter.user.followers --user vtx_savage --size 5 --yield
inet:service:relationship=02ddf149b551c6d57f4e9910d6a41465
        .created = 2025/12/04 01:17:30.239
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '682b10e2fda63debb24708179346c4b2')
        :target = ('inet:service:account', '5475157dfe40f124ce89d2ea255afae7')
        :type = follows
inet:service:relationship=a91c371087e3d0cc0e6ac8356476fdd7
        .created = 2025/12/04 01:17:30.274
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', 'dd956dbfa399e7f82d77f63292fcc933')
        :target = ('inet:service:account', '5475157dfe40f124ce89d2ea255afae7')
        :type = follows
inet:service:relationship=407e3cab7b815081188e3fea5af299ce
        .created = 2025/12/04 01:17:30.307
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', 'dd7f01fb5d292c81733473700764d2f5')
        :target = ('inet:service:account', '5475157dfe40f124ce89d2ea255afae7')
        :type = follows
inet:service:relationship=969ef885a8a64ac16398d9877ec86b74
        .created = 2025/12/04 01:17:30.341
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', 'a0956ee313a2d1bf92b170c71cef8f09')
        :target = ('inet:service:account', '5475157dfe40f124ce89d2ea255afae7')
        :type = follows
inet:service:relationship=be978c78004c8fa8d6ece3746c901228
        .created = 2025/12/04 01:17:30.374
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', 'df7a9f07a6c3c5f190c1ab8ec47d802a')
        :target = ('inet:service:account', '5475157dfe40f124ce89d2ea255afae7')
        :type = follows

Get the profiles for the accounts a user is following:

> inet:service:account:user=invisig0th +:platform::name=x | twitter.user.following --size 3 --yield
inet:service:relationship=ef71f1bf4b52e7470201ee104e38d14c
        .created = 2025/12/04 01:17:30.456
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '733940dfd57f81c890d48e813692afd0')
        :target = ('inet:service:account', '11bc9287b372f4c888b600e2123673f4')
        :type = follows
inet:service:relationship=332f59caba05bbf90547b1a57ebdc081
        .created = 2025/12/04 01:17:30.489
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '733940dfd57f81c890d48e813692afd0')
        :target = ('inet:service:account', '8a3b86b322bd7f289fd9225e77efd329')
        :type = follows
inet:service:relationship=dd489abde8d70ec9115502a70e12c74f
        .created = 2025/12/04 01:17:30.522
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '733940dfd57f81c890d48e813692afd0')
        :target = ('inet:service:account', 'd580087155e4472c4c9bcd3ed3d38d1e')
        :type = follows

Add a new user and who they’re following:

> twitter.user.following --user vpEpiphyte --yield
inet:service:relationship=d32600a1816fad95d2355f22e05cd4cc
        .created = 2025/12/04 01:17:30.606
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '7ea9d56520b47038c999bd7d0a126f6b')
        :type = follows
inet:service:relationship=a5cd6e5f4c465c2b255a90c8e121086f
        .created = 2025/12/04 01:17:30.640
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '46a7a10d2ccd346c24e1847614f149c2')
        :type = follows
inet:service:relationship=b44fd07055f54694453362c63e398386
        .created = 2025/12/04 01:17:30.681
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '75e33e22a27d1887131f0cb977cfc8d1')
        :type = follows
inet:service:relationship=4b99452f2af0e0bf697d9db9b5a1a6fd
        .created = 2025/12/04 01:17:30.719
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '6cff51741772d28fa171d009beae30f4')
        :type = follows
inet:service:relationship=451d5c93e7fe76c539d5fbf8481e4589
        .created = 2025/12/04 01:17:30.757
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '3b30754439690ebee54c3036de009c60')
        :type = follows
inet:service:relationship=df7169a2ca8ff7ce99b3419c08cb6468
        .created = 2025/12/04 01:17:30.791
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '0aa2604e4982db156fa91fc1df386f83')
        :type = follows
inet:service:relationship=fafa4bc0fb4c801decb65793192c721a
        .created = 2025/12/04 01:17:30.823
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '4906702b324794abd30869040895a357')
        :type = follows
inet:service:relationship=dd08ef5aae4b11f190c71433838b7aeb
        .created = 2025/12/04 01:17:30.853
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '5ad9a1718baaff1fd72ac529ec8fd4b5')
        :type = follows
inet:service:relationship=632793456cd77fad8ab8469fac071c31
        .created = 2025/12/04 01:17:30.890
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', 'e41d5ad7622369bd88a7292086d88363')
        :type = follows
inet:service:relationship=e730f455e209f65dc1b5f63a886da0ed
        .created = 2025/12/04 01:17:30.925
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', 'ea767d9aa9f1a18131f9d8f2ed0131ae')
        :type = follows
inet:service:relationship=75e884daba4496d500eb0be9710a2abd
        .created = 2025/12/04 01:17:30.958
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', 'e35a85659cae83db7bca5e6e8715beb2')
        :type = follows
inet:service:relationship=9f96ec28d701669edf8f28e3f5178f4d
        .created = 2025/12/04 01:17:30.996
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')
        :type = follows
inet:service:relationship=31ffbd9e87b942191f8856c5dfc7fa80
        .created = 2025/12/04 01:17:31.025
        :platform = d05349f92efee2da203b3ff841af7155
        :source = ('inet:service:account', '05902ea9c32843c63fd6e8bd9acb20ae')
        :target = ('inet:service:account', '733940dfd57f81c890d48e813692afd0')
        :type = follows

Fetching Tweets

Fetch a single user’s most recent tweets:

> inet:service:account:user=invisig0th +:platform::name=x | twitter.user.tweets --size 3 --yield
WARNING: Twitter API response error: User has been suspended: [absoIute_units].
inet:service:message=ee67d675bc57a24c681cd054dac44530
        .created = 2025/12/04 01:17:31.078
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1427699369449566213
        :links = []
        :mentions = [('inet:service:account', '48e189fff6018e2edc2f3c9ad3888f04'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @wgibb: @vtxproject spotted in the wild, analyzing geological formations. We can capture the knowledge of people going to specific place…
        :time = 2021/08/17 18:30:29.000
        :url = https://twitter.com/invisig0th/status/1427699369449566213
inet:service:message=833491a9aac6186951e29b8e33a88b5b
        .created = 2025/12/04 01:17:31.123
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1427698855840256000
        :links = ['af5fec5b5e52a8ae3034bbc3cfa03023']
        :mentions = [('inet:service:account', 'be04fa258b4067c75493edc0aa9fdb22')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @cons_owned: pic.twitter.com/XEi4gneKcq
        :time = 2021/08/17 18:28:27.000
        :url = https://twitter.com/invisig0th/status/1427698855840256000
inet:service:message=876c32b0c1d980349db1de522026aaa2
        .created = 2025/12/04 01:17:31.163
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1427393138088456194
        :links = []
        :mentions = [('inet:service:account', '5b79b45cf16849f6874cbb32974abec2')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @khaledhosseini: The United States has a moral obligation. Admit as many Afghan refugees as possible.
        :time = 2021/08/16 22:13:38.000
        :url = https://twitter.com/invisig0th/status/1427393138088456194

Fetch a new account and it’s most recent tweets:

> twitter.user.tweets --size 3 --user vtx_savage --yield
inet:service:message=c97ad0b5b20c5431df01563f067be80e
        .created = 2025/12/04 01:17:31.234
        :account = 5475157dfe40f124ce89d2ea255afae7
        :hashtags =
        :id = 1428724310399766539
        :links = ['f742db07c134089558aaa06691f6e04f']
        :mentions = [('inet:service:account', '248f1684dbcf30862d6d5af3eaf4769e'), ('inet:service:account', '28841f639fb13430bf5d18345390f0b2'), ('inet:service:account', '776942c3e37f9d116e79fef3511aef75'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = @whoisjonhlu @ericalikestech @boburnham @vtxproject pic.twitter.com/6zkxlRnHgs
        :time = 2021/08/20 14:23:14.000
        :url = https://twitter.com/vtx_savage/status/1428724310399766539
inet:service:message=7b5ac295eb545c46fa061ab1c6093b7f
        .created = 2025/12/04 01:17:31.312
        :account = 5475157dfe40f124ce89d2ea255afae7
        :hashtags =
        :id = 1427644989731921928
        :links = ['6ca1a9616e59c5143f2767fc4ea80812']
        :mentions = [('inet:service:account', '248f1684dbcf30862d6d5af3eaf4769e'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = @whoisjonhlu @vtxproject pic.twitter.com/clpr2Dg8My
        :time = 2021/08/17 14:54:24.000
        :url = https://twitter.com/vtx_savage/status/1427644989731921928
inet:service:message=3533561bb7583772192be64371749595
        .created = 2025/12/04 01:17:31.368
        :account = 5475157dfe40f124ce89d2ea255afae7
        :hashtags = #vtxinthewild,#vtxitw
        :id = 1427641665347592201
        :links = []
        :mentions = [('inet:service:account', '248f1684dbcf30862d6d5af3eaf4769e'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = @whoisjonhlu @vtxproject #vtxinthewild or #vtxitw ?
        :time = 2021/08/17 14:41:11.000
        :url = https://twitter.com/vtx_savage/status/1427641665347592201

Fetch a tweet (and its associated user) via the tweet ID:

> twitter.tweets.byid 1456591769185959938 --yield
inet:service:message=69c53e244df2a8b59c4851643b876c04
        .created = 2025/12/04 01:17:31.469
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1456591769185959938
        :links = ['3028adf6c96ac0db30241bab5526d474']
        :mentions = []
        :platform = d05349f92efee2da203b3ff841af7155
        :text = It's 0day xmas on the Internet today!
                ( used to *love* these back in the day.  SIGILL ftw! ) pic.twitter.com/5yx77420Po
        :time = 2021/11/05 11:58:34.000
        :url = https://twitter.com/invisig0th/status/1456591769185959938

As these tweets are being pulled down, the text of each tweet is scraped for any additional nodes using the logic from $lib.scrape. To pivot to the scraped nodes, follow the refs light edge:

> twitter.tweets.byid 1540590647022915584 --yield | -(refs)> * | limit 5
inet:server=tcp://2.58.56.247:80
        .created = 2025/12/04 01:17:31.616
        :ipv4 = 2.58.56.247
        :port = 80
        :proto = tcp
inet:fqdn=bazaar.abuse.ch
        .created = 2025/12/04 01:17:31.584
        :domain = abuse.ch
        :host = bazaar
        :issuffix = false
        :iszone = false
        :zone = abuse.ch
inet:server=tcp://74.201.28.166:6606
        .created = 2025/12/04 01:17:31.619
        :ipv4 = 74.201.28.166
        :port = 6606
        :proto = tcp
inet:fqdn=urlhaus.abuse.ch
        .created = 2025/12/04 01:17:31.577
        :domain = abuse.ch
        :host = urlhaus
        :issuffix = false
        :iszone = false
        :zone = abuse.ch
inet:ipv4=74.201.28.166
        .created = 2025/12/04 01:17:31.619
        :type = unicast

Pulling Tweets en masse

Synapse-Twitter supports adding accounts to a monitoring list to automatically fetch the latest tweets for each account in the list.

To add an existing account node to the list of accounts being monitored:

> inet:service:account:user=invisig0th +:platform::name=x | twitter.feed.adduser
inet:service:account=733940dfd57f81c890d48e813692afd0
        .created = 2025/12/04 01:17:29.820
        .seen = ('2009/04/12 21:22:36.000', '2021/11/05 11:58:34.001')
        :id = 30724377
        :period = ('2009/04/12 21:22:36.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 733940dfd57f81c890d48e813692afd0
        :user = invisig0th

To fetch a new account and add it to the list:

> twitter.feed.adduser --user vpEpiphyte --yield
inet:service:account=05902ea9c32843c63fd6e8bd9acb20ae
        .created = 2025/12/04 01:17:29.946
        .seen = ('2017/08/19 14:04:50.000', '2017/08/19 14:04:50.001')
        :id = 898908618011152385
        :period = ('2017/08/19 14:04:50.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 05902ea9c32843c63fd6e8bd9acb20ae
        :user = vpepiphyte

To list the current accounts being monitored:

> twitter.feed.list
 User            | Last tweet id        | Service account GUID
=================|======================|==================================
 invisig0th      | 1                    | 733940dfd57f81c890d48e813692afd0
-----------------|----------------------|----------------------------------
 vpepiphyte      | 1                    | 05902ea9c32843c63fd6e8bd9acb20ae

To remove a user from the list of accounts being monitored:

> twitter.feed.deluser --user invisig0th
Removed feed user inet:service:account=733940dfd57f81c890d48e813692afd0 (invisig0th) with offset 1

To pull down tweets for a single account being watched:

> inet:service:account:user=vtx_savage +:platform::name=x | twitter.feed.adduser
inet:service:account=5475157dfe40f124ce89d2ea255afae7
        .created = 2025/12/04 01:17:30.168
        .seen = ('2021/05/24 19:59:21.000', '2021/08/20 14:23:14.001')
        :id = 1396918580252450823
        :period = ('2021/05/24 19:59:21.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 5475157dfe40f124ce89d2ea255afae7
        :user = vtx_savage
> twitter.feed.pull --user vtx_savage --size 3 --yield
inet:service:message=c97ad0b5b20c5431df01563f067be80e
        .created = 2025/12/04 01:17:31.234
        :account = 5475157dfe40f124ce89d2ea255afae7
        :hashtags =
        :id = 1428724310399766539
        :links = ['f742db07c134089558aaa06691f6e04f']
        :mentions = [('inet:service:account', '248f1684dbcf30862d6d5af3eaf4769e'), ('inet:service:account', '28841f639fb13430bf5d18345390f0b2'), ('inet:service:account', '776942c3e37f9d116e79fef3511aef75'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = @whoisjonhlu @ericalikestech @boburnham @vtxproject pic.twitter.com/6zkxlRnHgs
        :time = 2021/08/20 14:23:14.000
        :url = https://twitter.com/vtx_savage/status/1428724310399766539
inet:service:message=7b5ac295eb545c46fa061ab1c6093b7f
        .created = 2025/12/04 01:17:31.312
        :account = 5475157dfe40f124ce89d2ea255afae7
        :hashtags =
        :id = 1427644989731921928
        :links = ['6ca1a9616e59c5143f2767fc4ea80812']
        :mentions = [('inet:service:account', '248f1684dbcf30862d6d5af3eaf4769e'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = @whoisjonhlu @vtxproject pic.twitter.com/clpr2Dg8My
        :time = 2021/08/17 14:54:24.000
        :url = https://twitter.com/vtx_savage/status/1427644989731921928
inet:service:message=3533561bb7583772192be64371749595
        .created = 2025/12/04 01:17:31.368
        :account = 5475157dfe40f124ce89d2ea255afae7
        :hashtags = #vtxinthewild,#vtxitw
        :id = 1427641665347592201
        :links = []
        :mentions = [('inet:service:account', '248f1684dbcf30862d6d5af3eaf4769e'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = @whoisjonhlu @vtxproject #vtxinthewild or #vtxitw ?
        :time = 2021/08/17 14:41:11.000
        :url = https://twitter.com/vtx_savage/status/1427641665347592201

Much like the other commands to fetch tweets, as these tweets are being pulled down, the text of each tweet is scraped for any additional nodes using the logic from $lib.scrape.

To pull down tweets for all the accounts being monitored, but skipping scrapping for each of the tweets:

> twitter.feed.adduser --user invisig0th
> twitter.feed.pull --size 10 --yield --all --skip-scrape
WARNING: queryTwitter returned bad status code of -1
WARNING: Twitter API response error: User has been suspended: [absoIute_units].
inet:service:message=8bd144c8eafecbcdbb5a4db097b799b8
        .created = 2025/12/04 01:17:32.155
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1430625964048805888
        :links = []
        :mentions = [('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @vtxproject: Synapse Power-Ups allow analysts to extend the system’s functionality, enrich their analysis, integrate additional data, &…
        :time = 2021/08/25 20:19:44.000
        :url = https://twitter.com/invisig0th/status/1430625964048805888
inet:service:message=5c84ea42358407d31a6070a80e458a7a
        .created = 2025/12/04 01:17:32.179
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1430302259360014340
        :links = ['b5faae1eb669d72908f083c27166f1bd']
        :mentions = [('inet:service:account', '7315d005265fceb54b9e6fcf064b6a63')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @ccsdevio: IT👏IS👏NOT👏A👏"personal decision" twitter.com/Chrissy__Dee/s…
        :time = 2021/08/24 22:53:27.000
        :url = https://twitter.com/invisig0th/status/1430302259360014340
inet:service:message=403aaedcebecbdf808319aa84d247f8d
        .created = 2025/12/04 01:17:32.209
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1430294899757289476
        :links = []
        :mentions = [('inet:service:account', '733940dfd57f81c890d48e813692afd0'), ('inet:service:account', 'ea767d9aa9f1a18131f9d8f2ed0131ae')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @_devonkerr_: @invisig0th Never doubt it, also please be polish vodka
        :time = 2021/08/24 22:24:12.000
        :url = https://twitter.com/invisig0th/status/1430294899757289476
inet:service:message=f57849cfdecb4a01e75954f6fdec0b63
        .created = 2025/12/04 01:17:32.244
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1430288103604883464
        :links = []
        :mentions = [('inet:service:account', '733940dfd57f81c890d48e813692afd0'), ('inet:service:account', '891d143e1d32938db72fe1f3b0a3fa3e')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @jamierbutler: @invisig0th Yes
        :time = 2021/08/24 21:57:12.000
        :url = https://twitter.com/invisig0th/status/1430288103604883464
inet:service:message=a5a3f5ba7b1cf60fbdc5861d7e572d12
        .created = 2025/12/04 01:17:32.281
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1430288031437701121
        :links = []
        :mentions = [('inet:service:account', '678a5c87a642719e29f4fe80b24f82ff'), ('inet:service:account', '6b7522070d8251ab2e9c4cb099a4beb2')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = @adriendb A man after @femmeshoto 's heart
        :time = 2021/08/24 21:56:54.000
        :url = https://twitter.com/invisig0th/status/1430288031437701121
inet:service:message=cbf106b6295cfcb59df2e9616e32b101
        .created = 2025/12/04 01:17:32.318
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1430287550766276615
        :links = []
        :mentions = [('inet:service:account', '733940dfd57f81c890d48e813692afd0'), ('inet:service:account', '80c1aa0c60747326fabd2d95c43c8ee0')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @Casperinous: @invisig0th Working undercover to increase your water consumption :P
        :time = 2021/08/24 21:55:00.000
        :url = https://twitter.com/invisig0th/status/1430287550766276615
inet:service:message=a0a408f12c4e58637f8ec0a879871301
        .created = 2025/12/04 01:17:32.356
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1430287062331166725
        :links = []
        :mentions = []
        :platform = d05349f92efee2da203b3ff841af7155
        :text = Vodka and caviar. Dinner of champions... ?
        :time = 2021/08/24 21:53:03.000
        :url = https://twitter.com/invisig0th/status/1430287062331166725
inet:service:message=6b52932bd2b39b2f93705983d0a6011f
        .created = 2025/12/04 01:17:32.368
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1430181688206925828
        :links = ['cd2249d8075e8a95b6cb1b53ded0b1ac']
        :mentions = [('inet:service:account', '733940dfd57f81c890d48e813692afd0'), ('inet:service:account', '8ef4083284c89dfa769cb128e4872c3e')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @b1ack0ut: I think I just discovered how @invisig0th really got his handle. pic.twitter.com/8KTwH6KZZY
        :time = 2021/08/24 14:54:20.000
        :url = https://twitter.com/invisig0th/status/1430181688206925828
inet:service:message=15c3fea78bf8b2d9482442fab13b9805
        .created = 2025/12/04 01:17:32.411
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags =
        :id = 1429816565399232523
        :links = ['a53c9ce649c82a16f12113ddc703d136']
        :mentions = [('inet:service:account', '614ce3dfff612d2b702ff5107b2f1855')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @bloodberry_tart: brutal lol pic.twitter.com/YPLMQriFRh
        :time = 2021/08/23 14:43:28.000
        :url = https://twitter.com/invisig0th/status/1429816565399232523
inet:service:message=2198dc502e8c561f5e2a0573288bb304
        .created = 2025/12/04 01:17:32.445
        :account = 733940dfd57f81c890d48e813692afd0
        :hashtags = #lawtwitter
        :id = 1429769621859704839
        :links = ['82154d06bb5d6e30873e5ced02a24079']
        :mentions = [('inet:service:account', 'f75af4a36f7a950890cab551616a06d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @NunesAlt: #LawTwitter, help me out. Is this illegal? twitter.com/ronfilipkowski…
        :time = 2021/08/23 11:36:56.000
        :url = https://twitter.com/invisig0th/status/1429769621859704839

Searching for Tweets

To ingest the tweets related to a search query:

> twitter.search.tweets vertexproject --yield --size 3
inet:service:message=0b109300f74904a690c62325905018a4
        .created = 2025/12/04 01:17:32.559
        :account = d9ff2672efef053fc86dcc24f7b0e9d8
        :hashtags =
        :id = 1452799641725116417
        :links = ['7a4f5903a8a24fc0afc90d5868b15477']
        :mentions = [('inet:service:account', '5475157dfe40f124ce89d2ea255afae7'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @vtxproject: Join us later this week for our next What’s New webinar presented by @vtx_savage & featuring Story Templates! https://t.co/…
        :time = 2021/10/26 00:50:00.000
        :url = https://twitter.com/vtxproject/status/1452799641725116417
inet:service:message=c595fc0c989922cad4b159796571b858
        .created = 2025/12/04 01:17:32.631
        :account = d1d24576db20d0175682a231eab2e97c
        :hashtags =
        :id = 1452639318573522956
        :links = ['27440443df5e6fdd7cc3c1823cba20d3']
        :mentions = [('inet:service:account', '5475157dfe40f124ce89d2ea255afae7'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @vtxproject: Join us later this week for our next What’s New webinar presented by @vtx_savage & featuring Story Templates! https://t.co/…
        :time = 2021/10/25 14:12:56.000
        :url = https://twitter.com/cybersec_feeds/status/1452639318573522956
inet:service:message=80395e727e7a668e76d939817690e18b
        .created = 2025/12/04 01:17:32.705
        :account = d9ff2672efef053fc86dcc24f7b0e9d8
        :hashtags = #cybersecurity,#infosec,#threatintel
        :id = 1452611983925207050
        :links = ['686ab93ea6901d6b443742c3e2d9222c']
        :mentions = [('inet:service:account', '5475157dfe40f124ce89d2ea255afae7')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = Join us later this week for our next What’s New webinar presented by @vtx_savage & featuring Story Templates! v.vtx.lk/luma #infosec #CyberSecurity #threatintel
        :time = 2021/10/25 12:24:19.000
        :url = https://twitter.com/vtxproject/status/1452611983925207050

These tweets will be linked to an it:exec:query node via a -(found)> light edges:

> it:exec:query:text="vertexproject" -(found)> * | limit 5
inet:service:message=80395e727e7a668e76d939817690e18b
        .created = 2025/12/04 01:17:32.705
        :account = d9ff2672efef053fc86dcc24f7b0e9d8
        :hashtags = #cybersecurity,#infosec,#threatintel
        :id = 1452611983925207050
        :links = ['686ab93ea6901d6b443742c3e2d9222c']
        :mentions = [('inet:service:account', '5475157dfe40f124ce89d2ea255afae7')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = Join us later this week for our next What’s New webinar presented by @vtx_savage & featuring Story Templates! v.vtx.lk/luma #infosec #CyberSecurity #threatintel
        :time = 2021/10/25 12:24:19.000
        :url = https://twitter.com/vtxproject/status/1452611983925207050
inet:service:message=0b109300f74904a690c62325905018a4
        .created = 2025/12/04 01:17:32.559
        :account = d9ff2672efef053fc86dcc24f7b0e9d8
        :hashtags =
        :id = 1452799641725116417
        :links = ['7a4f5903a8a24fc0afc90d5868b15477']
        :mentions = [('inet:service:account', '5475157dfe40f124ce89d2ea255afae7'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @vtxproject: Join us later this week for our next What’s New webinar presented by @vtx_savage & featuring Story Templates! https://t.co/…
        :time = 2021/10/26 00:50:00.000
        :url = https://twitter.com/vtxproject/status/1452799641725116417
inet:service:message=c595fc0c989922cad4b159796571b858
        .created = 2025/12/04 01:17:32.631
        :account = d1d24576db20d0175682a231eab2e97c
        :hashtags =
        :id = 1452639318573522956
        :links = ['27440443df5e6fdd7cc3c1823cba20d3']
        :mentions = [('inet:service:account', '5475157dfe40f124ce89d2ea255afae7'), ('inet:service:account', 'd9ff2672efef053fc86dcc24f7b0e9d8')]
        :platform = d05349f92efee2da203b3ff841af7155
        :text = RT @vtxproject: Join us later this week for our next What’s New webinar presented by @vtx_savage & featuring Story Templates! https://t.co/…
        :time = 2021/10/25 14:12:56.000
        :url = https://twitter.com/cybersec_feeds/status/1452639318573522956

To search for tweets based on a specific hashtag:

> twitter.search.tweets "#cyberattack" --yield --size 3
inet:service:message=45ab60da835f56938bbfee17035c0ab8
        .created = 2025/12/04 01:17:32.872
        :account = df54f3ab5fa258b04fbd5d26375c1288
        :hashtags = #cisa,#cloudsecurity,#cyber,#cyberattack,#cybernews,#cybersecurity,#hacking,#infosec,#infosecurity,#malware,#ransomware,#threathunting,#threatintel,#threatintelligence,#uber,#uberbreach,#uberhack,#uberhacked,#zerotrust
        :id = 1577681957328134144
        :links = ['98d0eca1c56018387750b4c10e312584']
        :mentions = []
        :platform = d05349f92efee2da203b3ff841af7155
        :text = White House Seeks Advice on Cyber #infosec #infosecurity #cybersecurity #threatintel #threatintelligence #hacking #cybernews #cyberattack #cloudsecurity #malware #ransomware #cyber #threathunting #ZeroTrust #CISA #uber #uberhack #uberbreach #uberhacked
                cyberiqs.com/latestnews
        :time = 2022/10/05 15:27:45.000
        :url = https://twitter.com/cyberiqs_/status/1577681957328134144
inet:service:message=87cbc220e4a6fdc54f26d70ad050ee12
        .created = 2025/12/04 01:17:32.953
        :account = df54f3ab5fa258b04fbd5d26375c1288
        :hashtags = #cisa,#cloudsecurity,#cyber,#cyberattack,#cybernews,#cybersecurity,#hacking,#infosec,#infosecurity,#malware,#ransomware,#threathunting,#threatintel,#threatintelligence,#uber,#uberbreach,#uberhack,#uberhacked,#zerotrust
        :id = 1577681955914661891
        :links = ['f45f548ce0c03709fc79dcb205bceda9']
        :mentions = []
        :platform = d05349f92efee2da203b3ff841af7155
        :text = Migrant Digital Justice Toolkit #infosec #infosecurity #cybersecurity #threatintel #threatintelligence #hacking #cybernews #cyberattack #cloudsecurity #malware #ransomware #cyber #threathunting #ZeroTrust #CISA #uber #uberhack #uberbreach #uberhacked
                cyberiqs.com/latestnews
        :time = 2022/10/05 15:27:44.000
        :url = https://twitter.com/cyberiqs_/status/1577681955914661891
inet:service:message=c3b4db74d3009c00a3bd8b2797526d48
        .created = 2025/12/04 01:17:33.032
        :account = df54f3ab5fa258b04fbd5d26375c1288
        :hashtags = #cisa,#cloudsecurity,#cyber,#cyberattack,#cybernews,#cybersecurity,#hacking,#infosec,#infosecurity,#malware,#ransomware,#threathunting,#threatintel,#threatintelligence,#uber,#uberbreach,#uberhack,#uberhacked,#zerotrust
        :id = 1577681914735067137
        :links = ['5b92d79a3f2ac55105d9c2554651dad3']
        :mentions = []
        :platform = d05349f92efee2da203b3ff841af7155
        :text = How the Online Safety Bill puts a #infosec #infosecurity #cybersecurity #threatintel #threatintelligence #hacking #cybernews #cyberattack #cloudsecurity #malware #ransomware #cyber #threathunting #ZeroTrust #CISA #uber #uberhack #uberbreach #uberhacked
                cyberiqs.com/latestnews
        :time = 2022/10/05 15:27:35.000
        :url = https://twitter.com/cyberiqs_/status/1577681914735067137

For more information on how to build a query for the Twitter v2 API, please see the Twitter search documentation.

Automating Feed Pulling

To pull the tweets for feed users on a regular basis, a cron job can be created to automate the process:

> cron.add --daily 12:00 { twitter.feed.pull }
Created cron job: a85cba56482afb048b79c18882f68dd8

Which will pull in all the latest tweets for every user enrolled in the Synapse-Twitter feed on a daily basis at 12:00 UTC.

Searching for Users

Synapse-Twitter supports searching for users, but because the search functionality has not been ported over to the v2 version of the Twitter API, search functionality requires extra API keys in order for Synapse-Twitter to interact with the v1.1 version of the Twitter API.

To use the Twitter search functionality, you need four keys, a consumer key, the associated consumer secret, an access token, and the associated access token secret.

To set the four OAuth keys needed for search functionality:

> twitter.setup.oauth MyConsumerKey MyConsumerSecret MyAccessToken MyAccessTokenSecret
Setting Synapse-Twitter OAuth keys for all users.

To use the search functionality to search for users based on a query:

> twitter.search.users "invisi" --yield --size 3
inet:service:account=56c1667c0711ef1d449814a85796c151
        .created = 2025/12/04 01:17:33.196
        .seen = ('2009/03/22 19:55:36.000', '2009/03/22 19:55:36.001')
        :id = 25868776
        :period = ('2009/03/22 19:55:36.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 56c1667c0711ef1d449814a85796c151
        :user = invisibooks
inet:service:account=aeabec00467e6047b03dfeccf8dbbafa
        .created = 2025/12/04 01:17:33.241
        .seen = ('2012/01/09 17:58:09.000', '2012/01/09 17:58:09.001')
        :id = 459460766
        :period = ('2012/01/09 17:58:09.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = aeabec00467e6047b03dfeccf8dbbafa
        :user = invisicollege
inet:service:account=7615136fa69a7fdf112b4c22b59c7f7d
        .created = 2025/12/04 01:17:33.283
        .seen = ('2016/11/05 08:05:01.000', '2016/11/05 08:05:01.001')
        :id = 794812750874677248
        :period = ('2016/11/05 08:05:01.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 7615136fa69a7fdf112b4c22b59c7f7d
        :user = eu_lover

All users returned from that query will be linked together via an it:exec:query node using -(found)> light edges:

> it:exec:query:text="invisi" -(found)> * | limit 5
inet:service:account=56c1667c0711ef1d449814a85796c151
        .created = 2025/12/04 01:17:33.196
        .seen = ('2009/03/22 19:55:36.000', '2009/03/22 19:55:36.001')
        :id = 25868776
        :period = ('2009/03/22 19:55:36.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 56c1667c0711ef1d449814a85796c151
        :user = invisibooks
inet:service:account=7615136fa69a7fdf112b4c22b59c7f7d
        .created = 2025/12/04 01:17:33.283
        .seen = ('2016/11/05 08:05:01.000', '2016/11/05 08:05:01.001')
        :id = 794812750874677248
        :period = ('2016/11/05 08:05:01.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = 7615136fa69a7fdf112b4c22b59c7f7d
        :user = eu_lover
inet:service:account=aeabec00467e6047b03dfeccf8dbbafa
        .created = 2025/12/04 01:17:33.241
        .seen = ('2012/01/09 17:58:09.000', '2012/01/09 17:58:09.001')
        :id = 459460766
        :period = ('2012/01/09 17:58:09.000', '?')
        :platform = d05349f92efee2da203b3ff841af7155
        :profile = aeabec00467e6047b03dfeccf8dbbafa
        :user = invisicollege

Use of meta:source nodes

Synapse-Twitter uses a meta:source node and -(seen)> light weight edges to track nodes observed from the Twitter API.

> meta:source=8359f150c6f163bc9a41662e665350af
meta:source=8359f150c6f163bc9a41662e665350af
        .created = 2025/12/04 01:17:29.869
        :name = twitter api

Storm can be used to filter nodes to include/exclude nodes which have been observed by Synapse-Twitter. The following example shows how to filter the results of a query to include only results observed by Synapse-Twitter:

> #cool.tag.lift +{ <(seen)- meta:source=8359f150c6f163bc9a41662e665350af }