Tool reference¶
29 tools: 20 read tools that are always available, and 9 write tools (marked write) that only appear with --read-write. Every tool returns JSON. Large OTX objects are summarized and long lists capped, with the API's total counts kept.
Sample outputs are real responses from the OTX API, captured on 2026-10-12 with public indicators. Long lists are cut to a few entries and marked … N more, and long strings end in …. Tools that return your own account's data (subscriptions, your pulses, submissions) and write tools have no sample.
| Tool | Group | Mode |
|---|---|---|
search_pulses |
Search | read |
search_users |
Search | read |
get_indicator_details |
Indicators | read |
validate_indicator |
Indicators | read |
list_indicator_types |
Indicators | read |
export_indicators |
Indicators | read |
get_pulse_details |
Pulses | read |
get_pulse_indicators |
Pulses | read |
get_related_pulses |
Pulses | read |
search_related_pulses |
Pulses | read |
list_pulse_activity |
Pulses | read |
list_subscribed_pulses |
Pulses | read |
get_subscribed_pulse_ids |
Pulses | read |
get_pulse_events |
Pulses | read |
create_pulse |
Pulses | write |
subscribe_pulse |
Pulses | write |
unsubscribe_pulse |
Pulses | write |
get_user |
Users | read |
list_user_pulses |
Users | read |
get_current_user |
Users | read |
list_my_pulses |
Users | read |
subscribe_user |
Users | write |
unsubscribe_user |
Users | write |
follow_user |
Users | write |
unfollow_user |
Users | write |
list_submitted_urls |
Submissions | read |
list_submitted_files |
Submissions | read |
submit_url |
Submissions | write |
submit_urls |
Submissions | write |
Search¶
search_pulses¶
Full-text search across all public OTX pulses. The best starting point for threat research: search for a malware family, actor, campaign or technology and get matching pulses with their IDs, then pull details or indicators.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
query |
string | yes | Search terms. | |
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
Sample output: {"query": "emotet", "limit": 2}
{
"count": 2155,
"results": [
{
"id": "5900f9e1afc8d868448457e1",
"name": "Emotet / Nemucod Phishing Campaign 20170425",
"description": "Widespread phishing campaign with pdf attachements that contain a link to various sites with malicious javascript file.",
"author_name": "jonmega",
"modified": "2017-04-26T21:32:22.428000",
"created": "2017-04-26T19:49:53.911000",
"tags": [],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "white",
"revision": 9,
"groups": [],
"in_group": false,
"author": {
"username": "jonmega",
"id": "2445",
"avatar_url": "https://otx.alienvault.com/assets/images/default-avatar.png",
"is_subscribed": false,
"is_following": false
},
"is_subscribing": null
},
{
"id": "5900ff2120c314026661fac4",
"name": "New Variant of Geodo/Emotet Banking Malware Targets UK | Forcepoint",
"description": "The campaign appeared to peak on 18 April 2017 and primarily targeted email addresses associated with .UK TLDs. The subject line of the emails sent varied sl…",
"author_name": "Gargomel",
"modified": "2017-04-26T20:12:17.476000",
"created": "2017-04-26T20:12:17.476000",
"tags": [],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "white",
"revision": 1,
"groups": [],
"in_group": false,
"author": {
"username": "Gargomel",
"id": "17466",
"avatar_url": "https://otx.alienvault.com/assets/images/default-avatar.png",
"is_subscribed": false,
"is_following": false
},
"is_subscribing": null
}
],
"exact_match": "",
"previous": null,
"next": "https://otx.alienvault.com/api/v1/search/pulses?q=emotet&limit=2&page=2"
}
search_users¶
Search OTX users by username.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
query |
string | yes | Username (or fragment) to search for. | |
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
Sample output: {"query": "alienvault", "limit": 2}
{
"results": [
{
"subscriber_count": 0,
"follower_count": 0,
"member_since": "754 days ago ",
"avatar_url": "https://otx.alienvault.com/assets/images/default-avatar.png",
"award_count": 0,
"awards": [],
"user_id": 294284,
"username": "1alienvaultuser",
"indicator_count": 0,
"pulse_count": 0,
"accepted_edits_count": 0
},
{
"subscriber_count": 2,
"follower_count": 0,
"member_since": "3267 days ago ",
"avatar_url": "https://otx.alienvault.com/assets/images/default-avatar.png",
"award_count": 0,
"awards": [],
"user_id": 45001,
"username": "4979-AlienVault",
"indicator_count": 0,
"pulse_count": 0,
"accepted_edits_count": 0
}
],
"count": 1233,
"previous": null,
"next": "https://otx.alienvault.com/api/v1/search/users?q=alienvault&limit=2&page=2"
}
Indicators¶
get_indicator_details¶
Get threat intelligence details for an indicator from AlienVault OTX. This is the primary indicator lookup tool. It covers every OTX indicator type and detail section in one call.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
indicator_type |
string | yes | URL path type. One of: IPv4, IPv6, domain, hostname, file (any hash: MD5/SHA1/SHA256/PEHASH/IMPHASH), url, cve, nids, correlation-rule. | |
indicator_value |
string | yes | The indicator itself (IP address, domain, file hash, URL, CVE id...). | |
section |
string | no | "general" |
Detail section to retrieve. Availability depends on type: IPv4/IPv6: general, geo, reputation, url_list, passive_dns, malware, nids_list, http_scans | domain/hostname: general, geo, url_list, passive_dns, malware, whois, http_scans | file: general, analysis (sandbox report) | url: general, url_list, http_scans, screenshot | cve: general, nids_list, malware. Use 'general' first: it includes pulse associations, reputation and geo summaries. |
Sections by indicator type:
indicator_type |
section values |
|---|---|
IPv4, IPv6 |
general, geo, reputation, url_list, passive_dns, malware, nids_list, http_scans |
domain, hostname |
general, geo, url_list, passive_dns, malware, whois, http_scans |
file (MD5, SHA-1, SHA-256, PEHASH, IMPHASH) |
general, analysis |
url |
general, url_list, http_scans, screenshot |
cve |
general, nids_list, malware |
In the general section, related pulses are summarized (id, name, author, dates, TLP, tags, malware families, adversary, ATT&CK ids, indicator count) and capped at 10, with the total in pulse_info.count. For CVEs, the configuration tree becomes up to 30 affected CPEs, each with its version range (for example cpe:2.3:a:apache:log4j:* (>= 2.0.1, < 2.3.1)), and up to 10 platform CPEs: configurations the vulnerable product runs on, which are not affected themselves. Exploits and references are capped at 20.
Sample output (IPv4, general): {"indicator_type": "IPv4", "indicator_value": "8.8.8.8", "section": "general"}
{
"whois": "http://whois.domaintools.com/8.8.8.8",
"reputation": 0,
"indicator": "8.8.8.8",
"type": "IPv4",
"type_title": "IPv4",
"base_indicator": {
"id": 11911,
"indicator": "8.8.8.8",
"type": "IPv4",
"title": "",
"description": "",
"content": "",
"access_type": "public",
"access_reason": ""
},
"pulse_info": {
"count": 0,
"pulses": [],
"references": [],
"related": {
"alienvault": {
"adversary": [],
"malware_families": [],
"industries": []
},
"other": {
"adversary": [],
"malware_families": [],
"industries": []
}
},
"pulses_shown": 0
},
"false_positive": [
{
"assessment": "accepted",
"assessment_date": "2021-05-19T15:36:44.966000",
"report_date": "2021-03-16T14:46:19.003000"
}
],
"validation": [
{
"source": "false_positive",
"message": "Known False Positive",
"name": "Known False Positive"
},
{
"source": "whitelist",
"message": "contained in whitelisted prefix",
"name": "Whitelisted IP"
}
],
"asn": "AS15169 google llc",
"city_data": true,
"city": null,
"region": null,
"continent_code": "NA",
"country_code3": "USA",
"country_code2": "US",
"subdivision": null,
"latitude": 37.751,
"postal_code": null,
"longitude": -97.822,
"accuracy_radius": 1000,
"country_code": "US",
"country_name": "United States of America",
"dma_code": 0,
"charset": 0,
"area_code": 0,
"flag_url": "/assets/images/flags/us.png",
"flag_title": "United States of America",
"sections": [
"general",
"geo",
"reputation",
"… 5 more"
]
}
Sample output (File hash, general): {"indicator_type": "file", "indicator_value": "275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f", "section": "general"}
{
"sections": [
"general",
"analysis"
],
"type": "sha256",
"type_title": "FileHash-SHA256",
"indicator": "275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f",
"validation": [],
"base_indicator": {
"id": 22820,
"indicator": "44d88612fea8a8f36de82e1278abb02f",
"type": "FileHash-MD5",
"title": "",
"description": "",
"content": "",
"access_type": "public",
"access_reason": ""
},
"pulse_info": {
"count": 50,
"pulses": [
{
"id": "6aa8875963573e64ffa113bd",
"name": "Umbald • Neconyd • Banker.LY • Ramnit • Malicious Media (Credit OctoSeek 11/06/2026)",
"author": "Q.Vashti",
"created": "2026-09-14T23:46:33.025000",
"modified": "2026-09-14T23:46:33.025000",
"TLP": "green",
"tags": [
"whois record",
"ssl certificate",
"historical ssl",
"… 7 more"
],
"malware_families": [
"Tsara Brashears",
"Mitre Attack",
"ET",
"… 5 more"
],
"attack_ids": [
"T1056",
"T1027",
"T1090",
"… 7 more"
],
"indicator_count": 13104
},
{
"id": "6a2d8d06c162afe209cca676",
"name": "Auditoría_Servicios_Críticos_Jeff",
"author": "YoungJr0707",
"created": "2026-06-13T17:01:53.660000",
"modified": "2026-07-13T17:04:00.535000",
"TLP": "white",
"adversary": [
"Lab3"
],
"indicator_count": 1
},
{
"id": "698ccef65de079ed10f80c7a",
"name": "Loki scan",
"author": "skocherhan",
"created": "2026-02-11T18:48:22.434000",
"modified": "2026-07-10T00:07:38.655000",
"TLP": "green",
"indicator_count": 14144
},
"… 7 more"
],
"references": [
"http-robots.txt.nse",
"rpc-grind.nse",
"rmi-vuln-classloader.nse",
"… 17 more"
],
"related": {
"alienvault": {
"adversary": [],
"malware_families": [],
"industries": []
},
"other": {
"adversary": [
"Lab3",
"Unknown"
],
"malware_families": [
"",
"Trojanspy",
"Ransom:win32/pottieq",
"… 17 more"
],
"industries": [
"Education",
"Defense",
"Healthcare",
"… 3 more"
]
}
},
"pulses_shown": 10,
"note": "Showing 10 of 50 related pulses; use get_pulse_details for one or search_pulses for more.",
"references_total": 715
},
"false_positive": []
}
Sample output (CVE, general): {"indicator_type": "cve", "indicator_value": "CVE-2021-44228", "section": "general"}
{
"sections": [
"general",
"nids_list",
"malware"
],
"mitre_url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228",
"nvd_url": "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-44228",
"indicator": "CVE-2021-44228",
"type_title": "CVE",
"base_indicator": {
"id": 3325076393,
"indicator": "CVE-2021-44228",
"type": "CVE",
"title": "",
"description": "",
"content": "",
"access_type": "public",
"access_reason": ""
},
"pulse_info": {
"count": 50,
"pulses": [
{
"id": "6ac9101554900e3ae83df111",
"name": "The Scalpel vs. The Sledgehammer: Lessons in Precision Triage from the .conf26 SOC",
"author": "AlienVault",
"created": "2026-10-09T16:02:29.260000",
"modified": "2026-10-12T23:05:38.825000",
"TLP": "white",
"tags": [
"conference network security",
"cdn infrastructure",
"precision blocking",
"… 5 more"
],
"attack_ids": [
"T1568.002",
"T1071.004",
"T1071",
"… 7 more"
],
"indicator_count": 3
},
{
"id": "6a99adbec32d94dc6cd05ee1",
"name": "Chinese-Speaking Operator Uses AI Agents to Target Government and Education Systems Across Asia",
"author": "AlienVault",
"created": "2026-09-03T17:26:22.072000",
"modified": "2026-10-03T17:09:01.416000",
"TLP": "white",
"tags": [
"ai-assisted intrusions",
"secbox",
"steganographic payloads",
"… 4 more"
],
"malware_families": [
"SecBox",
"GLUTTON"
],
"attack_ids": [
"T1003",
"T1133",
"T1021.004",
"… 7 more"
],
"indicator_count": 50
},
{
"id": "6accf71c088bad7be96a72c3",
"name": "Actively_Exploited_Kev | Oct 13, 2026",
"author": "LTNA-Australia",
"created": "2026-10-12T15:05:00.640000",
"modified": "2026-10-12T15:05:00.640000",
"TLP": "white",
"tags": [
"actively_exploited_kev"
],
"indicator_count": 1739
},
"… 7 more"
],
"references": [
"",
"SHA-256: fc1fedce1419d4e2009828aad8644deca78b4eeed176e5b009797e0eb0d7d3ff — Detected as Win.Malware.Vtflooder / Trojan:Win32/Vflooder; UPX-packed PE32 execut…",
"https://vtbehaviour.commondatastorage.googleapis.com/910c6d6b843dae92d9b13230244646f972dfbc3136b8455916c74e8d6da423ac_CAPE%20Sandbox.html?GoogleAccessId=7586…",
"… 17 more"
],
"related": {
"alienvault": {
"adversary": [],
"malware_families": [
"Glutton",
"Secbox"
],
"industries": [
"Education",
"Government",
"Telecommunications"
]
},
"other": {
"adversary": [
"Adversary Profile: Salt Typhoon Alignment The architectural gap identified by mudoSO mirrors the act"
],
"malware_families": [
"Glutton",
"Secbox"
],
"industries": [
"Critical_infrastructure",
"Energy",
"Healthcare",
"… 4 more"
]
}
},
"pulses_shown": 10,
"note": "Showing 10 of 50 related pulses; use get_pulse_details for one or search_pulses for more.",
… trimmed for the docs
Sample output (Domain, whois): {"indicator_type": "domain", "indicator_value": "example.com", "section": "whois"}
{
"data": [
{
"key": "name_servers",
"name": "Name Servers",
"value": "A.IANA-SERVERS.NET"
},
{
"key": "creation_date",
"name": "Creation Date",
"value": "1995-08-14T00:00:00"
},
{
"key": "domain_name",
"name": "Domain Name",
"value": "EXAMPLE.COM"
},
"… 9 more"
],
"count": 12,
"related": [
{
"domain": "internic.org",
"related": "A.IANA-SERVERS.NET",
"related_type": "hostname"
},
{
"domain": "afralo.org",
"related": "A.IANA-SERVERS.NET",
"related_type": "hostname"
},
{
"domain": "arpa-servers.org",
"related": "A.IANA-SERVERS.NET",
"related_type": "hostname"
},
"… 18 more"
]
}
validate_indicator¶
Validate an indicator value/type pair before using it in a pulse.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
indicator |
string | yes | The indicator value to validate. | |
indicator_type |
string | yes | OTX indicator type name, e.g. IPv4, domain, FileHash-SHA256, URL, CVE, YARA, JA3, Mutex, CIDR, email. | |
description |
string | no | "" |
Optional description used during validation. |
Sample output: {"indicator": "8.8.8.8", "indicator_type": "IPv4"}
{
"content": "",
"description": "",
"title": "",
"access_type": "public",
"access_reason": "",
"access_groups": [],
"expiration": "2026-11-11T16:00:00",
"is_active": true,
"role": null,
"type": "IPv4",
"indicator": "8.8.8.8",
"status": "success",
"message": "",
"validation": [
{
"source": "false_positive",
"message": "Known False Positive",
"name": "Known False Positive"
},
{
"source": "suspicious",
"message": "suspiciously short IP (len: 7)",
"name": "Suspicious IP format / Possible version number"
},
{
"source": "whitelist",
"message": "contained in whitelisted prefix",
"name": "Whitelisted IP"
}
]
}
list_indicator_types¶
List every indicator type usable in OTX pulses, with descriptions. Use this to discover valid indicator_type values for validate_indicator and create_pulse.
No parameters.
Sample output: {}
{
"result": [
{
"name": "IPv4",
"description": "An IPv4 address indicating the online location of a server or other computer.",
"slug": "ip"
},
{
"name": "IPv6",
"description": "An IPv6 address indicating the online location of a server or other computer.",
"slug": "ip"
},
{
"name": "domain",
"description": "A domain name for a website or server. Domains encompass a series of hostnames.",
"slug": "domain"
},
"… 18 more"
]
}
export_indicators¶
Bulk export indicators across all subscribed pulses (feed sync).
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
types |
string[] | no | Indicator type names to include (e.g. ["domain", "IPv4", "FileHash-SHA256"]); omit for all types. | |
limit |
integer | no | 50 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
modified_since |
string | no | ISO 8601 timestamp; only return indicators from pulses modified after this time. |
Pulses¶
get_pulse_details¶
Get full details of an OTX pulse by ID. Includes name, author, description, TLP, tags, references, threat categories (Adversary, Malware, TTPs) and the pulse's indicators.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
pulse_id |
string | yes | 24-character hex pulse ID (from search results, activity feeds, or OTX URLs). |
Sample output: {"pulse_id": "6acce5442679f83db50e1656"}
{
"id": "6acce5442679f83db50e1656",
"name": "HTTP Range in small image (S3#)",
"description": "HTTP range in small image. The goal is to consume server resources. The same IP address may appear more than once a day.",
"author_name": "BotnetExposer",
"modified": "2026-10-12T13:48:52.618000",
"created": "2026-10-12T13:48:52.618000",
"tags": [
"tcp",
"http",
"image",
"… 4 more"
],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "green",
"indicators": [
{
"id": 4523604532,
"indicator": "128.201.103.179",
"type": "IPv4",
"created": "2026-10-12T13:48:53",
"content": "",
"title": "",
"description": "",
"expiration": "2026-11-11T13:00:00",
"is_active": 1
},
{
"id": 3982961287,
"indicator": "128.201.187.217",
"type": "IPv4",
"created": "2026-10-12T13:48:53",
"content": "",
"title": "",
"description": "",
"expiration": "2026-11-11T13:00:00",
"is_active": 1
},
{
"id": 3475435212,
"indicator": "128.201.242.58",
"type": "IPv4",
"created": "2026-10-12T13:48:53",
"content": "",
"title": "",
"description": "",
"expiration": "2026-11-11T13:00:00",
"is_active": 1
},
"… 48 more"
],
"revision": 1,
"groups": [],
"in_group": false,
"author": {
"username": "BotnetExposer",
"id": "80256",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_80256/resized/80/avatar_f1760e796f.png",
"is_subscribed": true,
"is_following": false
},
"is_subscribing": null
}
get_pulse_indicators¶
List the indicators contained in a pulse (paginated).
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
pulse_id |
string | yes | 24-character hex pulse ID. | |
limit |
integer | no | 100 |
Results per page (1-1000). |
page |
integer | no | 1 |
1-based page number. |
include_inactive |
boolean | no | false |
Include indicators the pulse author deactivated. |
Sample output: {"pulse_id": "6acce5442679f83db50e1656", "limit": 3}
{
"results": [
{
"pulse_key": "6acce5442679f83db50e1656",
"id": 4523604532,
"indicator": "128.201.103.179",
"type": "IPv4",
"created": "2026-10-12T13:48:53",
"content": "",
"title": "",
"description": "",
"expiration": "2026-11-11T13:00:00",
"is_active": 1,
"false_positive": {
"assessment": null,
"assessment_date": null,
"report_date": null
},
"slug": "ip"
},
{
"pulse_key": "6acce5442679f83db50e1656",
"id": 3982961287,
"indicator": "128.201.187.217",
"type": "IPv4",
"created": "2026-10-12T13:48:53",
"content": "",
"title": "",
"description": "",
"expiration": "2026-11-11T13:00:00",
"is_active": 1,
"false_positive": {
"assessment": null,
"assessment_date": null,
"report_date": null
},
"slug": "ip"
},
{
"pulse_key": "6acce5442679f83db50e1656",
"id": 3475435212,
"indicator": "128.201.242.58",
"type": "IPv4",
"created": "2026-10-12T13:48:53",
"content": "",
"title": "",
"description": "",
"expiration": "2026-11-11T13:00:00",
"is_active": 1,
"false_positive": {
"assessment": null,
"assessment_date": null,
"report_date": null
},
"slug": "ip"
}
],
"count": 1566,
"previous": null,
"next": "https://otx.alienvault.com/api/v1/pulses/6acce5442679f83db50e1656/indicators?limit=3&page=2"
}
get_related_pulses¶
Get pulses that share indicators (IOCs) with the given pulse.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
pulse_id |
string | yes | 24-character hex pulse ID. | |
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
Sample output: {"pulse_id": "6acce5442679f83db50e1656", "limit": 2}
{
"count": 204,
"results": [
{
"id": "6acc9ed9f4456563f0c565be",
"name": "HTTP Range in small image (S3#)",
"description": "HTTP range in small image. The goal is to consume server resources. The same IP address may appear more than once a day.",
"author_name": "BotnetExposer",
"modified": "2026-10-12T08:48:25.798000",
"created": "2026-10-12T08:48:25.798000",
"tags": [
"tcp",
"http",
"image",
"… 4 more"
],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "green",
"revision": 1,
"groups": [],
"in_group": false,
"author": {
"username": "BotnetExposer",
"id": "80256",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_80256/resized/80/avatar_f1760e796f.png",
"is_subscribed": true,
"is_following": false
},
"is_subscribing": null,
"indicator_count": 1639,
"indicators_note": "Indicators omitted; use get_pulse_indicators for this pulse."
},
{
"id": "6acc58200227829b399ae30f",
"name": "HTTP Range in small image (S3#)",
"description": "HTTP range in small image. The goal is to consume server resources. The same IP address may appear more than once a day.",
"author_name": "BotnetExposer",
"modified": "2026-10-12T03:46:40.134000",
"created": "2026-10-12T03:46:40.134000",
"tags": [
"tcp",
"http",
"image",
"… 4 more"
],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "green",
"revision": 1,
"groups": [],
"in_group": false,
"author": {
"username": "BotnetExposer",
"id": "80256",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_80256/resized/80/avatar_f1760e796f.png",
"is_subscribed": true,
"is_following": false
},
"is_subscribing": null,
"indicator_count": 1362,
"indicators_note": "Indicators omitted; use get_pulse_indicators for this pulse."
}
],
"previous": null,
"next": "https://otx.alienvault.com/api/v1/pulses/6acce5442679f83db50e1656/related?limit=2&page=2"
}
search_related_pulses¶
Find pulses related to a pulse, malware family, or adversary. Pass exactly ONE of pulse_id, malware_family or adversary. For a pulse, returns other pulses sharing some of the same IOCs; for a malware family or adversary, returns pulses tagged with it.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
pulse_id |
string | no | Pulse to find related pulses for. | |
malware_family |
string | no | Malware family name. NOTE: OTX's malware_family filtering is currently unreliable (it returns no results regardless of value); use search_pulses with the family name instead. | |
adversary |
string | no | Adversary name (e.g. "Equation Group"). | |
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
Sample output: {"adversary": "APT28", "limit": 2}
{
"count": 101,
"results": [
{
"id": "5c0065158a36f90c7125d130",
"name": "A BREXIT-themed lure document that delivers ZEKAPAB malware",
"description": "As the United Kingdom (UK) Prime Minister Theresa May announced the initial BREXIT draft agreement with the\nEuropean Union (EU), iDefense analysts identified…",
"author_name": "AlienVault",
"modified": "2018-12-21T16:34:21.621000",
"created": "2018-11-29T22:15:49.025000",
"tags": [
"Zebrocy",
"APT28",
"ZEKAPAB",
"… 3 more"
],
"references": [
"https://www.accenture.com/t20181129T203820Z__w__/us-en/_acnmedia/PDF-90/Accenture-snakemackerel-delivers-zekapab-malware.pdf#zoom=50",
"https://www.vkremez.com/2018/12/lets-learn-dissecting-apt28sofacy.html"
],
"public": 1,
"adversary": "APT28",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "white",
"revision": 3,
"groups": [],
"in_group": false,
"author": {
"username": "AlienVault",
"id": "2",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_2/resized/80/avatar_dacfad0ca8.png",
"is_subscribed": true,
"is_following": false
},
"is_subscribing": null,
"indicator_count": 13,
"indicators_note": "Indicators omitted; use get_pulse_indicators for this pulse."
},
{
"id": "5f3581cc4138be1d82c183b8",
"name": "Russian GRU 85th GTsSS Deploys Previously Undisclosed Drovorub Malware",
"description": "Drovorub is a Linux malware toolset consisting of an implant coupled with a kernel module rootkit, a file transfer and port forwarding tool, and a Command an…",
"author_name": "AlienVault",
"modified": "2020-09-12T00:01:57.830000",
"created": "2020-08-13T18:09:16.421000",
"tags": [
"Fancy Bear",
"APT28",
"Strontium",
"… 1 more"
],
"references": [
"https://media.defense.gov/2020/Aug/13/2002476465/-1/-1/0/CSA_DROVORUB_RUSSIAN_GRU_MALWARE_AUG_2020.PDF"
],
"public": 1,
"adversary": "APT28",
"targeted_countries": [],
"malware_families": [
"Drovorub",
"Drovorub-server",
"Drovorub-client",
"… 1 more"
],
"attack_ids": [
"T1014",
"T1041",
"T1059",
"… 2 more"
],
"industries": [],
"TLP": "white",
"revision": 1,
"groups": [],
"in_group": false,
"author": {
"username": "AlienVault",
"id": "2",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_2/resized/80/avatar_dacfad0ca8.png",
"is_subscribed": true,
"is_following": false
},
"is_subscribing": null,
"indicator_count": 4,
"indicators_note": "Indicators omitted; use get_pulse_indicators for this pulse."
}
],
"previous": null,
"next": "https://otx.alienvault.com/api/v1/pulses/related?adversary=APT28&limit=2&page=2"
}
list_pulse_activity¶
List the latest pulses across the whole OTX community.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
modified_since |
string | no | ISO 8601 timestamp cutoff. |
Sample output: {"limit": 2}
{
"count": 239073,
"results": [
{
"id": "6acce5442679f83db50e1656",
"name": "HTTP Range in small image (S3#)",
"description": "HTTP range in small image. The goal is to consume server resources. The same IP address may appear more than once a day.",
"author_name": "BotnetExposer",
"modified": "2026-10-12T13:48:52.618000",
"created": "2026-10-12T13:48:52.618000",
"tags": [],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "green",
"revision": 1,
"groups": [],
"in_group": false,
"author": {
"username": "BotnetExposer",
"id": "80256",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_80256/resized/80/avatar_f1760e796f.png",
"is_subscribed": true,
"is_following": false
},
"is_subscribing": null,
"indicator_count": 1566,
"indicators_note": "Indicators omitted; use get_pulse_indicators for this pulse."
},
{
"id": "6acce52f45b5135f141b4c95",
"name": "Open an aggressive number of TCP connections (S3#)",
"description": "Open of agressive number of TCP connections. The goal is to consume server resources. The same IP address may appear more than once a day.",
"author_name": "BotnetExposer",
"modified": "2026-10-12T13:48:31.836000",
"created": "2026-10-12T13:48:31.836000",
"tags": [],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "green",
"revision": 1,
"groups": [],
"in_group": false,
"author": {
"username": "BotnetExposer",
"id": "80256",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_80256/resized/80/avatar_f1760e796f.png",
"is_subscribed": true,
"is_following": false
},
"is_subscribing": null,
"indicator_count": 3,
"indicators_note": "Indicators omitted; use get_pulse_indicators for this pulse."
}
],
"previous": null,
"next": "https://otx.alienvault.com/api/v1/pulses/activity?limit=2&page=2"
}
list_subscribed_pulses¶
List pulses from your OTX subscriptions. Includes pulses you subscribed to, pulses from users and groups you follow, and pulses you created.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
modified_since |
string | no | ISO 8601 timestamp; only pulses created or modified after this time. |
get_subscribed_pulse_ids¶
Get just the IDs of your subscribed pulses (lightweight sync).
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
limit |
integer | no | 500 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
get_pulse_events¶
List events from your subscription stream (pulse lifecycle changes). Useful for incremental sync: each event carries an action field (e.g. remove_pulse) naming what happened to which pulse.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
modified_since |
string | no | ISO 8601 timestamp cutoff. |
create_pulse¶
Write tool
Only available with --read-write. It changes your OTX account.
Create a new OTX pulse owned by the authenticated user. Validate indicators with validate_indicator first. Each indicator is {"type":
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
name |
string | yes | Pulse title. | |
description |
string | no | "" |
Markdown description of the threat. |
public |
boolean | no | false |
Whether the pulse is publicly visible. |
tlp |
string | no | "amber" |
TLP marking: white, green, amber or red. |
tags |
string[] | no | Threat tags (e.g. ["malware", "rat"]). | |
references |
string[] | no | Reference URLs. | |
indicators |
object[] | no | Indicators to include; see validate_indicator. |
subscribe_pulse¶
Write tool
Only available with --read-write. It changes your OTX account.
Subscribe to a pulse so its indicators enter your feeds.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
pulse_id |
string | yes |
unsubscribe_pulse¶
Write tool
Only available with --read-write. It changes your OTX account.
Unsubscribe from a pulse.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
pulse_id |
string | yes |
Users¶
get_user¶
Get an OTX user's profile.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
username |
string | yes | OTX username. | |
detailed |
boolean | no | true |
Include the user's recent pulses in the response. |
Sample output: {"username": "AlienVault", "detailed": false}
{
"subscriber_count": 408529,
"follower_count": 6668,
"member_since": "4259 days ago ",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_2/resized/80/avatar_dacfad0ca8.png",
"award_count": 0,
"user_id": 2,
"username": "AlienVault",
"indicator_count": 558541,
"pulse_count": 9203
}
list_user_pulses¶
List pulses authored by a specific OTX user.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
username |
string | yes | OTX username. | |
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
Sample output: {"username": "AlienVault", "limit": 2}
{
"count": 9203,
"results": [
{
"id": "6ac8a46214e2077a0bfe7409",
"name": "NEBULA: Seven Fake AI SDK Packages on npm Install a Windows RAT That Needs No DLL",
"description": "In late September 2026, an actor deployed seven malicious npm packages masquerading as a NebulaAI software development kit to deliver a Windows remote-access…",
"modified": "2026-10-09T08:26:24.879000",
"created": "2026-10-09T08:22:58.387000",
"tags": [],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "white",
"cloned_from": null,
"export_count": 0,
"upvotes_count": 0,
"downvotes_count": 0,
"votes_count": 0,
"locked": false,
"pulse_source": "api",
"validator_count": 0,
"comment_count": 0,
"follower_count": 0,
"vote": 0,
"author": {
"username": "AlienVault",
"id": "2",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_2/resized/80/avatar_dacfad0ca8.png",
"is_subscribed": true,
"is_following": false
},
"indicator_type_counts": {
"FileHash-SHA256": 4,
"IPv4": 1,
"URL": 1,
"domain": 2,
"hostname": 1
},
"indicator_count": 9,
"is_author": false,
"is_subscribing": null,
"subscriber_count": 408529,
"modified_text": "3 days ago ",
"is_modified": false,
"groups": [],
"in_group": false,
"threat_hunter_scannable": true,
"threat_hunter_has_agents": 1
},
{
"id": "6ac8a22f8d0ad1ea5f056ddc",
"name": "Unknown Threat Actor Uses AI-Driven ARTEX to Target South Korean Finance",
"description": "An unidentified threat actor, likely Chinese-speaking and financially motivated, conducted targeted attacks against South Korean financial institutions betwe…",
"modified": "2026-10-09T08:19:50.747000",
"created": "2026-10-09T08:13:35.684000",
"tags": [],
"references": [],
"public": 1,
"adversary": "",
"targeted_countries": [],
"malware_families": [],
"attack_ids": [],
"industries": [],
"TLP": "white",
"cloned_from": null,
"export_count": 0,
"upvotes_count": 0,
"downvotes_count": 0,
"votes_count": 0,
"locked": false,
"pulse_source": "api",
"validator_count": 0,
"comment_count": 0,
"follower_count": 0,
"vote": 0,
"author": {
"username": "AlienVault",
"id": "2",
"avatar_url": "/otxapi/users/avatar_image/media/avatars/user_2/resized/80/avatar_dacfad0ca8.png",
"is_subscribed": true,
"is_following": false
},
"indicator_type_counts": {
"IPv4": 10,
"domain": 1
},
"indicator_count": 11,
"is_author": false,
"is_subscribing": null,
"subscriber_count": 408529,
"modified_text": "3 days ago ",
"is_modified": true,
"groups": [],
"in_group": false,
"threat_hunter_scannable": true,
"threat_hunter_has_agents": 1
}
],
"previous": null,
"next": "https://otx.alienvault.com/api/v1/pulses/user/AlienVault?limit=2&page=2"
}
get_current_user¶
Get the authenticated user's own OTX profile (whoami). Handy to confirm which account the API key belongs to.
No parameters.
list_my_pulses¶
List pulses authored by the authenticated user (your own pulses).
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
subscribe_user¶
Write tool
Only available with --read-write. It changes your OTX account.
Subscribe to a user; their pulses enter your subscribed feed.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
username |
string | yes |
unsubscribe_user¶
Write tool
Only available with --read-write. It changes your OTX account.
Unsubscribe from a user.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
username |
string | yes |
follow_user¶
Write tool
Only available with --read-write. It changes your OTX account.
Follow a user (their activity shows in your OTX dashboard).
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
username |
string | yes |
unfollow_user¶
Write tool
Only available with --read-write. It changes your OTX account.
Unfollow a user.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
username |
string | yes |
Submissions¶
list_submitted_urls¶
List URLs previously submitted for analysis by your account.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
list_submitted_files¶
List files previously submitted for analysis by your account.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
limit |
integer | no | 10 |
Results per page (1-500). |
page |
integer | no | 1 |
1-based page number. |
submit_url¶
Write tool
Only available with --read-write. It changes your OTX account.
Submit a URL to OTX for analysis. OTX will visit the URL and analyze returned content. Results appear via get_indicator_details with indicator_type "url".
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
url |
string | yes | The URL to analyze. | |
tlp |
string | no | "amber" |
TLP marking for the submission: white, green, amber or red. |
submit_urls¶
Write tool
Only available with --read-write. It changes your OTX account.
Submit multiple URLs to OTX for bulk analysis.
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
urls |
string[] | yes | URLs to analyze. | |
tlp |
string | no | "amber" |
TLP marking for the submissions: white, green, amber or red. |