---
title: "Get a base document for a specific scan"
method: GET
path: "/spaces/{id}/scans/{scan_id}"
---

# Get a base document for a specific scan

`GET /spaces/{id}/scans/{scan_id}`

## Request

- Base URL: `https://api.spacecontext.app/v1`
- URL: `https://api.spacecontext.app/v1/spaces/{id}/scans/{scan_id}`
- Auth: HTTP bearer

A scan read by id is the snapshot as it was recorded. Past scans are not screened for sensitive values, so this operation requires the `spaces:sensitive` scope and answers 403 `INSUFFICIENT_SCOPE` without it.

## Path parameters

- `id` string, required
- `scan_id` string, required

## Query parameters

- `include` 'transcript'

## Response `200`

Space document for the scan

- SpaceDocument
  - `object` 'space_document', required
  - `schema_version` '1.0', required
  - `space` object, required
    - `id` string, required
    - `source` 'app' | 'api', required
    - `name` string, required
    - `description` string, nullable, required
    - `space_type` 'apartment' | 'house' | 'office' | 'warehouse' | 'vehicle' | 'boat' | 'camper' | 'shop' | 'garage' | 'appliance' | 'other' | 'null', nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `scan` object, required
    - `id` string, required
    - `analyzed_at` string, date-time, nullable, required
    - `recorded_at` string, date-time, nullable, required
    - `duration_seconds` number, nullable, required
    - `device` string, nullable, required
    - `video_sha256` string, nullable, required
    - `frame_count` integer, nullable, required
  - `enrichment` object, required
    - `level` 'base' | 'deep', required
    - `status` 'not_requested' | 'pending' | 'complete' | 'failed', required
    - `updated_at` string, date-time, nullable, required
  - `summary` string, nullable, required
  - `confidence` number, nullable, required
  - `stats` object, required
    - `areas` integer, required
    - `items` integer, required
    - `issues` integer, required
    - `key_locations` integer, required
    - `instructions` integer, required
    - `facts` integer, required
  - `features` string[], required
  - `areas` SpaceArea[], required
    - `id` string, required
    - `name` string, required
    - `type` 'entrance' | 'hallway' | 'living_room' | 'kitchen' | 'dining_room' | 'bedroom' | 'bathroom' | 'laundry' | 'office' | 'storage' | 'garage' | 'balcony_terrace' | 'garden_exterior' | 'stairs' | 'technical_room' | 'sales_floor' | 'warehouse_floor' | 'vehicle_cabin' | 'vehicle_exterior' | 'engine_bay' | 'boat_deck' | 'boat_cabin' | 'appliance_view' | 'other', required
    - `level` string, nullable, required
    - `condition` SpaceCondition, required
      - `code` 'new' | 'excellent' | 'good' | 'fair' | 'poor' | 'damaged' | 'not_working' | 'unknown', required
      - `label` string, nullable, required: The label as written in the language of the report ("Good", "Buono", "Bueno", "Gut"...); `code` is the same in every language.
      - `notes` string, nullable, required
    - `description` string, nullable, required
    - `layout` string, nullable, required
    - `orientation` string, nullable, required: One sentence that places the main fixed things of the area from its canonical viewpoint (facing the entrance door from inside for an entrance or hallway; standing in the doorway one enters it from, looking in, for any other area): "Coming in from the hallway: window ahead, bed on the left, desk on the right." Null when the recording does not show enough, and always null at the base level.
    - `features` string[], required
    - `access_from` string[], required
    - `item_ids` string[], required
    - `issue_ids` string[], required
    - `evidence` SpaceEvidenceRef[], required
      - `frame_id` string, required
      - `timestamp_ms` integer, nullable, required
    - `confidence` number, nullable, required
  - `items` SpaceItem[], required
    - `id` string, required
    - `area_id` string, required
    - `name` string, required
    - `canonical_name` string, nullable, required
    - `description` string, nullable, required: What it is, where it is with the viewpoint, what was said about it (use, settings, quirks, what to watch out for), its condition when notable, in one paragraph of 1-3 sentences in the report language. Never a sensitive value. Null at the base level and on app spaces.
    - `category` 'furniture' | 'appliance' | 'electronics' | 'lighting' | 'fixture' | 'kitchenware' | 'textile' | 'decor' | 'storage' | 'tool' | 'safety' | 'utility' | 'climate' | 'plumbing' | 'document' | 'consumable' | 'vehicle_part' | 'structural' | 'other', required
    - `subcategory` string, nullable, required
    - `quantity` integer, nullable, required
    - `location` string, nullable, required: Where it is inside the area, as one sentence that carries the viewpoint when left and right matter: "on the wall left of the entrance door, facing the door from inside; on your right as you enter".
    - `placement` SpacePlacement, required: Where a thing is, as anchor + relation + viewpoint, so that a person or an agent can orient themselves ("on the wall left of the entrance door, facing the door from inside"). `location` on the same record is this placement written as one sentence in the report language.
      - `anchor` string, nullable, required: A fixed landmark the thing is placed against: a door, a window, the hob, a radiator. Never the thing itself.
      - `anchor_item_id` string, nullable, required: The id of the item in this document that is the anchor, when the anchor is one of its items.
      - `relation` 'on' | 'inside' | 'under' | 'above' | 'below' | 'left_of' | 'right_of' | 'in_front_of' | 'behind' | 'opposite' | 'beside' | 'unknown', required: How a thing sits against its anchor. `left_of`, `right_of`, `in_front_of`, `behind` and `opposite` hold only from the placement's `viewpoint`; the others hold from anywhere. `unknown`: the recording does not show where it is.
      - `viewpoint` string, nullable, required: Where a person stands and what they face for the relation to hold ("inside the flat, facing the entrance door"). Always set for a lateral relation. One canonical viewpoint per area: facing the entrance door from inside for an entrance or hallway, standing in the doorway one enters it from and looking in for any other area. An agent describing the place to someone mirrors left and right only when it knows that person's own viewpoint; otherwise it repeats this one.
      - `detail` string, nullable, required: Height, the part of the anchor, or a second anchor: "at chest height, above the shoe rack".
    - `condition` SpaceCondition, required
      - `code` 'new' | 'excellent' | 'good' | 'fair' | 'poor' | 'damaged' | 'not_working' | 'unknown', required
      - `label` string, nullable, required: The label as written in the language of the report ("Good", "Buono", "Bueno", "Gut"...); `code` is the same in every language.
      - `notes` string, nullable, required
    - `brand` string, nullable, required
    - `model` string, nullable, required
    - `attributes` string[], required
    - `visible_text` string[], required
    - `aliases` string[], required
    - `note` string, nullable, required
    - `issue_ids` string[], required
    - `previous_item_id` string, nullable, required: The same object in the previous scan (`continuity.previous_scan_id`), when this scan was checked against it.
    - `evidence` SpaceEvidenceRef[], required
      - `frame_id` string, required
      - `timestamp_ms` integer, nullable, required
    - `verification` SpaceVerification, required: The record checked again on the frames it cites, by a second model that answers closed questions with probabilities and never writes text. `verified`: one of its frames clearly shows it (probability 0.7 or more); `unconfirmed`: its frames were checked and none clearly does, so treat it as uncertain; `not_visual`: nothing a photo could confirm (it comes from the narration, or states a fault or something missing).
      - `status` 'verified' | 'unconfirmed' | 'not_visual', required
      - `probability` number, nullable, required: Best probability over the frames checked. Null for `not_visual`.
      - `frame_id` string, nullable, required: The frame that shows it best; it is also the first of the record's `evidence`.
    - `confidence` number, nullable, required
  - `issues` SpaceIssue[], required
    - `id` string, required
    - `area_id` string, nullable, required
    - `item_id` string, nullable, required
    - `title` string, required
    - `description` string, nullable, required
    - `category` 'damage' | 'wear' | 'malfunction' | 'missing' | 'cleanliness' | 'safety' | 'maintenance' | 'other', required
    - `severity` 'low' | 'medium' | 'high' | 'critical', required
    - `suggested_action` string, nullable, required
    - `previous_issue_id` string, nullable, required: The same issue in the previous scan, still there.
    - `evidence` SpaceEvidenceRef[], required
      - `frame_id` string, required
      - `timestamp_ms` integer, nullable, required
    - `verification` SpaceVerification, required: The record checked again on the frames it cites, by a second model that answers closed questions with probabilities and never writes text. `verified`: one of its frames clearly shows it (probability 0.7 or more); `unconfirmed`: its frames were checked and none clearly does, so treat it as uncertain; `not_visual`: nothing a photo could confirm (it comes from the narration, or states a fault or something missing).
      - `status` 'verified' | 'unconfirmed' | 'not_visual', required
      - `probability` number, nullable, required: Best probability over the frames checked. Null for `not_visual`.
      - `frame_id` string, nullable, required: The frame that shows it best; it is also the first of the record's `evidence`.
    - `confidence` number, nullable, required
  - `key_locations` SpaceKeyLocation[], required
    - `id` string, required
    - `kind` 'electrical_panel' | 'water_shutoff' | 'gas_shutoff' | 'water_heater' | 'heating_control' | 'air_conditioning_control' | 'router' | 'fire_extinguisher' | 'smoke_detector' | 'first_aid' | 'emergency_exit' | 'keys' | 'waste_recycling' | 'electricity_meter' | 'gas_meter' | 'water_meter' | 'alarm_panel' | 'spare_supplies' | 'identification_plate' | 'instrument_panel' | 'engine_bay' | 'spare_wheel' | 'safety_equipment' | 'battery_isolator' | 'bilge_pump' | 'seacock' | 'fuel_shutoff' | 'water_tank' | 'sprinkler_valve' | 'control_panel' | 'filter' | 'utility_connections' | 'other', required
    - `label` string, required
    - `description` string, nullable, required: What it is, where it is with the viewpoint, what was said about it (how to reach or operate it, what to watch out for), its condition when notable, in one paragraph. Never a code or a password. Null at the base level and on app spaces.
    - `area_id` string, nullable, required
    - `location` string, nullable, required: Specific enough to walk straight to it, with the viewpoint when left and right matter.
    - `placement` SpacePlacement, required: Where a thing is, as anchor + relation + viewpoint, so that a person or an agent can orient themselves ("on the wall left of the entrance door, facing the door from inside"). `location` on the same record is this placement written as one sentence in the report language.
      - `anchor` string, nullable, required: A fixed landmark the thing is placed against: a door, a window, the hob, a radiator. Never the thing itself.
      - `anchor_item_id` string, nullable, required: The id of the item in this document that is the anchor, when the anchor is one of its items.
      - `relation` 'on' | 'inside' | 'under' | 'above' | 'below' | 'left_of' | 'right_of' | 'in_front_of' | 'behind' | 'opposite' | 'beside' | 'unknown', required: How a thing sits against its anchor. `left_of`, `right_of`, `in_front_of`, `behind` and `opposite` hold only from the placement's `viewpoint`; the others hold from anywhere. `unknown`: the recording does not show where it is.
      - `viewpoint` string, nullable, required: Where a person stands and what they face for the relation to hold ("inside the flat, facing the entrance door"). Always set for a lateral relation. One canonical viewpoint per area: facing the entrance door from inside for an entrance or hallway, standing in the doorway one enters it from and looking in for any other area. An agent describing the place to someone mirrors left and right only when it knows that person's own viewpoint; otherwise it repeats this one.
      - `detail` string, nullable, required: Height, the part of the anchor, or a second anchor: "at chest height, above the shoe rack".
    - `notes` string, nullable, required
    - `evidence` SpaceEvidenceRef[], required
      - `frame_id` string, required
      - `timestamp_ms` integer, nullable, required
    - `verification` SpaceVerification, required: The record checked again on the frames it cites, by a second model that answers closed questions with probabilities and never writes text. `verified`: one of its frames clearly shows it (probability 0.7 or more); `unconfirmed`: its frames were checked and none clearly does, so treat it as uncertain; `not_visual`: nothing a photo could confirm (it comes from the narration, or states a fault or something missing).
      - `status` 'verified' | 'unconfirmed' | 'not_visual', required
      - `probability` number, nullable, required: Best probability over the frames checked. Null for `not_visual`.
      - `frame_id` string, nullable, required: The frame that shows it best; it is also the first of the record's `evidence`.
    - `confidence` number, nullable, required
  - `instructions` SpaceInstruction[], required
    - `id` string, required
    - `title` string, required
    - `area_id` string, nullable, required
    - `item_id` string, nullable, required
    - `steps` string[], required
    - `source_quote` string, nullable, required
    - `transcript_segment_ids` string[], required
    - `confidence` number, nullable, required
  - `facts` SpaceFact[], required
    - `id` string, required
    - `kind` 'access' | 'wifi' | 'rule' | 'contact' | 'schedule' | 'quirk' | 'measurement' | 'history' | 'other', required
    - `statement` string, required
    - `value` string, nullable, required
    - `area_id` string, nullable, required
    - `sensitive` boolean, required
    - `redacted` boolean, required
    - `transcript_segment_ids` string[], required
    - `evidence` SpaceEvidenceRef[], required
      - `frame_id` string, required
      - `timestamp_ms` integer, nullable, required
    - `confidence` number, nullable, required
  - `qa` SpaceQA[], required
    - `id` string, required
    - `question` string, required
    - `answer` string, required
    - `source` 'owner' | 'generated', required
    - `category` string, nullable, required
    - `area_id` string, nullable, required
  - `transcript` object
    - `text` string, nullable, required
    - `segments` SpaceTranscriptSegment[], required
      - `id` string, required
      - `start_ms` integer, required
      - `end_ms` integer, required
      - `text` string, required
  - `frames` SpaceFrame[], required
    - `id` string, required
    - `index` integer, required
    - `timestamp_ms` integer, nullable, required
    - `url` string, uri, nullable, required
    - `url_expires_at` string, date-time, nullable, required
  - `continuity` SpaceContinuity, required: How this scan was checked against the scan before it. Items and issues seen again carry `previous_item_id` / `previous_issue_id`; what is gone is listed only when a frame of this scan shows the place where it was. A previous record that is neither linked nor listed was not seen: it may be gone, or simply not filmed.
    - `previous_scan_id` string, required
    - `absent_items` object[], required
      - `item_id` string, required: Id in the previous scan.
      - `name` string, required: Its name in the previous scan.
      - `note` string, nullable, required
      - `evidence` SpaceEvidenceRef[], required: Frames of this scan that show the place.
        - `frame_id` string, required
        - `timestamp_ms` integer, nullable, required
    - `resolved_issues` object[], required
      - `issue_id` string, required: Id in the previous scan.
      - `title` string, required
      - `note` string, nullable, required
      - `evidence` SpaceEvidenceRef[], required
        - `frame_id` string, required
        - `timestamp_ms` integer, nullable, required
  - `coverage` object, required
    - `warnings` string[], required
    - `not_documented` string[], required
    - `checklist` SpaceCoverageCheck[], required: Key locations every frame was checked for, seen or not: those of the space's type (`GET /capture-profiles`), in their order. Empty when the frames were not checked.
      - `kind` 'electrical_panel' | 'water_shutoff' | 'gas_shutoff' | 'water_heater' | 'heating_control' | 'air_conditioning_control' | 'router' | 'fire_extinguisher' | 'smoke_detector' | 'first_aid' | 'emergency_exit' | 'keys' | 'waste_recycling' | 'electricity_meter' | 'gas_meter' | 'water_meter' | 'alarm_panel' | 'spare_supplies' | 'identification_plate' | 'instrument_panel' | 'engine_bay' | 'spare_wheel' | 'safety_equipment' | 'battery_isolator' | 'bilge_pump' | 'seacock' | 'fuel_shutoff' | 'water_tank' | 'sprinkler_valve' | 'control_panel' | 'filter' | 'utility_connections' | 'other', required
      - `seen` boolean, required: At least one frame shows it (probability from 0.7).
      - `probability` number, required: The highest probability over the frames.
      - `evidence` SpaceEvidenceRef[], required
        - `frame_id` string, required
        - `timestamp_ms` integer, nullable, required

## Other responses

- `400`: Error response
- `401`: Error response
- `403`: Error response
- `404`: Error response
- `429`: Too many requests. Retry after the number of seconds in `Retry-After`.

---

[API](https://skmtc.dev/spacecontext/apis/space-context-api.md) · [All operations](https://skmtc.dev/spacecontext/apis/space-context-api/llms.txt) · [OpenAPI document](https://skmtc.dev/spacecontext/apis/space-context-api/revisions/1dca940259b4?raw)
