Download OpenAPI specification:
API for querying PrecisionSec threat intelligence including malware samples, malicious URLs, domains, and IP addresses. Provides access to threat feeds and IOC (Indicator of Compromise) lookups.
To request an API key, please contact info@precisionsec.com.
Serves the free ClickFix lure domain feed from the last 60 days, queried live. Domains are lowercased, de-duplicated, and allowlisted domains are excluded.
{- "domains": [
- {
- "domain": "example-lure.com",
- "detection_date": 1756339200
}
]
}Retrieve sample information by MD5 hash, including the PE imphash and any extracted malware configs
| md5 required | string Example: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 MD5 hash of the sample |
{- "first_seen": 1633046400,
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "sample_download_available": true,
- "tags": [
- "ransomware"
], - "magic": "PE32 executable for MS Windows",
- "campaign_id": "campaign123",
- "botnet_id": "botnet456",
- "imphash": "f34d5f2d4577ed6d9ceec516c1f5a744",
- "distribution_urls": [
], - "malware_configs": [
- {
- "family": "agenttesla",
- "detection_date": 1633046400,
- "config_md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "config": { }
}
]
}Retrieve sample information by SHA256 hash, including the PE imphash and any extracted malware configs
| sha256 required | string Example: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6 SHA256 hash of the sample |
{- "first_seen": 1633046400,
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "sample_download_available": true,
- "tags": [
- "ransomware"
], - "magic": "PE32 executable for MS Windows",
- "campaign_id": "campaign123",
- "botnet_id": "botnet456",
- "imphash": "f34d5f2d4577ed6d9ceec516c1f5a744",
- "distribution_urls": [
], - "malware_configs": [
- {
- "family": "agenttesla",
- "detection_date": 1633046400,
- "config_md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "config": { }
}
]
}Retrieve samples associated with a specific botnet ID
| botnet_id required | string Example: botnet456 Botnet ID to search for |
{- "samples": [
- {
- "first_seen": 1633046400,
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "tags": [
- "botnet"
], - "magic": "PE32 executable for MS Windows",
- "campaign_id": "campaign123",
- "botnet_id": "botnet456",
- "imphash": "f34d5f2d4577ed6d9ceec516c1f5a744"
}
], - "result": "No result"
}Retrieve up to the newest 1000 samples sharing a PE import hash
| imphash required | string^[0-9a-fA-F]{32}$ Example: f34d5f2d4577ed6d9ceec516c1f5a744 PE imphash to search for |
{- "samples": [
- {
- "first_seen": 1633046400,
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "tags": [
- "botnet"
], - "magic": "PE32 executable for MS Windows",
- "campaign_id": "campaign123",
- "botnet_id": "botnet456",
- "imphash": "f34d5f2d4577ed6d9ceec516c1f5a744"
}
], - "result": "No result"
}Retrieve information about a domain, including associated samples and resolutions
| domain required | string Example: malicious.example.com Domain name to lookup |
{- "domain": "malicious.example.com",
- "first_seen": 1633046400,
- "tags": [
- "phishing"
], - "communicating_samples": [
- {
- "detection_date": 1633046400,
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "tags": [
- "trojan"
]
}
], - "resolutions": [
- {
- "ip": "192.168.1.1",
- "last_seen": 1633046400,
- "first_seen": 1632960000
}
]
}Retrieve every observed domain relationship for an IPv4 address, including all known domain classification tags.
| ip required | string <ipv4> Example: 192.168.1.1 |
{- "ip": "192.168.1.1",
- "passive_dns": [
- {
- "domain": "malicious.example.com",
- "first_seen": 1632960000,
- "last_seen": 1633046400,
- "tags": [
- "phishing",
- "malware"
]
}
]
}Retrieve every observed IPv4 relationship for a domain, including each IP's classification tag.
| domain required | string Example: malicious.example.com |
{- "domain": "malicious.example.com",
- "passive_dns": [
- {
- "ip": "192.168.1.1",
- "first_seen": 1632960000,
- "last_seen": 1633046400,
- "tags": [
- "c2"
], - "allowlisted": false
}
]
}Retrieve information about a URL, including its detection date and associated tags
| url required | string Example: http://malicious.example.com/malware.exe URL to lookup |
{- "detection_date": 1633046400,
- "tags": [
- "c2"
], - "distributed_samples": [
- {
- "detection_date": 1633046400,
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "magic": "PE32 executable (GUI) Intel 80386, for MS Windows",
- "tags": [
- "stealer"
]
}
], - "communicating_samples": [
- {
- "detection_date": 1633046400,
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "tags": [
- "trojan"
]
}
], - "result": "No result"
}Retrieve information about an IPv4 address, including associated samples, passive DNS, and detected URLs
| ip required | string Example: 192.168.1.1 IPv4 address to lookup |
{- "ip": "192.168.1.1",
- "first_seen": 1633046400,
- "tags": [
- "c2"
], - "allowlisted": false,
- "confidence": "high",
- "communicating_samples": [
- {
- "detection_date": 1633046400,
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "tags": [
- "trojan"
]
}
], - "passive_dns": [
- {
- "last_seen": 1633046400,
- "first_seen": 1632960000,
- "domain": "malicious.example.com"
}
], - "detected_urls": [
]
}Check if a list of IPv4 addresses exist in the database
[- "192.168.1.1"
]{- "results": {
- "192.168.1.1": 1,
- "192.168.1.2": 0
}
}Look up many indicators in one request. Returns a verdict, tags and first-seen time per indicator. For full enrichment (samples, passive DNS, ...) call the single-indicator endpoints for the indicators that matter.
At most 1000 items (ips + domains + urls combined) per request. Invalid items
are reported under errors and do not fail the request.
Rate limits: this endpoint has its own limits, applied per API key and counted
in indicators rather than requests: 2,000 indicators per minute and 20,000 per day.
A request is charged one unit per IP, domain and URL it contains, so a 1,000-item
request uses 1,000 units. These limits replace the default per-request limits
that apply to other endpoints. When a limit is exceeded the API returns 429.
| ips | Array of strings |
| domains | Array of strings |
| urls | Array of strings |
{- "ips": [
- "1.2.3.4"
], - "domains": [
- "evil.example"
],
}{- "ips": {
- "property1": {
- "malicious": true,
- "tags": [
- "string"
], - "first_seen": 0,
- "allowlisted": true,
- "confidence": "string",
- "allowlist_source": "string"
}, - "property2": {
- "malicious": true,
- "tags": [
- "string"
], - "first_seen": 0,
- "allowlisted": true,
- "confidence": "string",
- "allowlist_source": "string"
}
}, - "domains": {
- "property1": {
- "malicious": true,
- "tags": [
- "string"
], - "first_seen": 0,
- "allowlisted": true,
- "confidence": "string",
- "allowlist_source": "string"
}, - "property2": {
- "malicious": true,
- "tags": [
- "string"
], - "first_seen": 0,
- "allowlisted": true,
- "confidence": "string",
- "allowlist_source": "string"
}
}, - "urls": {
- "property1": {
- "malicious": true,
- "tags": [
- "string"
], - "first_seen": 0,
- "allowlisted": true,
- "confidence": "string",
- "allowlist_source": "string"
}, - "property2": {
- "malicious": true,
- "tags": [
- "string"
], - "first_seen": 0,
- "allowlisted": true,
- "confidence": "string",
- "allowlist_source": "string"
}
}, - "errors": {
- "ips": {
- "not-an-ip": "Invalid IPv4 address"
}
}
}Retrieve JA3/JA4 fingerprints and X.509 certificates observed for a sample by MD5 hash
| md5 required | string Example: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 MD5 hash of the sample |
{- "tls_fingerprints": [
- {
- "kind": "ja3",
- "hash": "a0e9f5d64349fb13191bc781f81f42e1",
- "sni": "c2.example.com",
- "dest_ip": "192.168.1.1",
- "dest_port": 443,
- "observed_at": 1633046400
}
], - "tls_certificates": [
- {
- "cert_fingerprint": "5ba765b8b66d1cd51d34725d9082f534fa82be2",
- "subject": "CN=AsyncRAT Server CA",
- "issuerdn": "CN=AsyncRAT Server CA",
- "serial": "01:FC:68:FD",
- "not_before": 1633046400,
- "not_after": 1664582400,
- "sni": "c2.example.com",
- "dest_ip": "192.168.1.1",
- "dest_port": 443,
- "dn_attributes": [
- {
- "side": "issuer",
- "attribute": "O",
- "value": "DigiCert Inc"
}
]
}
]
}Retrieve X.509 certificates observed at a destination IPv4 address, via the cert<->IP association -- covers every source (Suricata/CAPE, Shodan, and the active scanner alike), not only certificates that also happened to touch a sample.
| ip required | string Example: 192.168.1.1 IPv4 address to lookup |
{- "tls_certificates": [
- {
- "cert_fingerprint": "5ba765b8b66d1cd51d34725d9082f534fa82be2",
- "subject": "CN=AsyncRAT Server CA",
- "issuerdn": "CN=AsyncRAT Server CA",
- "serial": "01:FC:68:FD",
- "not_before": 1633046400,
- "not_after": 1664582400,
- "sni": "c2.example.com",
- "dest_ip": "192.168.1.1",
- "dest_port": 443,
- "dn_attributes": [
- {
- "side": "issuer",
- "attribute": "O",
- "value": "DigiCert Inc"
}
]
}
]
}Retrieve samples sharing a given JA3/JA3S/JA4 TLS fingerprint
| kind required | string Enum: "ja3" "ja3s" "ja4" Example: ja3 Fingerprint kind |
| hash required | string Example: a0e9f5d64349fb13191bc781f81f42e1 Fingerprint hash value |
{- "samples": [
- {
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "tags": [
- "asyncrat"
], - "detection_date": 1633046400
}
]
}Retrieve certificate detail and samples that presented a given X.509 certificate (by SHA1 fingerprint)
| cert_fingerprint required | string Example: 5ba765b8b66d1cd51d34725d9082f534fa82be2 SHA1 fingerprint of the certificate, lowercase, no colons |
{- "certificate": {
- "cert_fingerprint": "5ba765b8b66d1cd51d34725d9082f534fa82be2",
- "subject": "CN=AsyncRAT Server CA",
- "issuerdn": "CN=AsyncRAT Server CA",
- "serial": "01:FC:68:FD",
- "not_before": 1633046400,
- "not_after": 1664582400,
- "sni": "c2.example.com",
- "dest_ip": "192.168.1.1",
- "dest_port": 443,
- "dn_attributes": [
- {
- "side": "issuer",
- "attribute": "O",
- "value": "DigiCert Inc"
}
]
}, - "samples": [
- {
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "tags": [
- "asyncrat"
], - "detection_date": 1633046400
}
], - "ips": [
- {
- "cert_fingerprint": "5ba765b8b66d1cd51d34725d9082f534fa82be2",
- "ip": "164.152.167.222",
- "dest_port": 443,
- "first_seen": 1633046400
}
]
}Retrieve certificates carrying a matching Distinguished Name attribute (e.g. issuer O=DigiCert Inc), plus samples that presented any of them. Certificates are looked up independent of any sample -- a Shodan/active-scan-only certificate with this attribute is still returned even with an empty samples list.
| side required | string Enum: "subject" "issuer" Example: issuer DN side to match |
| attribute required | string Example: O DN attribute name (e.g. CN, O, OU, C, ST, L) |
| value required | string Example: DigiCert Inc DN attribute value |
{- "certificates": [
- {
- "cert_fingerprint": "5ba765b8b66d1cd51d34725d9082f534fa82be2",
- "subject": "CN=AsyncRAT Server CA",
- "issuerdn": "CN=AsyncRAT Server CA",
- "serial": "01:FC:68:FD",
- "not_before": 1633046400,
- "not_after": 1664582400,
- "sni": "c2.example.com",
- "dest_ip": "192.168.1.1",
- "dest_port": 443,
- "dn_attributes": [
- {
- "side": "issuer",
- "attribute": "O",
- "value": "DigiCert Inc"
}
]
}
], - "samples": [
- {
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6",
- "tags": [
- "asyncrat"
], - "detection_date": 1633046400
}
], - "ips": [
- {
- "cert_fingerprint": "5ba765b8b66d1cd51d34725d9082f534fa82be2",
- "ip": "164.152.167.222",
- "dest_port": 443,
- "first_seen": 1633046400
}
]
}Get all Indicators of Compromise (IOCs) associated with a specific tag. Allowlisted (CDN/cloud) IPs are excluded.
| tag required | string Example: ransomware Tag to lookup |
{- "ips": [
- "192.168.1.1"
], - "domains": [
- "malicious.example.com"
], - "samples": [
- {
- "md5": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
- "sha256": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6"
}
]
}