Skip to main content

Entities API

The Entities API allows you to manage and retrieve information about your organization's entities and their associated assets.

info

This API endpoint is available for enterprise accounts only.

Get All Entities

List all entities associated with your account.

HTTP Request

GET https://fullhunt.io/api/v1/enterprise/entities

Query Parameters

ParameterRequiredTypeDescription
orgNostringFilter entities by organization ID

Example Request

curl "https://fullhunt.io/api/v1/enterprise/entities" \
-H "X-API-KEY: xxxx-xxxx-xxxx-xxxxxx"

Example Response

[
{
"asset": "kaspersky.com",
"type": "domain"
},
{
"asset": "185.85.15.0/24",
"type": "ip-range"
}
]

Response Fields

FieldTypeDescription
assetstringThe asset identifier (domain, IP range, etc.)
typestringType of entity (domain, ip-range, asn, etc.)

Get Assets of an Entity

Retrieve all assets associated with a specific entity.

HTTP Request

GET https://fullhunt.io/api/v1/enterprise/assets

Query Parameters

ParameterRequiredTypeDescription
entityYesstringEntity name to retrieve assets for

Example Request

curl "https://fullhunt.io/api/v1/enterprise/assets?entity=kaspersky.com" \
-H "X-API-KEY: xxxx-xxxx-xxxx-xxxxxx"

Example Response

[
{
"asset_score": 95,
"asset_score_reason": ["delegated-cname-record"],
"categories": [
"Web-Development-Frameworks",
"Web-Servers",
"Cloud-Services"
],
"cdn": "",
"cert_object": {
"dns_names": ["cybermap.kaspersky.com"],
"email_addresses": null,
"ip_addresses": [],
"is_valid_hostname": true,
"issuer_common_name": "GlobalSign RSA OV SSL CA 2018",
"issuer_country": "BE",
"issuer_organization": "GlobalSign nv-sa",
"issuer_serial_number": "",
"issuer_string": "CN=GlobalSign RSA OV SSL CA 2018,O=GlobalSign nv-sa,C=BE",
"md5_fingerprint": "48:DF:CD:CB:D1:F2:82:05:1E:A6:53:78:8E:49:01:74",
"not_after": "03-08-2025 12:01:01",
"not_before": "02-07-2024 12:01:02",
"remote_ip_address": "185.54.223.252:443",
"sha1_fingerprint": "9C:B9:F7:80:23:9C:85:66:3E:C7:6E:C4:C3:50:5E:5E:79:BC:A4:95",
"sha256_fingerprint": "10:CE:13:BD:FF:EB:5F:F0:AC:65:4B:DF:FB:D8:70:13:55:A9:5B:7B:33:23:5B:A9:D8:C3:F5:7E:F2:CE:00:B0",
"signature_algorithm": "SHA256-RSA",
"subject_common_name": "cybermap.kaspersky.com",
"subject_country": "CH",
"subject_locality": "Zürich",
"subject_organization": "Kaspersky Lab Switzerland GmbH",
"subject_province": "Zürich"
},
"cloud": {
"provider": "",
"region": ""
},
"dns": {
"a": ["185.54.223.252"],
"aaaa": null,
"cname": [
"cybermap-kaspersky-com.sm.kaspersky.com.",
"cybermap-kaspersky-com-prod.sm.kaspersky.com."
],
"mx": null,
"ns": [],
"ptr": null,
"txt": null
},
"domain": "kaspersky.com",
"has_ipv6": false,
"has_private_ip": false,
"host": "cybermap.kaspersky.com",
"http_status_code": null,
"http_title": "MAP | Kaspersky Cyberthreat live map",
"ip_address": "185.54.223.252",
"ip_metadata": {
"asn": 200107,
"city_name": "",
"country_code": "GB",
"country_name": "United Kingdom",
"isp": "Kaspersky Lab Switzerland GmbH",
"location_latitude": 51.4964,
"location_longitude": -0.1224,
"organization": "Kaspersky Lab Switzerland GmbH",
"postal_code": "",
"region": ""
},
"is_cdn": false,
"is_cloud": false,
"is_cloudflare": false,
"is_live": true,
"is_resolvable": true,
"network_ports": [443, 80],
"products": ["Laravel", "nginx", "Amazon-CloudFront"],
"tags": [
"cname",
"https",
"laravel",
"nginx",
"amazon-cloudfront",
"web-development-frameworks",
"web-servers",
"cloud-services",
"http"
],
"tld": "com",
"urls": [
"https://cybermap.kaspersky.com/stats",
"https://cybermap.kaspersky.com/js/map.js?id=b22034f86b2e0e17052c435bbbf7c843",
"https://cybermap.kaspersky.com/tos",
"https://cybermap.kaspersky.com/fr",
"https://cybermap.kaspersky.com/subsystems"
]
}
]

