{"library":"pycti","title":"Python API Client for OpenCTI","description":"pycti is the official Python API client for the OpenCTI platform, a free and open-source platform for threat intelligence. It provides an interface to interact with OpenCTI's GraphQL API, enabling users to programmatically manage and query cyber threat intelligence data. The library's versioning (e.g., 7.YYYYMMDD.P) closely mirrors the OpenCTI platform's releases, indicating a rapid development and release cadence.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pycti"],"cli":null},"imports":["from pycti import OpenCTIClient"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pycti import OpenCTIClient\n\n# Initialize the OpenCTI client using environment variables\n# Ensure OPENCTI_URL and OPENCTI_TOKEN environment variables are set\nopencti_url = os.environ.get(\"OPENCTI_URL\", \"https://localhost:8080\")\nopencti_token = os.environ.get(\"OPENCTI_TOKEN\", \"YOUR_OPENCTI_TOKEN\")\n\nif not opencti_token or opencti_token == \"YOUR_OPENCTI_TOKEN\":\n    print(\"Error: OPENCTI_TOKEN environment variable or direct token is not set.\")\n    print(\"Please set OPENCTI_URL and OPENCTI_TOKEN or pass them directly.\")\n    exit(1)\n\ntry:\n    # Connect to the OpenCTI platform\n    # log_level can be 'debug', 'info', 'warning', 'error'\n    client = OpenCTIClient(opencti_url, opencti_token, log_level=\"info\")\n    print(f\"Successfully connected to OpenCTI at {opencti_url}\")\n\n    # Example: Fetch the first 5 indicators\n    print(\"Fetching first 5 indicators...\")\n    indicators = client.indicator.list(first=5)\n\n    if indicators:\n        print(f\"Found {len(indicators)} indicators:\")\n        for indicator in indicators:\n            print(f\"- ID: {indicator.get('id')}, Pattern: {indicator.get('pattern')}\")\n    else:\n        print(\"No indicators found or unable to fetch any.\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n    print(\"Please ensure the OpenCTI platform is running, accessible, and authentication credentials are correct.\")\n","lang":"python","description":"This quickstart demonstrates how to initialize the `OpenCTIClient` using environment variables and fetch a list of indicators. It highlights the use of `OPENCTI_URL` and `OPENCTI_TOKEN` for authentication and includes basic error handling and logging.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"6.9.29","pypi_latest":"7.260515.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":12.4,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pycti","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"124.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pycti","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":13.6,"import_time_s":null,"mem_mb":null,"disk_size":"128M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pycti","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"134.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pycti","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":12.2,"import_time_s":null,"mem_mb":null,"disk_size":"139M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pycti","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"131.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pycti","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":9.6,"import_time_s":null,"mem_mb":null,"disk_size":"137M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pycti","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"131.0M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pycti","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":9.6,"import_time_s":null,"mem_mb":null,"disk_size":"136M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pycti","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"106.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pycti","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":17.2,"import_time_s":null,"mem_mb":null,"disk_size":"110M"}]}}