Base URL
Quickstart
1
Get a token
Create a personal or account token in Elementary and send it as a bearer token.
See Authentication.
2
Discover your environments
id is an env_id you use in every other endpoint.3
List assets
next_cursor until has_more is false — see Pagination.What you can read
Every list endpoint supports a full scan and keyset pagination; assets and
columns also expose incremental feeds — see Incremental sync.
Assets: one base endpoint, plus typed endpoints
Elementary tracks assets of several kinds — warehouse tables and views, BI dashboards and explores, semantic models, and more. They share a common set of fields but each kind also has its own attributes, so the API splits them:GET /assetsreturns every asset of every kind with the common fields (id,name,source_type,tags,owners, timestamps, …) plus akinddiscriminator. This is the complete list of lineage nodes: every asset id referenced by asset lineage or column lineage appears here, so you can resolve any edge endpoint to a node.GET /assets/tablesandGET /assets/bireturn the same assets narrowed to a single kind, with that kind’s extra fields fully populated — warehouse coordinates (db_name,schema_name,table_name,materialization) for tables, andbi_platform/bi_type/urlfor BI assets. Kind-specific filters live here too (e.g.db_nameson/assets/tables,bi_platformson/assets/bi).
db_name; a table has no bi_platform). Keeping the
common fields on /assets gives you a clean node list for building the lineage
graph, while the typed endpoints give each kind a tight, fully-populated shape.
A typical flow: page /assets to build the graph, then enrich the kinds you
care about via the typed endpoints — use the kind field to decide which one.
The full endpoint and schema reference is generated from the API and lives under
API Reference.
Forward compatibility
Some string fields are extensible enums: they carry a value from a small, known set today (e.g.kind, source_type, data_platform, materialization,
bi_platform, bi_type, warehouse_type, last_sync_status), but that set
grows as Elementary adds integrations and asset types. In the schema these
fields are typed as plain strings with an Extensible enum. note and their
currently-known values listed under examples — they are not a closed
enum.
To stay compatible as the API evolves, build your integration so that:
- Unknown values never break you. Treat any value you don’t recognize as a
safe fallback (for
kind, useother) rather than failing. New values can appear in a normal, non-breaking release. - New fields are ignored, not rejected. We may add fields to a response; don’t configure your parser to reject unknown properties.
- You iterate on
has_more, not item counts (see Pagination).
beta.
