# SDK Modes

The SDK runs in one of three modes, selected through the `sdkMode` property (type `SDKMode`) on `IncdOnboardingManager.shared`. The mode controls how and when captured data is sent to Incode. Choose the mode that matches your integration's network, privacy, and timing requirements.

| Mode             | What It Does                                                                                                                    | When To Use It                                                                                                                                                                                                          |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Standard**     | Captures data and sends it to Incode in real time as the flow runs. Results are returned through the delegate callbacks.        | The default. Use when the device has connectivity and you want server-side validation as each step completes.                                                                                                           |
| **Capture-Only** | Captures media on-device without sending it to Incode. You retain the captured data and submit it later from your own back end. | Use when capture and submission must be decoupled, or capture happens in an environment without a direct path to Incode. See [Capture-Only Mode](https://developer.incode.com/docs/ios-capture-only-sdk). |
| **Submit-Only**  | Submits previously captured data to Incode without showing the capture UI.                                                      | Use as the counterpart to Capture-Only, once data has already been captured and needs to be submitted for verification.                                                                                                 |

The mode is set on the shared manager before a flow starts:

```swift
IncdOnboardingManager.shared.sdkMode = .standard
```

`initIncdOnboarding` authenticates the SDK and prepares it for use. In `-tri` builds there is an additional overload that accepts a Transactional Risk Intelligence (TRI) configuration; other variants expose only the non-TRI overload.

***

## Standard Mode

Standard mode is the default (`SDKMode.standard`). The SDK captures each module's data and sends it to Incode as the flow progresses. Server-side validation results are available in real time through the `IncdOnboardingDelegate` result callbacks. No additional configuration is required.

```swift
IncdOnboardingManager.shared.sdkMode = .standard
```

See [Getting Started](https://developer.incode.com/docs/ios-getting-started) for the standard integration.

***

## Capture-Only Mode

Capture-Only mode (`SDKMode.captureOnly`) runs the capture UI on the device without sending the captured data to Incode during the flow. The result objects include the raw capture data, and your back end submits it separately. This mode uses a dedicated integration path.

```swift
IncdOnboardingManager.shared.sdkMode = .captureOnly
```

In the **Public** distribution variant, `captureOnly` is restricted and the SDK reverts to `standard`.

See [Capture-Only Mode](https://developer.incode.com/docs/ios-capture-only-sdk) for the full guide, including how the raw captures and diagnostics are delivered to your app.

***

## Submit-Only Mode

Submit-Only mode (`SDKMode.submitOnly`) is the counterpart to Capture-Only: it submits previously captured data to Incode without showing the capture UI.

```swift
IncdOnboardingManager.shared.sdkMode = .submitOnly
```

For fully programmatic capture and verification without presenting any SDK UI, use the headless APIs described in the [API Reference](https://developer.incode.com/docs/ios-api-reference#headless--programmatic-apis-no-capture-ui).

<br />
