The field-capture service turns structured pole observations from drone platforms, photogrammetry pipelines, LIDAR processors, and mobile field-survey apps into a Universal Pole Model document. It’s the parser that exists for everything that isn’t SPIDA, O-Calc, or PLS.
If your capture platform exports per-pole JSON, CSV, or a feature-layer style payload, you can usually map it straight in.
Endpoints
POST /ingest
Ingest one pole’s worth of capture data and return a UPM document.
curl https://$VERTICAL_AI_BASE_URL/ingest \
-H "Authorization: Bearer $VERTICAL_AI_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "drone | photogrammetry | lidar | field-survey",
"pole": {
"external_id": "POLE-12345",
"location": { "lat": 38.5816, "lon": -121.4944 },
"height_ft": 45,
"class": "3",
"species": "DOUGLAS_FIR"
},
"attachments": [
{ "type": "primary", "height_ft": 38.5, "direction_deg": 90 },
{ "type": "neutral", "height_ft": 32.0, "direction_deg": 90 },
{ "type": "comm", "height_ft": 22.0, "direction_deg": 90, "owner": "telco-x" }
],
"framing_hint": "horizontal | vertical | triangular | unknown"
}'
The service infers crossarm groupings, insulator types, and circuit voltages from the attachment list and any framing hint you provide, then writes the result into the canonical UPM shape.
POST /ingest/batch
Same payload, repeated. Returns a UPM per pole keyed by your external_id.
POST /enrich
Take a partial UPM (for example, one with attachments but no load_case) and fill in everything that can be derived: setting depth from ANSI tables, load case from elevation, soil class from USDA NRCS, weather state from the local design district.
Coverage notes
- Geometry first: the service prioritizes getting heights, classes, and attachment locations right. Equipment type guesses default to generic placeholders that can be refined on the UI or via subsequent edits.
- Voltage inference uses both the declared attachment type and any communicating circuits already on the pole. When ambiguous, it tags the attachment
voltage_class: unknownrather than guessing. - Owner tags flow through. If your capture data records the owning utility per attachment, joint-use workflows downstream will pick that up automatically.
See also
- Universal Pole Model → — what the service produces
- Clearance API → — first analyzer to run on a fresh ingest