Endpoint
Multi-tenant scoping
All root queries require asiteId parameter that scopes the query to a specific site (building portfolio). This is your multi-tenant boundary. Each site has its own knowledge graph.
For brevity, most examples in these docs omit the
siteId parameter. In practice, every root query (building, equipment, point, zone, system, location) requires it.Request format
Response format
data field. Errors appear in the errors array.
Key features
The GraphQL surface provides five semantic capabilities powered by Brick Schema:- Name-based discovery: find any entity by name without knowing its UUID.
name: "AHU"returns all matching equipment with case-insensitive substring search - Class hierarchy inference: the
isargument resolves Brick class hierarchies.is: "HVAC_Equipment"matches AHUs, VAVs, chillers, pumps, and every subtype - Cross-cutting queries: combine
locationName,equipmentIs, andisto query across the entire building graph in a single request. “Temperature sensors on VAVs in Tower East” is one query - Transitive traversal:
upstreamanddownstreamfields follow equipment chains to any depth, with optionalmediumandmaxDepthfiltering - Structured properties: equipment metadata (controller name, point count, virtual flag) as typed
EntityPropertyobjects withhasProperty/propertyValuefiltering
Rate limits
The API enforces per-client rate limits to ensure fair usage:| Client type | Limit |
|---|---|
| API key | 2400 requests/minute |
| Authenticated user | 1200 requests/minute |
| Anonymous | 120 requests/minute |
429 with a Retry-After header. GraphQL responses include a standard errors array.
