<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.6.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ImageCaptureCore",
  "identifier" : "/documentation/ImageCaptureCore",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "ImageCaptureCore"
    ],
    "preciseIdentifier" : "ImageCaptureCore"
  },
  "title" : "ImageCaptureCore"
}
-->

# ImageCaptureCore

Browse for media devices and control them programmatically from your app.

## Overview

Using ImageCaptureCore, your app can:

- Discover connected cameras and scanners
- View and modify the folders, files, and metadata on a connected camera
- Take photos directly on a connected camera using tethered capture
- Perform overview scans and scans on a connected scanner

![Diagram showing a macOS device connected by cables to a camera and a scanner, and an iPadOS device connected by cable to a camera.](images/com.apple.imagecapturecore/media-3501083@2x.png)

### Configuring tethered capture and photo import

To import pictures and tether from a macOS app, you first need to enable the Hardened Runtime capability in Xcode, and then add the <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.security.personal-information.photos-library>.

Before you can tether from an iOS app, you need to tell the user why the app is requesting access to an external camera. Add the <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSCameraUsageDescription> key to your `Info.plist` file with a description of your intended use.

> Important:
> In macOS 14 and later, use the <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.security.device.usb> entitlement key to allow your sandboxed app to interact with USB devices.

## Topics

### Essentials

[`ICDeviceBrowser`](/documentation/ImageCaptureCore/ICDeviceBrowser)

An object for finding digital cameras and scanners.

  <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.security.personal-information.photos-library>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/NSCameraUsageDescription>

### Cameras

[`ICCameraDevice`](/documentation/ImageCaptureCore/ICCameraDevice)

An object that represents a camera.

[`ICCameraDeviceDelegate`](/documentation/ImageCaptureCore/ICCameraDeviceDelegate)

Methods for detecting cameras, getting metadata and thumbnails, handling access and capability changes, and performing other actions on connected cameras.

[`ICCameraItem`](/documentation/ImageCaptureCore/ICCameraItem)

An abstract class that represents a camera item.

[`ICCameraFile`](/documentation/ImageCaptureCore/ICCameraFile)

An object that represents a file on a camera.

[`ICCameraFolder`](/documentation/ImageCaptureCore/ICCameraFolder)

An object that represents a folder on a camera.

### Scanners

[`ICScannerDevice`](/documentation/ImageCaptureCore/ICScannerDevice)

An object that represents a scanner.

[`ICScannerDeviceDelegate`](/documentation/ImageCaptureCore/ICScannerDeviceDelegate)

Methods for determining availability, selecting a functional unit, and performing scans on connected scanners.

[Scanner Configuration](/documentation/ImageCaptureCore/scanner-configuration)

Examine a scanner’s functional units and features.

### Errors

[`ICReturn`](/documentation/ImageCaptureCore/ICReturn)

[`ICLegacyReturn`](/documentation/ImageCaptureCore/ICLegacyReturn)

[`ICReturnConnectionError`](/documentation/ImageCaptureCore/ICReturnConnectionError)

A connection error returned from ImageCaptureCore.

[`ICReturnDownloadError`](/documentation/ImageCaptureCore/ICReturnDownloadError)

A download error returned from ImageCaptureCore.

[`ICReturnMetadataError`](/documentation/ImageCaptureCore/ICReturnMetadataError)

A metadata error returned from ImageCaptureCore.

[`ICReturnObjectError`](/documentation/ImageCaptureCore/ICReturnObjectError)

An object error returned from ImageCaptureCore.

[`ICReturnPTPDeviceError`](/documentation/ImageCaptureCore/ICReturnPTPDeviceError)

A PTP device error returned from ImageCaptureCore.

[`ICReturnThumbnailError`](/documentation/ImageCaptureCore/ICReturnThumbnailError)

A thumbnail error returned from ImageCaptureCore.

### Legacy Symbols

[`ICRunLoopMode`](/documentation/ImageCaptureCore/ICRunLoopMode)

### Articles

[ImageCaptureCore Constants](/documentation/ImageCaptureCore/imagecapturecore-constants)

[ImageCaptureCore Data Types](/documentation/ImageCaptureCore/imagecapturecore-data-types)

[ImageCaptureCore Enumerations](/documentation/ImageCaptureCore/imagecapturecore-enumerations)

[ImageCaptureCore Macros](/documentation/ImageCaptureCore/imagecapturecore-macros)



---

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)