IDAPython API Reference

IDAPython allows you to create custom scripts and plugins that enhance IDA’s core functionality. This reference documentation provides a comprehensive overview of all available modules, including variables, classes, and functions. You can explore the IDAPython API by navigating the modules below.

Tip

Looking for a simpler, more Pythonic way to script IDA? The IDA Domain API provides a high-level, developer-friendly interface built on top of IDAPython. It’s designed from the ground up with modern Python best practices, offering:

  • Cleaner syntax - Write less boilerplate, focus on reverse engineering tasks

  • Better type hints - Enhanced IDE support with full type annotations

  • Intuitive abstractions - Work directly with domain concepts like functions, types, and cross-references

  • Full compatibility - Use alongside IDAPython; both APIs work seamlessly together

  • Open source - Community-driven development with independent versioning

  • Pure Python - No compilation required, works with modern Python versions

The Domain API doesn’t replace IDAPython—it complements it. Use Domain API for everyday scripting tasks and drop down to IDAPython when you need fine-grained control or access to advanced features.

Other Documentation Resources

Explore the Developer Guide in our Hex-Rays Documentation Hub:

  • Cookbook: Check our examples library, which demonstrates practical implementation for the IDAPython API, complementing this reference. The samples include recent examples for working with types.

  • Getting Started: If you’re new to IDAPython, we recommend starting with Getting Started with IDAPython. These docs introduce key concepts and help you begin exploring IDAPython’s capabilities.

  • Migration Guide: Read our Porting Guide that streamlines the process of updating your current scripts and plugins to the latest version of IDAPython API, along with how-to examples.

  • Release Notes: For a complete list of recent API changes, refer to the latest Release Notes.

If you need further assistance, you can contact us or submit a request to our support team.