---
Source: https://docs.microblink.com/blinkid/scanning-use-cases
Title: Scanning use cases
Description: Configure BlinkID by describing your use case instead of setting individual scanning settings
---

# Scanning use cases

:::note

Added in BlinkID Web v8003.0.0, and in BlinkID Android and iOS v8002.0.0.
Earlier v8xxx versions don't have use cases; configure [session settings](session-settings.md) and [scanning settings](scanning-settings.md) directly instead.

:::

BlinkID has more than 30 [scanning settings](scanning-settings.md).
Instead of setting them one by one, you can describe your use case and let BlinkID build the matching session settings for you.

You can override individual settings before you start the scanning session.

## Use cases

We offer the following main use cases:

- **Document video**: live document scanning from a camera stream.
- **Document photo**: document scanning from a single photo or gallery image.
- **Standalone barcode**: barcode scanning without document detection.
- **Verify capture**: live camera capture for images you send to [BlinkID Verify](/verify).

Use cases are represented by their corresponding *builders*, functions which return the final session settings.



<!-- interactive component omitted -->


  

<!-- interactive component omitted -->


  

<!-- interactive component omitted -->


</Tabs>

## Build session settings from a use case

Pass a use case object to the builder.
Every option is optional; options you leave out use their default value.

<Tabs queryString="platform">

  <TabItem value="web" label="Web (TS)" default>

  With the `@microblink/blinkid` package, pass `presetScanningSettingsBuilder` to `createBlinkId`.
  The callback receives a builder that exposes the four builder functions.
  You can't combine `presetScanningSettingsBuilder` with the `scanningSettings` and `scanningMode` options.

  ```typescript
  import { createBlinkId } from "@microblink/blinkid";

  const blinkId = await createBlinkId({
    licenseKey: "your-license-key",
    presetScanningSettingsBuilder: (presetBuilder) =>
      presetBuilder.buildDocumentVideoSettings({
        scenario: "mrz-mandatory",
        quality: "high-accuracy",
      }),
  });
  ```

  With the `@microblink/blinkid-core` package, the builder functions are available on the loaded core instance.
  Pass the result to `createScanningSession`:

  ```typescript
  import { loadBlinkIdCore } from "@microblink/blinkid-core";

  const blinkIdCore = await loadBlinkIdCore({ licenseKey: "your-license-key" });

  const sessionSettings = await blinkIdCore.buildDocumentVideoSettings({
    scenario: "mrz-mandatory",
    quality: "high-accuracy",
  });

  const session = await blinkIdCore.createScanningSession(sessionSettings);
  ```

  </TabItem>
  <TabItem value="android" label="Android (Kotlin)">

  ```kotlin
  import com.microblink.blinkid.core.session.BlinkIdSessionSettings
  import com.microblink.blinkid.core.settings.usecase.DocumentScenario
  import com.microblink.blinkid.core.settings.usecase.DocumentVideoUseCase
  import com.microblink.blinkid.core.settings.usecase.VideoQualityProfile

  val sessionSettings = BlinkIdSessionSettings.documentVideo(
      DocumentVideoUseCase(
          scenario = DocumentScenario.MrzMandatory,
          quality = VideoQualityProfile.HighAccuracy,
      )
  )

  BlinkIdCameraScanningScreen(
      blinkIdSdk = blinkIdSdk,
      sessionSettings = sessionSettings,
      onScanningSuccess = { result -> /* handle result */ },
      onScanningCanceled = { }
  )
  ```

  </TabItem>
  <TabItem value="ios" label="iOS (Swift)">

  ```swift
  let sessionSettings = BlinkIDSessionSettings.documentVideo(
      DocumentVideoUseCase(
          scenario: .mrzMandatory,
          quality: .highAccuracy
      )
  )

  let analyzer = try await BlinkIDAnalyzer(
      sdk: sdk,
      blinkIdSessionSettings: sessionSettings
  )
  ```

  </TabItem>
</Tabs>

## Options

The document video use case has three options: `scenario`, `quality`, and `captureEnvironment`.
The document photo use case has two: `scenario` and `quality`.
The standalone barcode and Verify capture builders take no options.



<!-- interactive component omitted -->


  

<!-- interactive component omitted -->


  

<!-- interactive component omitted -->


</Tabs>

:::tip

The barcode-only scenario still detects the document and reads its barcode.
To read barcodes directly from the frame, without detecting a document, use the standalone barcode builder instead.

:::
## Settings applied by each option

Each builder starts from the default session settings and changes only the settings listed below.
All other settings keep their [default values](scanning-settings.md).
Unless stated otherwise, the quality settings are in `documentCaptureModule`.



<!-- interactive component omitted -->


  

<!-- interactive component omitted -->


  

<!-- interactive component omitted -->


</Tabs>

## Change individual settings

The builders return regular session settings, so you can change any setting before you start the session.
The following example starts from the default document video settings and also returns the cropped document image.

<Tabs queryString="platform">

  <TabItem value="web" label="Web (TS)" default>

  ```typescript
  import { createBlinkId } from "@microblink/blinkid";

  const blinkId = await createBlinkId({
    licenseKey: "your-license-key",
    presetScanningSettingsBuilder: async (presetBuilder) => {
      const settings = await presetBuilder.buildDocumentVideoSettings();

      return {
        ...settings,
        scanningSettings: {
          ...settings.scanningSettings,
          documentCaptureModule: {
            ...settings.scanningSettings.documentCaptureModule,
            documentImageReturnEnabled: true,
          },
        },
      };
    },
  });
  ```

  </TabItem>
  <TabItem value="android" label="Android (Kotlin)">

  ```kotlin
  val baseSettings = BlinkIdSessionSettings.documentVideo()

  val sessionSettings = baseSettings.copy(
      scanningSettings = baseSettings.scanningSettings.copy(
          documentCaptureModule = baseSettings.scanningSettings.documentCaptureModule?.copy(
              documentImageReturnEnabled = true
          )
      )
  )
  ```

  </TabItem>
  <TabItem value="ios" label="iOS (Swift)">

  ```swift
  var sessionSettings = BlinkIDSessionSettings.documentVideo()
  sessionSettings.scanningSettings.documentCaptureModule?.documentImageReturnEnabled = true
  ```

  </TabItem>
</Tabs>

Changed settings are still subject to [settings validation](settings-validation.md).

## Related articles

- [Session settings](session-settings.md)
- [Scanning settings](scanning-settings.md)
- [BlinkID settings validation](settings-validation.md)
- [Scan from a static image](scan-image.md)
- [Scan barcodes](scan-barcodes.md)
- [Scan a passport](scan-passport.md)


Last updated on Oct 26, 2026
