<!--
{
  "availability" : [
    "iOS: 10.0.0 -",
    "iPadOS: 10.0.0 -",
    "macCatalyst: 10.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CallKit",
  "identifier" : "/documentation/CallKit/CXCallController",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "CallKit"
    ],
    "preciseIdentifier" : "c:objc(cs)CXCallController"
  },
  "title" : "CXCallController"
}
-->

# CXCallController

A programmatic interface for interacting with and observing calls.

```
class CXCallController
```

## Overview

A [`CXCallController`](/documentation/CallKit/CXCallController) object interacts with calls by performing actions, which are represented by instances of [`CXCallAction`](/documentation/CallKit/CXCallAction) subclasses. You can request that one or more actions be performed in a single [`CXTransaction`](/documentation/CallKit/CXTransaction) object using the [`request(_:completion:)`](/documentation/CallKit/CXCallController/request(_:completion:)) method. A transaction may be rejected by the system for one of the reasons listed in the [`CXErrorCodeRequestTransactionError.Code`](/documentation/CallKit/CXErrorCodeRequestTransactionError-swift.struct/Code) enumeration.

Each [`CXCallController`](/documentation/CallKit/CXCallController) object manages a [`CXCallObserver`](/documentation/CallKit/CXCallObserver) object, which can be accessed using the [`callObserver`](/documentation/CallKit/CXCallController/callObserver) property. You can provide an object conforming to the [`CXCallObserverDelegate`](/documentation/CallKit/CXCallObserverDelegate) protocol to the call observer in order to be notified of any changes to active calls.

## Topics

### Creating New Call Controllers

[`-  init`](/documentation/CallKit/CXCallController/init())

Initializes a new call controller with a private, serial queue, which is used for calling completion blocks.

[`-  initWithQueue:`](/documentation/CallKit/CXCallController/init(queue:))

Initializes a new call controller with a specified queue, which is used for calling completion blocks.

### Accessing the Call Observer

[`callObserver`](/documentation/CallKit/CXCallController/callObserver)

Returns an observer for active calls.

### Requesting Transactions

[`-  requestTransaction:completion:`](/documentation/CallKit/CXCallController/request(_:completion:))

Requests that the actions in the specified transaction be asynchronously performed by the telephony provider.

[`-  requestTransactionWithAction:completion:`](/documentation/CallKit/CXCallController/requestTransaction(with:completion:)-ffme)

Requests that the transaction that contains the specified action be asynchronously performed by the telephony provider.

[`-  requestTransactionWithActions:completion:`](/documentation/CallKit/CXCallController/requestTransaction(with:completion:)-4o1m4)

Requests that the transaction that contains the specified actions be asynchronously performed by the telephony provider.

### Errors

[`CXErrorCodeRequestTransactionError`](/documentation/CallKit/CXErrorCodeRequestTransactionError-swift.struct)

[`Code`](/documentation/CallKit/CXErrorCodeRequestTransactionError-swift.struct/Code)

Error codes for the CallKit error domain.

[`CXErrorDomainRequestTransaction`](/documentation/CallKit/CXErrorDomainRequestTransaction)

Domain for errors when requesting a transaction from a call controller.

## Relationships

### Conforms To

[`Hashable`](/documentation/Swift/Hashable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`Equatable`](/documentation/Swift/Equatable)

[`CVarArg`](/documentation/Swift/CVarArg)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)