Skip to main content
Features are entities detected inside Blocks — rooms, doors, symbols, walls, dimensions, and annotations. They form a containment tree via parent_feature_id and connect to other entities via Relations. See Features for the full concept.

Endpoints

MethodEndpointDescription
GET/featuresList features
GET/features/{id}Get feature details
Features are read-only. They are created automatically during block processing.

Feature Object

FieldTypeDescription
idstringUnique identifier (e.g., ftr_01JABCD123)
block_idstringParent Block
parent_feature_idstring?Containment parent feature (null = direct child of block)
typestringEntity type: "room", "door", "wall", "duplex_receptacle"
labelstring?Instance identifier: "201", "104", "AHU-1"
boundsobject?Geometry within the block (see below)
confidencefloat?Detection confidence score (0-1)
uristring?Cropped image URL
ocrstring?Extracted text content
descriptionstring?Human/LLM-readable summary
metadataobject?Domain-specific properties
created_atdatetimeCreation timestamp
updated_atdatetimeLast update timestamp

Bounds Geometry

The bounds field stores the feature’s geometry within its parent block. A type discriminator determines the shape:
GeometryUsed forShape
bboxSymbols, equipment, doorsAxis-aligned bounding box
polygonRooms, areasClosed polygon with vertices
polylineWalls, ducts, pipesOpen line with vertices
// bbox — a door symbol
{ "type": "bbox", "xmin": 450, "ymin": 320, "xmax": 480, "ymax": 350 }

// polygon — a room boundary
{ "type": "polygon", "points": [[100, 200], [300, 200], [300, 500], [100, 500]] }

// polyline — a wall segment
{ "type": "polyline", "points": [[100, 200], [300, 200], [300, 500]] }
All coordinates are normalized (0-1000) within the parent block’s image. This makes them resolution-independent.

Feature Metadata

The metadata JSON field carries domain-specific properties, standardized by convention:
KeyUsed onExample
fire_ratingWalls, doors2-hr, 45-min
elevationBeams, ducts, equipment112'-6
elevation_topBeams, structural members112'-6
elevation_bottomBeams, structural members111'-2
materialWalls, doorsHM, WD, concrete
sizeDucts, pipes24x12, 4
assemblyWallsUL U419
systemMEP elementsCHW, SAN, SD
designationStructural membersW16x40

Symbol Instance Metadata

Detected symbol instances (from the symbol detection pipeline) carry matching metadata:
KeyTypeDescription
scalefloatTemplate scale factor relative to legend crop (0.4 - 1.3)
angleintRotation angle in degrees: 0, 45, 90, 135, 180, 225, 270, 315
flippedboolWhether the instance is vertically flipped relative to the legend
template_confidencefloatRaw template matching score before embedding verification
dinov2_scorefloatEmbedding similarity score from DINOv2 verification
The confidence field on symbol features is a hybrid score: template_confidence * dinov2_score. Both component scores are preserved in metadata for downstream filtering.
{
  "type": "symbol",
  "label": "duplex_receptacle",
  "confidence": 0.82,
  "bounds": { "type": "bbox", "xmin": 450, "ymin": 320, "xmax": 480, "ymax": 350 },
  "metadata": {
    "scale": 0.88,
    "angle": 90,
    "flipped": false,
    "template_confidence": 0.91,
    "dinov2_score": 0.90
  }
}

Legend Feature Metadata

Legend entry features (from parse_legend) carry symbol definition metadata:
KeyTypeDescription
is_text_onlyboolTrue if the symbol is text-only with no graphic shape
has_textboolTrue if the symbol graphic contains text characters
symmetricalboolTrue if the graphic is symmetric along either axis
is_suffixboolTrue if this entry is a suffix designation (e.g., “WP” for weatherproof)
suffixstring?The suffix letter(s) when is_suffix is true
Text-only legend entries are not template-matched against plan blocks.

Type Vocabulary

type is a free string — the vocabulary of construction entities is too large for an enum. Common types include:
CategoryTypes
Architecturalroom, door, wall, window, column, stair
Electricalduplex_receptacle, gfci_receptacle, switch, light_fixture, fire_alarm_pull_station
Mechanicalduct, diffuser, ahu, vav_box
Plumbingpipe, fixture, floor_drain
Structuralbeam, joist, footing
Annotationsdimension, detail_callout, keynote, section_mark
Fire protectionsmoke_detector, sprinkler_head, fire_extinguisher