## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Domain API

A beginner-friendly, open-source Domain API that simplifies scripting and plugin development, making it approachable like never before — in a Pythonic way.

{% hint style=“success” %}

### v0.1.0 Released

This initial release focuses on core reversing concepts and provides a foundation for future evolution and collaboration with the community. {% endhint %}

## General Documentation Resources

Getting Started |  |  | https://ida-domain.docs.hex-rays.com/getting_started/
Examples |  |  | https://ida-domain.docs.hex-rays.com/examples/
Reference |  |  | https://ida-domain.docs.hex-rays.com/usage/

## Additional Resources

PyPI Package |  |  | https://pypi.org/project/ida-domain/
Source Code on GitHub |  |  | https://github.com/HexRaysSA/ida-domain

## Is the Domain API Right for You?

### Just getting started with IDA?

Great! The Domain API was specifically designed to flatten the learning curve. We made this high-level Domain API more Pythonic, easy to install and simpler to learn so you can start scripting and building IDA plugins without getting overwhelmed by complexity.

As an open-source project designed to complement IDAPython SDK, it benefits from a faster release cycle driven by community feedback.

### Experienced with C++ or/and IDAPython SDK?

If you’re a seasoned reverser familiar with C++ and/or IDAPython SDK usage, there’s no need to change your workflow or adopt “another” API. The Domain API is not intended to replace the existing C++ and IDAPython SDK. It offers a high-level alternative for those who prefer it.

### Need low-level control?

If you need full control, stick with IDAPython or the C++ SDK. The high-level Domain API prioritizes ease of use and community-driven evolution over complete coverage from day one. It will continue to evolve rapidly and expand over time.

## Benefits of using Domain API

- Clean and Pythonic design. The Domain API is built on top of the existing IDAPython SDK, providing a higher-level Domain Model for interacting with IDA.
- Domain-focused design. Developed by reverse engineers for reverse engineers, matching how they think about binary analysis.
- Community-driven updates, versioned independently. Open-source from the start and developed outside of official IDA release cycles, enabling flexible evolution.

## Scripting and Development with the Domain API

### Is it possible to develop plugins with the Domain API?

Yes. You can dive right away into plugin development with the Domain API, that has been built on top of the IDAPython SDK. For everything that needs more low-level control, you can use it alongside the IDAPython SDK. They are fully compatible with each other.

### Is the Domain API Equivalent to the IDAPython SDK?

The Domain API currently provides coverage for common tasks such as function manipulation, type management, cross-references handling, and more. For a full overview of available capabilities, see the Domain API Reference. As an open-source project, built with an independent release cycle, the Domain API is designed to evolve quickly. You can expect frequent updates that expand its functionality and have a chance to shape the future of its evolution.

If you need access to features not yet available through the Domain API, you can combine the IDAPython alongside your Domain API snippets.

## Feedback and contributions

The Domain API has been open source from the start. We welcome not only contributions, but also your honest feedback — from early impressions to insights that help shape its growth toward maturity.

{% hint style=“info” %}

### How to contribute? | Visit the Domain API GitHub Repository

Spotted a bug or want to propose a change to the Domain API? Here’s how to get involved:

- Read the Contribution Guidelines to understand the process
- To report bugs or unexpected behavior, open an Issue on GitHub
- To propose changes, submit a Pull Request (PR) with your improvements {% endhint %}

{% hint style=“info” %}

#### How to share your feedback?

We welcome your early insights, feature requests, and ideas for possible use cases of the Domain API. Join the conversation in our community forum. {% endhint %}

## FAQ

### Do I need to update my existing plugins or scripts?

No. You do not need to port your plugins nor update them. The Domain API doesn’t affect existing plugins or scripts in any way. If you are familiar and feel completely confident in developing with IDAPython or C++, you can continue to do so without changing your habits or workflow.

### Is the Domain API a replacement for IDAPython SDK?

No. The Domain API is not going to replace the IDAPython SDK, but complement it. The high-level Domain API serves as an entry point for developing scripts and plugins in IDA, particularly for newcomers looking for an accessible Pythonic interface.