Integration Example

import requests

def get_entity_overview(api_key):
"""Get overview of all entities and their asset counts."""

# Get all entities
entities_url = "https://fullhunt.io/api/v1/enterprise/entities"
headers = {"X-API-KEY": api_key}

response = requests.get(entities_url, headers=headers)

if response.status_code == 200:
entities = response.json()

print("📋 Entity Overview")
print("=" * 40)

total_assets = 0

for entity in entities:
entity_name = entity['asset']
entity_type = entity['type']

# Get assets for this entity
assets_url = "https://fullhunt.io/api/v1/enterprise/assets"
params = {"entity": entity_name}

assets_response = requests.get(assets_url, headers=headers, params=params)

if assets_response.status_code == 200:
assets = assets_response.json()
asset_count = len(assets)
total_assets += asset_count

# Calculate average asset score
scores = [asset.get('asset_score', 0) for asset in assets if asset.get('asset_score')]
avg_score = sum(scores) / len(scores) if scores else 0

print(f"\n{entity_name} ({entity_type})")
print(f" Assets: {asset_count}")
print(f" Avg Score: {avg_score:.1f}")

# Show high-risk assets
high_risk = [a for a in assets if a.get('asset_score', 0) > 90]
if high_risk:
print(f" ⚠️ High-risk assets: {len(high_risk)}")
for asset in high_risk[:3]: # Show top 3
print(f" - {asset['host']} (score: {asset['asset_score']})")

print(f"\nTotal Assets: {total_assets}")

return entities
else:
print(f"Error: {response.status_code}")
return None

def monitor_high_risk_assets(api_key, threshold=85):
"""Monitor assets with high risk scores."""

entities_url = "https://fullhunt.io/api/v1/enterprise/entities"
headers = {"X-API-KEY": api_key}

response = requests.get(entities_url, headers=headers)

if response.status_code == 200:
entities = response.json()
high_risk_assets = []

for entity in entities:
assets_url = "https://fullhunt.io/api/v1/enterprise/assets"
params = {"entity": entity['asset']}

assets_response = requests.get(assets_url, headers=headers, params=params)

if assets_response.status_code == 200:
assets = assets_response.json()

for asset in assets:
score = asset.get('asset_score', 0)
if score >= threshold:
high_risk_assets.append({
'entity': entity['asset'],
'host': asset['host'],
'score': score,
'reasons': asset.get('asset_score_reason', []),
'products': asset.get('products', []),
'ports': asset.get('network_ports', [])
})

# Sort by score (highest first)
high_risk_assets.sort(key=lambda x: x['score'], reverse=True)

print(f"🚨 High-Risk Assets (Score >= {threshold})")
print("=" * 50)

for asset in high_risk_assets:
print(f"\n{asset['host']} (Score: {asset['score']})")
print(f" Entity: {asset['entity']}")
print(f" Reasons: {', '.join(asset['reasons'])}")

if asset['products']:
print(f" Products: {', '.join(asset['products'][:3])}")

if asset['ports']:
print(f" Open Ports: {', '.join(map(str, asset['ports'][:5]))}")

return high_risk_assets
else:
print(f"Error: {response.status_code}")
return None

# Usage
api_key = "your-api-key-here"
entities = get_entity_overview(api_key)
high_risk = monitor_high_risk_assets(api_key, threshold=90)

Use Cases

Asset Discovery

  • Discover all digital assets associated with your domains
  • Find shadow IT and forgotten infrastructure
  • Map your complete attack surface

Risk Assessment

  • Identify high-risk assets requiring immediate attention
  • Monitor asset scores over time
  • Prioritize security efforts based on exposure levels

Compliance Monitoring

  • Ensure all organizational assets are properly inventoried
  • Monitor certificate expiration dates
  • Track security configuration changes

Threat Intelligence

  • Identify potential attack vectors
  • Monitor for new exposures
  • Track technology adoption across your infrastructure

Rate Limiting

  • Rate limit: 60 requests per minute
  • Large asset inventories may require multiple API calls
  • Use organization filtering to focus on specific entities