---
title: Error handling
canonical: https://developer.unico.io/dual-api/developers/sdks-and-tools/ios/error-handling
locale: en
generated_by: markdown-export
---

All error handling for the iOS SDK is centralized in this section. The `onErrorAcessoBioManager` callback receives an `ErrorBio` object exposing `getCode()` and `getDescription()`.

## Error codes

| Code | Description |
|---|---|
| `73000` | The session was cancelled because of an unknown and unexpected error. The Unico Check SDK leverages a variety of iOS APIs including camera, storage, security, networking, and more — this is a catch-all. |
| `73001` | Context invalid |
| `73003` | The API version needs to be 13 or newer |
| `73006` | Unable to open camera on emulators |
| `73100` | Unable to connect to internet |
| `73200` | Could not find the unico_sdk JSON file |
| `73202` | Unable to load unico_sdk JSON file |
| `73203` | Unable to load `AcessoBioConfigDataSource` |
| `73204` | Unable to initialize the SDK — configure the environment via `setEnvironment` on build |
| `73300` | Unable to get unico authentication object |
| `73301` | Unable to parse unico authentication object |
| `73302` | Could not find the unico token |
| `73701` | Could not find active liveness import |
| `73702` | Unable to initialize active liveness in production mode |
| `73703` | Unable to get active liveness session |
| `73704` | The user pressed the cancel button and did not complete the session |
| `73705` | The session was not performed successfully and a FaceScan was not generated |
| `73706` | Camera access denied — user explicitly denied permission or device policy blocks it |
| `73707` | The session was cancelled due to the app being terminated, sleeping, OS notification, or backgrounded |
| `73708` | The session was cancelled because the device is in landscape mode |
| `73709` | The session was cancelled because the device is in reverse portrait mode |
| `73710` | The session was cancelled because the user was unable to complete it within the allotted timeout |
| `73711` | The session was cancelled due to memory pressure |
| `73712` | The session was cancelled because your app is not in production and requires a network connection |
| `73713` | The session was cancelled because your key needs to be validated again |
| `73714` | The session was cancelled because the developer-configured encryption key was not valid |
| `73715` | The session was cancelled because not all guidance images were configured |
| `73716` | The session was cancelled because the SDK was unable to start the camera on this device |
| `73717` | The session was cancelled because the user was in a locked-out state |
| `73718` | Unknown and unexpected error during normal usage of iOS APIs |
| `73719` | The session was cancelled because the user pressed the Get Ready screen subtext message |
| `73720` | The session was not processed |
| `73721` | The session can't be performed: attempts limit exceeded |
| `73722` | The session can't be performed: face alignment timeout |
| `73730` | Unable to initialize an active liveness session — unknown license error |
| `73731` | Unable to initialize an active liveness session — license expired |
| `73800` | Could not build encrypted key |

:::secondary[Official error catalog]
The codes above reflect the iOS SDK catalog. The official cross-platform error code catalog is available at [API Reference > Error codes](/dual-api/developers/api-reference/error-codes).
:::

## Lifecycle callbacks

In addition to `onErrorAcessoBioManager`, the SDK also triggers:

- `onUserClosedCameraManually()` — user closed the camera manually.
- `onSystemClosedCameraTimeoutSession()` — session expired due to timeout (default 40 s, minimum 40 s).
- `onSystemChangedTypeCameraTimeoutFaceInference()` — face detection exceeded the 13 s threshold; capture switches to manual mode.

:::info[Callback routing for cancellations and timeouts]
Errors `73704` (user cancelled) and `73710` (session timeout) are **not** delivered through `onErrorAcessoBioManager`. They trigger the corresponding lifecycle callbacks directly:
- `73704` → `onUserClosedCameraManually()`
- `73710` → `onSystemClosedCameraTimeoutSession()`
:::