{"library":"stix2","title":"STIX 2 Python Library","type":"library","description":"The stix2 Python library provides APIs for serializing and de-serializing STIX 2 JSON content, enabling users to produce, consume, and process cyber threat intelligence. It supports multiple versions of the STIX 2 Technical Specification, currently STIX 2.1. The library, currently at version 3.0.2, is actively maintained by the OASIS Cyber Threat Intelligence (CTI) Technical Committee, with releases typically driven by STIX specification updates and bug fixes.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install stix2"],"cli":null},"imports":["from stix2 import Indicator","from stix2 import parse","from stix2 import serialize","from stix2 import v21\nobj = v21.Indicator()"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":"https://oasis-open.github.io/cti-documentation/","github":"https://github.com/oasis-open/cti-python-stix2","docs":"https://stix2.readthedocs.io/","changelog":null,"pypi":"https://pypi.org/project/stix2/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"from stix2 import Indicator, parse, serialize\nfrom datetime import datetime, timezone\n\n# Create a STIX Indicator object\nindicator = Indicator(\n    name=\"File hash for malware variant\",\n    indicator_types=[\"malicious-activity\"],\n    pattern_type=\"stix\",\n    pattern=\"[file:hashes.md5 = 'd41d8cd98f00b204e9800998ecf8427e']\",\n    valid_from=datetime.now(timezone.utc)\n)\n\n# Serialize the STIX object to JSON\nserialized_indicator = serialize(indicator, pretty=True)\nprint(\"\\nSerialized Indicator:\")\nprint(serialized_indicator)\n\n# Parse a STIX JSON string back into a Python object\njson_string = '''{\n    \"type\": \"indicator\",\n    \"spec_version\": \"2.1\",\n    \"id\": \"indicator--dbcbd659-c927-4f9a-994f-0a2632274394\",\n    \"created\": \"2017-09-26T23:33:39.829Z\",\n    \"modified\": \"2017-09-26T23:33:39.829Z\",\n    \"name\": \"Another malware hash\",\n    \"indicator_types\": [\"malicious-activity\"],\n    \"pattern_type\": \"stix\",\n    \"pattern_version\": \"2.1\",\n    \"pattern\": \"[file:hashes.md5 = 'abcdef1234567890abcdef1234567890']\",\n    \"valid_from\": \"2017-09-26T23:33:39.829952Z\"\n}'''\nparsed_indicator = parse(json_string)\nprint(\"\\nParsed Indicator Name:\", parsed_indicator.name)\n","lang":"python","description":"This quickstart demonstrates how to create a STIX Indicator object, serialize it to pretty-printed JSON, and parse a STIX JSON string back into a Python object. It uses the `Indicator` class for object creation and `serialize` and `parse` functions for data interchange.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"3.0.1","pypi_latest":"3.0.2","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3,"avg_import_s":0.86,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"stix2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.82,"mem_mb":16.3,"disk_size":"28.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"stix2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":0.66,"mem_mb":16.3,"disk_size":"29M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"stix2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.03,"mem_mb":18.2,"disk_size":"31.4M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"stix2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.91,"mem_mb":18.2,"disk_size":"32M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"stix2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.91,"mem_mb":17.8,"disk_size":"23.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"stix2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.93,"mem_mb":17.8,"disk_size":"24M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"stix2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.93,"mem_mb":18.6,"disk_size":"22.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"stix2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.86,"mem_mb":18.6,"disk_size":"23M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"stix2","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.81,"mem_mb":16,"disk_size":"29.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"stix2","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":4,"import_time_s":0.78,"mem_mb":16,"disk_size":"30M"}]}}