This guide walks through querying a building from scratch: authenticating, discovering what’s available, and exploring the building graph. By the end, you’ll understand the basic query patterns for working with building data.
Every query requires a siteId that scopes it to your site. You’ll find this in your Tacit dashboard. Then search by name, no need to know building IDs:
{ building(siteId: "your-site-id", name: "Pool") { id name type } }
curl -X POST $TACIT_GRAPHQL \ -H "Authorization: Bearer $TACIT_API_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "{ building(siteId: \"your-site-id\", name: \"Pool\") { id name type } }"}'
All root queries require siteId. For brevity, remaining examples in this guide omit it, but it’s always required.
# By name: finds all AHUs (siteId required on all root queries){ equipment(siteId: "your-site-id", name: "AHU") { name type location { name } } }# By Brick class: all HVAC equipment (AHUs, VAVs, chillers, etc.){ equipment(siteId: "your-site-id", is: "HVAC_Equipment") { name type } }# A specific piece of equipment{ equipment(siteId: "your-site-id", id: "TE01-XX-AHU-001") { name type } }
A single query that shows an AHU, its sensors, and the downstream VAVs it feeds:
{ equipment(siteId: "your-site-id", id: "TE01-XX-AHU-001") { name points(is: "Temperature_Sensor") { name type unit } downstream { name type points(is: "Zone_Air_Temperature_Sensor") { name unit } } }}
This is one request. No loops, no pagination, no client-side assembly.