Photos

The photo evidence manifest. Filenames are deterministic and self-describing — organize the archive without opening a single image.

GET/{key}/{scope}/{id}/photos

Filename grammar

{site}-{feature-type}-{mark-id}-{slot}[-NN]-{uid6}.{ext}

Slots

SlotMeaning
open / closedStructure open and closed shots (required per structure)
entry / exit / depthBore and trench evidence
splice / tubePer-splice and whole-tube shots inside a closure (index = instance)
closure-open / closure-closedFinal case shots at certification
certify-signature / test-fileAttestation signature image and OTDR test records
The url requires an FCC HQ login today — bulk image delivery ships in the export ZIP FCC provides.
curl "https://app.fiberconstructioncompany.com/api/field/v1/geoexport/fck_YOURKEY/site/8/photos"
const res = await fetch(
  "https://app.fiberconstructioncompany.com/api/field/v1/geoexport/fck_YOURKEY/site/8/photos");
const data = await res.json();
<?php
$data = json_decode(
  file_get_contents("https://app.fiberconstructioncompany.com/api/field/v1/geoexport/fck_YOURKEY/site/8/photos"),
  true);
import requests
data = requests.get(
  "https://app.fiberconstructioncompany.com/api/field/v1/geoexport/fck_YOURKEY/site/8/photos",
  timeout=30).json()
200 application/json
[
  {
    "file": "site-qa-01-old-settlers-manhole-mh14-open-7f3a2c.jpg",
    "feature_title": "Manhole 3",
    "feature_type": "manhole",
    "slot": "open",
    "slot_index": null,
    "by": "Nathan Goldstein",
    "taken_at": "2026-07-29 13:18:13",
    "url": "https://app.fiberconstructioncompany.com/field/file/475"
  }
]