<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RoomPlan",
  "identifier" : "/documentation/RoomPlan/RoomCaptureSession",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "RoomPlan"
    ],
    "preciseIdentifier" : "s:8RoomPlan0A14CaptureSessionC"
  },
  "title" : "RoomCaptureSession"
}
-->

# RoomCaptureSession

An object that manages the room-scanning process.

```
class RoomCaptureSession
```

## Overview

This class scans a room on the app’s behalf and provides the necessary callbacks for you to display
your own UI.

As an alternate approach to the UX of the framework-provided view ([`RoomCaptureView`](/documentation/RoomPlan/RoomCaptureView)), this class
is appropriate for apps that intend to display their own view and scanning experience. You can start
your own AR experience by accessing this class’s [`arSession`](/documentation/RoomPlan/RoomCaptureSession/arSession), or by providing your own <doc://com.apple.documentation/documentation/ARKit/ARSession> instance to the [`init(arSession:)`](/documentation/RoomPlan/RoomCaptureSession/init(arSession:)) initializer.

To produce a 3D asset of the user’s environment, this class:

- Utilizes an ARKit session ([`arSession`](/documentation/RoomPlan/RoomCaptureSession/arSession)) that enables the device’s LiDAR Scanner to capture the environment’s physical layout.
- Provides instructions that you display to the user to coach them on moving the device appropriately
  to collect the necessary data.

## Topics

### Creating a session

[`init(arSession:)`](/documentation/RoomPlan/RoomCaptureSession/init(arSession:))

### Ensuring device support

[`isSupported`](/documentation/RoomPlan/RoomCaptureSession/isSupported)

A Boolean value that indicates whether the user’s device supports the framework.

### Controlling a session

[`run(configuration:)`](/documentation/RoomPlan/RoomCaptureSession/run(configuration:))

Starts a room-capture session with the specified configuration.

[`Configuration`](/documentation/RoomPlan/RoomCaptureSession/Configuration)

Settings that configure the room-scanning process.

[`stop()`](/documentation/RoomPlan/RoomCaptureSession/stop())

Stops the room-capture session.

[`stop(pauseARSession:)`](/documentation/RoomPlan/RoomCaptureSession/stop(pauseARSession:))

Stops the room-capture session and indicates whether the app pauses the underlying AR session.

### Responding to events

[`delegate`](/documentation/RoomPlan/RoomCaptureSession/delegate)

An object that observes important events in the room-scanning process.

[`CaptureError`](/documentation/RoomPlan/RoomCaptureSession/CaptureError)

Errors that can occur during a room-capture session.

### Accessing the AR session

[`arSession`](/documentation/RoomPlan/RoomCaptureSession/arSession)

An object that manages an ARKit session.

### Displaying user instructions

[`Instruction`](/documentation/RoomPlan/RoomCaptureSession/Instruction)

Instructions that the framework recommends the app display to the user.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)