Skip to main content

The Space Document

GET /spaces/{id} returns the current Space Document of a space; GET /spaces/{id}/scans/{scan_id} returns a past scan as it was recorded. The schema is versioned (schema_version: "1.0") and is the same for spaces scanned with the app and through the API. The exact schema is in the API reference.

Top level​

Field
spaceid, source (app or api), name, description, space_type, created_at, updated_at
scanid, analyzed_at, recorded_at, duration_seconds, device, frame_count
enrichmentlevel (base or deep) and status (not_requested, pending, complete, failed); see Concepts
summaryA short description of the space
confidenceHow sure the analysis is overall, 0 to 1
featuresFeatures of the space as a whole
statsCounts of areas, items, issues, key locations, instructions, facts
areas, items, issues, key_locations, instructions, facts, qaThe records, below
framesThe evidence frames, with signed URLs
continuityHow this scan was checked against the previous one, or null: previous_scan_id, absent_items and resolved_issues (each with the frame of this scan that shows the place). See Compare two scans
coveragewarnings (weak coverage, unreadable labels, withheld text) and not_documented (what a reader would expect but the video did not show)
transcriptOnly with include=transcript and spaces:sensitive

Records​

RecordMain fields
Areaid, name, type (kitchen, bathroom, bedroom, …), level, condition (code, notes), description, features, access_from, item_ids, issue_ids
Itemid, area_id, name, canonical_name, category, subcategory, quantity, location (where in the area), condition, brand, model, attributes, visible_text, aliases, note, previous_item_id (the same object in the previous scan)
Issueid, area_id, item_id, title, description, category, severity (low, medium, high, critical), suggested_action, previous_issue_id
Key locationid, kind (water_shutoff, electrical_panel, gas_shutoff, water_heater, heating_control, router, fire_extinguisher, smoke_detector, emergency_exit, keys, meters, alarm_panel, …), label, area_id, location, notes
Instructionid, title, area_id, item_id, steps, source_quote (what was said)
Factid, kind (access, wifi, rule, contact, schedule, quirk, measurement, history, other), statement, value, sensitive, redacted
Q&Aquestion, answer, source (owner or generated)

Every record that comes from the video carries evidence: a list of { frame_id, timestamp_ms } pointing into frames, and a confidence between 0 and 1. Condition codes are new, excellent, good, fair, poor, damaged, not_working and unknown.

Evidence frames​

Each entry of frames has id, index, timestamp_ms (its time in the video) and a signed url with its url_expires_at. The URL serves the original frame, unaltered. It expires: read the document again for a fresh one. url is null for frames a redacted document does not cite, and for past scans of spaces scanned with the app (a later recording replaced their images).

Redacted documents​

A key without spaces:sensitive reads the same structure with:

  • sensitive facts' statement replaced and value set to null (redacted: true);
  • the location of keys and other sensitive key locations hidden;
  • the same values removed from every other text;
  • no transcript, no owner answers, no source_quote;
  • frames that show sensitive content without a URL.

Spaces scanned with the app are readable by such a key only after the deep pass has screened them. Until then the document keeps its shape and counts, without content, and says so in coverage.warnings.