Skip to content

Which API should I use?

Understand exposes an analyzed project — entities, references, metrics, graphs, architectures — to your own code through a programmable API. Use the Python API. It is the actively developed interface, and it is the same API that powers plugins.

Short answer

Write new code against the Python API. See Python API: getting started. The C and Perl APIs still ship for backward compatibility, but they are deprecated and receive no new features. The Java API was removed in 2025.

The APIs at a glance

API Status Use it for
Python Supported — the API. All new scripts, tools, and plugins. Full class-oriented model, gets every new feature.
C Legacy, deprecated. Still ships. Existing C/C++ programs that already link against it. Do not start new projects here.
Perl Deprecated as of 2026. Still ships. Keeping old .pl scripts running until you port them to Python.
Java Removed in 2025. — (use the Python API).

Python — the one to use

The Python API is class-oriented (understand.Db, understand.Ent, understand.Ref, understand.Metric, understand.Arch, …) and is what every plugin type is built on. Understand bundles its own Python interpreter (upython) so scripts run with zero setup. Start at Python API: getting started, or browse the full Python API reference.

C — legacy, deprecated

A C API (the classic udb.h interface) ships with Understand and lets a C/C++ program query a database directly. It is kept for existing integrations only — the shipped header is authoritative, and the older reference documentation lists functions that no longer exist. Prefer Python for new work.

Perl — deprecated as of 2026

The Perl API (the Understand module, run with uperl) still runs and ships with Understand, but it is deprecated as of 2026 and will no longer be maintained; it will be removed in a future release. Port existing Perl scripts to Python. It also covers Perl plugin scripts (.upl) — historically Graph, Report, and CodeCheck plugins — see Write a plugin.

Java

Understand once shipped a SciTools-built Java API, but it was removed in 2025. Current versions have no Java API — use the Python API instead.

Where to go next