Skip to main content

Official Python client for the Mallory threat intelligence API

Project description

malloryapi

Official Python client for the Mallory threat intelligence API.

Installation

pip install malloryapi
# or
uv add malloryapi

Quick Start

from malloryapi import MalloryApi

client = MalloryApi(api_key="your-api-key")

# List recent vulnerabilities
vulns = client.vulnerabilities.list(limit=10)
for v in vulns:
    print(v["cve_id"], v.get("cvss_base_score"))

# Get a specific vulnerability
vuln = client.vulnerabilities.get("CVE-2024-1234")

# Trending threat actors (last 7 days)
actors = client.threat_actors.trending(period="7d")

Authentication

Pass your API key directly or set the MALLORY_API_KEY environment variable:

# Explicit
client = MalloryApi(api_key="sk-...")

# From environment
import os
os.environ["MALLORY_API_KEY"] = "sk-..."
client = MalloryApi()

Async Support

from malloryapi import AsyncMalloryApi

async with AsyncMalloryApi(api_key="sk-...") as client:
    vulns = await client.vulnerabilities.list(limit=10)
    actor = await client.threat_actors.get("apt28-uuid")

Resources

Entities

Resource Accessor Key Methods
Vulnerabilities client.vulnerabilities list, get, trending, exploited, export, exploits, mentions, products, observables
Threat Actors client.threat_actors list, get, trending, export, mentions, observables, attack_patterns
Malware client.malware list, get, trending, export, mentions, observables, vulnerabilities, attack_patterns
Exploits client.exploits list, get, export, vulnerabilities
Exploitations client.exploitations list, get
Organizations client.organizations list, get, trending, export, mentions, products, breaches
Products client.products list, get, trending, search, export, advisories, mentions
Attack Patterns client.attack_patterns list, get, trending, mentions, threat_actors, malware
Breaches client.breaches list, get, organizations
Detection Signatures client.detection_signatures list, get
Advisories client.advisories list, get, export, products, vulnerabilities
Weaknesses client.weaknesses list, get

Content

Resource Accessor Key Methods
Stories client.stories list, get, topics, references, events, similar, entities, export
References client.references list, get, create, labels, entities, threat_actors, vulnerabilities
Sources client.sources list, statistics
Content Chunks client.content_chunks list, get, search

Analytics

Resource Accessor Key Methods
Mentions client.mentions list, actors, vulnerabilities
Search client.search query

Pagination

All list methods return a PaginatedResponse with .items, .total, .offset, .limit, and .has_more:

page = client.vulnerabilities.list(offset=0, limit=50)
print(f"Showing {len(page)} of {page.total}")

if page.has_more:
    next_page = client.vulnerabilities.list(offset=50, limit=50)

Auto-pagination

Iterate over all results automatically:

from malloryapi import paginate_sync

for vuln in paginate_sync(client.vulnerabilities.list, limit=100):
    print(vuln["cve_id"])

Async version:

from malloryapi import paginate_async

async for vuln in paginate_async(client.vulnerabilities.list):
    print(vuln["cve_id"])

Trending

Entities with trending support accept a period parameter ("1d", "7d", or "30d"):

# Trending vulnerabilities over the last 30 days
vulns = client.vulnerabilities.trending(period="30d")

# Trending threat actors (defaults to 7 days)
actors = client.threat_actors.trending()

Error Handling

from malloryapi import MalloryApi, NotFoundError, AuthenticationError

client = MalloryApi(api_key="sk-...")

try:
    vuln = client.vulnerabilities.get("CVE-9999-0000")
except NotFoundError:
    print("Vulnerability not found")
except AuthenticationError:
    print("Invalid API key")

All exceptions inherit from APIError and include status_code and response_body attributes.

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

malloryapi-0.1.0.tar.gz (26.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

malloryapi-0.1.0-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file malloryapi-0.1.0.tar.gz.

File metadata

  • Download URL: malloryapi-0.1.0.tar.gz
  • Upload date:
  • Size: 26.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for malloryapi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3952af83525adeb6060d98518366a66d1c6d91bbbc300f9e2064fd6fa42034a0
MD5 279f6f362c795feff96370d4bfad3ad2
BLAKE2b-256 80d84b94786c3cd6d005e34b9dcb432ceaa7769a1faf2e932a0c13100ec93fc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for malloryapi-0.1.0.tar.gz:

Publisher: publish.yml on malloryai/malloryapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file malloryapi-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: malloryapi-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for malloryapi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca90e6672a8f1dfb9525fe6d59da2114139dbd3030282d2362123e196fb919e6
MD5 0d3927bc0721de45dd0e1ca788c5478d
BLAKE2b-256 65885b2567763f1bfb7ecdd83f5b341a16f1b0e75a8cb681d1ed6d8ad0393a5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for malloryapi-0.1.0-py3-none-any.whl:

Publisher: publish.yml on malloryai/malloryapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page