---
title: "RoomPlan alternative without LiDAR: what is in the room"
description: "Apple RoomPlan maps walls and furniture boxes on LiDAR devices. To know what is in a room, where and in what state, from any video, here is the other half."
lang: en
date: 2026-10-14
tags: ["roomplan", "room scanning", "api", "computer vision"]
source_url: https://spacecontext.app/blog/roomplan-alternative-without-lidar/
---

# RoomPlan alternative without LiDAR: what is in the room

Apple RoomPlan maps walls and furniture boxes on LiDAR devices. To know what is in a room, where and in what state, from any video, here is the other half.

Apple's RoomPlan answers one question very well: what is the shape of this room? It uses the camera and the LiDAR Scanner of an iPhone or iPad to find walls, doors, windows and openings, recognises sixteen kinds of furniture and appliances, and exports the result as parametric data or USDZ. If what you need is the other question, **what is in the room, where exactly, and in what state**, from a video any phone can record, that is what Space Context does: a walkthrough becomes a structured Space Document with every item, its placement, its condition and the frames that show it.

**In short**

- RoomPlan: on-device Swift framework, LiDAR iPhone or iPad, iOS 16 or later; geometry plus 16 object categories as boxes.
- Space Context: hosted API, any video or up to 120 photos from any device; items with name, quantity, condition, brand, visible text and placement, plus issues and key locations, each citing its frames.
- Space Context does not measure: no dimensions, no floor plan, no 3D model. Use RoomPlan for that; the two answer different questions and work together.
- Every record is checked again on its own photo; a free test key returns the demo space so you can see the output before you pay.

## What does RoomPlan actually give you?

From Apple's documentation, RoomPlan is a "[Swift API that utilizes the camera and LiDAR Scanner on iPhone and iPad](https://developer.apple.com/augmented-reality/roomplan/)". [`RoomCaptureSession.isSupported`](https://developer.apple.com/documentation/roomplan/roomcapturesession/issupported) is true only "if the device contains a LiDAR Scanner", and the framework needs iOS or iPadOS 16. During a capture it identifies walls, windows, openings and doors, and recognises objects in [sixteen categories](https://developer.apple.com/documentation/roomplan/capturedroom/object/category-swift.enum): bathtub, bed, chair, dishwasher, fireplace, oven, refrigerator, sink, sofa, stairs, storage, stove, table, television, toilet and washer or dryer. Since iOS 17, chairs, sofas, storage and tables carry a few attributes (a chair's arms or legs, a table's shape), and several room captures can be merged into one structure.

The output is geometry: parametric data you can read in your app, or a USD/USDZ export where objects appear as bounding boxes. Apple's [WWDC22 session](https://developer.apple.com/videos/play/wwdc2022/10127/) says it "works best for a single residential room with a maximum room size of 30 feet by 30 feet". The documentation does not describe recording an object's condition, its brand or the text on it.

That is exactly right for floor plans, furniture layout, real-estate tours and anything that needs measurements. It is the wrong tool when the question is "is there a spare blanket?", "where is the stopcock?" or "was the bathroom heater's cable already loose at check-in?".

## When do you need the contents, not the walls?

- **Property and rental operations**: inventories, check-in and check-out reports, damage claims, where the list of things and their condition matters more than the room's size.
- **AI agents and assistants** that answer questions about a place: a guest asking where the hairdryer is, a facilities assistant asking for the water shut-off.
- **Insurance and home inventories**: what someone owns, with brand, model and a photo.
- **Teams without LiDAR devices**: Android phones, older iPhones, action cameras, or videos recorded by someone else and sent to you.

## How does Space Context describe what is in a room?

