---
title: ARKitSession
framework: arkit
role: symbol
role_heading: Class
path: arkit/arkitsession
---

# ARKitSession

The main entry point for receiving data from ARKit.

## Declaration

```swift
final class ARKitSession
```

## Overview

Overview Sessions in ARKit require either implicit or explicit authorization. To explicitly ask for permission for a particular kind of data and choose when a person is prompted for that permission, call requestAuthorization(for:) before run(_:). The following shows a session that starts by requesting implicit authorization to use world sensing: let planeData = PlaneDetectionProvider(alignments: [.horizontal, .vertical])

Task {     do {         try await self.session.run([planeData])         // Update app based on the planeData.anchorUpdates async sequence.     } catch {         print("ARKitSession error:", error)     } } Because a PlaneDetectionProvider instance’s required authorizations include ARKitSession.AuthorizationType.worldSensing, the system asks someone using your app to permit world sensing before ARKit supplies any of that kind of data. note: ARKit stops sessions when they’re deinitialized; keep a reference to a session instance for as long as the session needs to run.

## Topics

### Starting and stopping a session

- [init()](arkit/arkitsession/init().md)
- [run(_:)](arkit/arkitsession/run(_:).md)
- [stop()](arkit/arkitsession/stop().md)
- [ARKitSession.Error](arkit/arkitsession/error.md)

### Getting authorization

- [requestAuthorization(for:)](arkit/arkitsession/requestauthorization(for:).md)
- [ARKitSession.AuthorizationType](arkit/arkitsession/authorizationtype.md)
- [queryAuthorization(for:)](arkit/arkitsession/queryauthorization(for:).md)
- [ARKitSession.AuthorizationStatus](arkit/arkitsession/authorizationstatus.md)

### Observing a session

- [events](arkit/arkitsession/events-swift.property.md)
- [ARKitSession.Events](arkit/arkitsession/events-swift.struct.md)
- [ARKitSession.Event](arkit/arkitsession/event.md)
- [description](arkit/arkitsession/description.md)

### Initializers

- [init(device:)](arkit/arkitsession/init(device:).md)

### Instance Properties

- [dataProviders](arkit/arkitsession/dataproviders.md)

## Relationships

### Conforms To

- [CustomStringConvertible](swift/customstringconvertible.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### visionOS

- [Setting up access to ARKit data](visionos/setting-up-access-to-arkit-data.md)
- [DataProvider](arkit/dataprovider.md)
- [Anchor](arkit/anchor.md)
- [ARKit in visionOS](arkit/arkit-in-visionos.md)
