Skip to main content
Version: 0.13.1

Which DataHub API is for me?

DataHub supplys several APIs to manipulate metadata on the platform. These are our most-to-least recommended approaches:

  • Our most recommended tools for extending and customizing the behavior of your DataHub instance are our SDKs in Python and Java.
  • If you'd like to customize the DataHub client or roll your own; the GraphQL API is our what powers our frontend. We figure if it's good enough for us, it's good enough for everyone! If graphql doesn't cover everything in your usecase, drop into our slack and let us know how we can improve it!
  • If you are less familiar with graphql and would rather use OpenAPI, we offer OpenAPI endpoints that allow you to produce metadata events and query metadata.
  • Finally, if you're a brave soul and know exactly what you are doing... are you sure you don't just want to use the SDK directly? If you insist, the API is a much more powerful, low level API intended only for advanced users.

Python and Java SDK

We offer an SDK for both Python and Java that provide full functionality when it comes to CRUD operations and any complex functionality you may want to build into DataHub.

Get started with the Python SDKGet started with the Java SDK


The graphql API serves as the primary public API for the platform. It can be used to fetch and update metadata programatically in the language of your choice. Intended as a higher-level API that simplifies the most common operations.

Get started with the GraphQL API


For developers who prefer OpenAPI to GraphQL for programmatic operations. Provides lower-level API access to the entire DataHub metadata model for writes, reads and queries.

Get started with OpenAPI API


The API is intended only for advanced users. If you're just getting started with DataHub, we recommend the GraphQL API

The API represents the underlying persistence layer, and exposes the raw PDL models used in storage. Under the hood, it powers the GraphQL API. Aside from that, it is also used for system-specific ingestion of metadata, being used by the Metadata Ingestion Framework for pushing metadata into DataHub directly. For all intents and purposes, the API is considered system-internal, meaning DataHub components are the only ones to consume this API directly.

Get started with our API

DataHub API Comparison

DataHub supports several APIs, each with its own unique usage and format. Here's an overview of what each API can do.

Last Updated : Feb 16 2024

FeatureGraphQLPython SDKOpenAPI
Create a Dataset🚫[Guide]
Delete a Dataset (Soft Delete)[Guide][Guide]
Delete a Dataset (Hard Delete)🚫[Guide]
Search a Dataset
Read a Dataset Deprecation
Read Dataset Entities (V2)
Create a Tag[Guide][Guide]
Read a Tag[Guide][Guide]
Add Tags to a Dataset[Guide][Guide]
Add Tags to a Column of a Dataset[Guide][Guide]
Remove Tags from a Dataset[Guide][Guide]
Create Glossary Terms[Guide][Guide]
Read Terms from a Dataset[Guide][Guide]
Add Terms to a Column of a Dataset[Guide][Guide]
Add Terms to a Dataset[Guide][Guide]
Create Domains[Guide][Guide]
Read Domains[Guide][Guide]
Add Domains to a Dataset[Guide][Guide]
Remove Domains from a Dataset[Guide][Guide]
Create / Upsert Users[Guide][Guide]
Create / Upsert Group[Guide][Guide]
Read Owners of a Dataset[Guide][Guide]
Add Owner to a Dataset[Guide][Guide]
Remove Owner from a Dataset[Guide][Guide]
Add Lineage[Guide][Guide]
Add Column Level (Fine Grained) Lineage🚫[Guide]
Add Documentation (Description) to a Column of a Dataset[Guide][Guide]
Add Documentation (Description) to a Dataset[Guide][Guide]
Add / Remove / Replace Custom Properties on a Dataset🚫[Guide]
Add ML Feature to ML Feature Table🚫[Guide]
Add ML Feature to MLModel🚫[Guide]
Add ML Group to MLFeatureTable🚫[Guide]
Create MLFeature🚫[Guide]
Create MLFeatureTable🚫[Guide]
Create MLModel🚫[Guide]
Create MLModelGroup🚫[Guide]
Create MLPrimaryKey🚫[Guide]
Create MLFeatureTable🚫[Guide]
Read MLFeature[Guide][Guide]
Read MLFeatureTable[Guide][Guide]
Read MLModel[Guide][Guide]
Read MLModelGroup[Guide][Guide]
Read MLPrimaryKey[Guide][Guide]
Create Data Product🚫[Code]
Create Lineage Between Chart and Dashboard🚫[Code]
Create Lineage Between Dataset and Chart🚫[Code]
Create Lineage Between Dataset and DataJob🚫[Code]
Create Finegrained Lineage as DataJob for Dataset🚫[Code]
Create Finegrained Lineage for Dataset🚫[Code]
Create Dataset Lineage with Kafka🚫[Code]
Create Dataset Lineage with MCPW & Rest Emitter🚫[Code]
Create Dataset Lineage with Rest Emitter🚫[Code]
Create DataJob with Dataflow🚫[Code] [Simple] [Verbose]
Create Programmatic Pipeline🚫[Code]