A scan returns a [Space Document](https://spacecontext.app/developers/docs/api/space-document/): areas, items, issues, key locations, instructions, facts and Q&A, with the original frames as evidence. Each item carries what RoomPlan's boxes do not: a specific name ("black Panasonic refrigerator", not "refrigerator"), category, quantity, condition, brand and model when they are readable, visible text, aliases for search, and a one-paragraph description.

Position is described the way a person would describe it, not with coordinates. Each item has a **placement**:

- an **anchor**: a fixed landmark (a wall, a door, the hob, or another item, linked by its id);
- a **relation**: `on`, `inside`, `under`, `above`, `below`, `left_of`, `right_of`, `in_front_of`, `behind`, `opposite` or `beside`;
- a **viewpoint** whenever left or right depends on where you stand;
- an optional **detail** ("at chest height", "on the rear counter").

And each area has an **orientation**: one sentence from a standard viewpoint (for an entrance, facing the front door from inside; for any other room, from the door you enter by), so every left and right in that room means the same thing.

## A real example: an apartment from 36 frames

On 14 October 2026 we turned the 36 published frames of our demo apartment in Brisbane (photos by Chris Olszewski, CC BY-SA 4.0) into a video and scanned it, with no narration. The scan took under three minutes and returned 3 areas, 35 items and 4 issues. This is the orientation of the open-plan living area, as the API returned it:

```json
"orientation": "Facing the television wall and balcony glazing, the kitchen is to the left, the sofa and coffee table are central, and the dining area, bookcases, bedroom doorway, and air conditioner are behind the sofa."
```

And three of its items:

```json
[
  {
    "id": "itm_8",
    "name": "television",
    "location": "On the wooden media cabinet against the television wall.",
    "placement": {
      "relation": "on",
      "anchor": "wooden media cabinet",
      "anchor_item_id": "itm_9",
      "viewpoint": "inside the apartment, behind the sofa, facing the television wall and balcony glazing"
    },
    "category": "electronics",
    "aliases": ["tv", "television set", "screen"]
  },
  {
    "id": "itm_11",
    "name": "black ottoman",
    "location": "To the right of the sofa, beside the coffee table.",
    "placement": {
      "relation": "right_of",
      "anchor": "sofa",
      "anchor_item_id": "itm_7",
      "viewpoint": "standing in the living area and facing the kitchen island"
    },
    "category": "furniture",
    "aliases": ["footstool", "pouf", "stool"]
  },
  {
    "id": "itm_31",
    "name": "portable floor heater",
    "location": "On the floor below the left side of the vanity.",
    "placement": {
      "relation": "below",
      "anchor": "double-basin timber vanity",
      "anchor_item_id": "itm_28",
      "viewpoint": "inside the bathroom, standing near the shower entrance and facing the vanity and mirror",
      "detail": "on the floor"
    },
    "category": "climate",
    "aliases": ["space heater", "fan heater", "portable heater"]
  }
]
```

The document also lists what it could not establish, in `coverage`: no area measurements, balcony-door and window operation not verified, appliance models unreadable, and none of the home's key locations (fuse box, stopcock, router…) in the footage. Those are not RoomPlan's questions either; they are what a person would want to know before relying on the record, so the API says them.

Every one of those records was then checked again on its own photo: 38 verified, 1 unconfirmed. How that check works, and why it matters for an agent, is in [Vision model hallucinations: check each claim on its photo](https://spacecontext.app/blog/vision-model-hallucinations-photo-check/).

## RoomPlan and Space Context side by side

| | Apple RoomPlan | Space Context |
| --- | --- | --- |
| Runs | In your iOS app, as a Swift framework | Hosted: REST API, CLI, TypeScript SDK, MCP server |
| Capture | Live, on an iPhone or iPad with LiDAR, iOS 16+ | Any video (up to 4 GB and 10 minutes) or up to 120 photos, from any device |
| Geometry and dimensions | Yes: walls, doors, windows, openings | No measurements, no floor plan |
| Objects | 16 categories, as boxes; a few attributes for chairs, sofas, storage and tables | Every item it can name, with quantity, condition, brand, model, visible text and aliases |
| Position | 3D coordinates | Anchor, relation and viewpoint, plus an orientation per room |
| Condition, issues | Not described in the docs | Condition per item and area; issues with severity |
| Narration | Not part of the capture | Transcribed in any language; becomes facts, instructions and notes |
| Evidence | The capture itself | The original frames each record cites, each record checked again on them |
| Price | Part of Apple's SDK | Free test keys; first live scan free with a card on file, then $1.00 per scan |

If your app already uses RoomPlan, keep it for the geometry and send the same walkthrough to Space Context for the contents: a video recorded alongside the capture is all it needs.

## How do you get placements from a video?

With the CLI (Node.js 22.12 or later, nothing to install):

```bash
npx spacecontext login
npx spacecontext scan ./living-room.mp4 --name "Flat 4B" --type apartment --json > flat.json
jq '.items[] | {name, location, placement}' flat.json
```

With the TypeScript SDK:

```ts
import { SpaceContext } from '@spacecontext/sdk';

const sc = new SpaceContext();
const { document } = await sc.scan('./living-room.mp4', { name: 'Flat 4B', type: 'apartment' });
for (const item of document.items) {
  console.log(item.name, '→', item.placement?.relation, item.placement?.anchor);
}
```

Or ask an assistant connected through the [MCP server](https://spacecontext.app/blog/mcp-server-for-physical-spaces/): "Where is the floor heater in Flat 4B?" gets the placement in words, with the frame that shows it. When an agent describes a position to someone standing elsewhere, it should repeat the record's viewpoint rather than mirror left and right on its own: the placement says from where it holds.

Videos can be up to 4 GB and 10 minutes, and the report can be written in English, Italian, Spanish, French, German, Portuguese or Dutch whatever language is spoken. The step-by-step API flow is in [Video to structured data API](https://spacecontext.app/blog/video-to-structured-json-api/).

## Try it without a LiDAR phone

Any video will do, including one you already have. Start with a [free test key](https://spacecontext.app/developers/console/), which runs the whole flow and returns the demo space at no cost, then scan your own room: the first live scan is free with a card on file, then $1.00 per scan.

## FAQ

### Does Space Context need a LiDAR iPhone like RoomPlan?

No. It takes an ordinary video (MP4, MOV, M4V, 3GP, WebM or Matroska, up to 4 GB and 10 minutes) or up to 120 photos, from any phone or camera, and does the analysis on the server through a REST API, a CLI, a TypeScript SDK or an MCP server.

### Does Space Context measure the room or draw a floor plan?

No. It records what is in the room: items with category, quantity, condition, brand and visible text, where each one is relative to a landmark, issues and key locations, each with the frames that show it. For dimensions and a 3D model, RoomPlan or another measuring tool is the right choice, and the two can be used together.

### How does Space Context say where an object is without coordinates?

As a placement: an anchor (a fixed landmark such as a wall, a door or another item), a relation (on, inside, under, above, below, left of, right of, in front of, behind, opposite, beside) and, for left and right, the viewpoint that makes them true. Each area also has an orientation sentence from a standard viewpoint.

### How much does it cost compared with RoomPlan?

RoomPlan is a framework in Apple's SDK that runs in your own iOS app. Space Context is a hosted API: test keys are free and return the demo space, the first live scan is free with a card on file, then each scan costs $1.00 from prepaid credit, and failed scans are refunded.
