> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fingerprint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Request filtering for mobile apps

To prevent malicious actors from misusing your public API key, you can [filter out unwanted identification requests](/docs/request-filtering). These requests are not billed and will receive an error instead of the identification result.

This page covers filtering requests made from mobile apps. You can filter requests by mobile app **package name** (Android) or **bundle ID** (iOS). To block requests from web browsers, see [Request filtering for websites](/docs/request-filtering-for-websites).

<Note>
  **Availability**

  Filtering requests from mobile app requires [Android SDK v2.4.0+](https://github.com/fingerprintjs/fingerprintjs-pro-android/releases/tag/v2.4.0) and [iOS SDK v2.4.0+](https://github.com/fingerprintjs/fingerprintjs-pro-ios/releases/tag/2.4.0)
</Note>

## Configuration

You can create mobile request filtering rules from the Fingerprint dashboard by specifying the *package names* (Android) or *bundle IDs* (iOS) of the blocked or allowed applications.

1. Navigate to the  **Dashboard** > **[Security](https://dashboard.fingerprint.com/traffic-rules)** > **Mobile Apps**.
2. Click **Configure**.
3. Choose the **Default behavior**:
   1. `Allow all except the ones listed below`: Fingerprint will **block the specified apps** from making identification requests. Requests from all other apps will be allowed.
   2. `Forbid all except the ones listed below`: Fingerprint will **allow only the specified apps** to make identification requests. Requests from all other apps will be blocked.
4. Fill in the **Exceptions** with the package names (Android) or bundle IDs (iOS) of the mobile app you want to allow or block. Wild cards are accepted.
5. Click **Save**.

<img src="https://mintcdn.com/fingerprint/TYcq-XM0A17l1fxD/images/6f0aa5087146baad77579e303020754411dbd89abadcc8e15094a2279a777033-CleanShot_2024-11-06_at_13.27.342x.png?fit=max&auto=format&n=TYcq-XM0A17l1fxD&q=85&s=4017e1a4ae3b1a2dda7c5d9a14e5482d" alt="" width="3152" height="1446" data-path="images/6f0aa5087146baad77579e303020754411dbd89abadcc8e15094a2279a777033-CleanShot_2024-11-06_at_13.27.342x.png" />

<img src="https://mintcdn.com/fingerprint/TYcq-XM0A17l1fxD/images/a3a6703f873c59ea9b70ba69bc075cd5fb042b2e7f79e8607b900f870c6294e5-CleanShot_2024-11-06_at_13.28.202x.png?fit=max&auto=format&n=TYcq-XM0A17l1fxD&q=85&s=68fac04b148c998023e325aa6a8de882" alt="" width="1974" height="1268" data-path="images/a3a6703f873c59ea9b70ba69bc075cd5fb042b2e7f79e8607b900f870c6294e5-CleanShot_2024-11-06_at_13.28.202x.png" />

## Error handling

Filtered-out requests are not billed and will receive a `PackageNotAuthorized`error instead of the identification result.

For more information on handling errors, see [Handling errors in Android SDK](/docs/android-sdk#handling-errors) and [Handling errors in the iOS SDK](/docs/ios-sdk#handling-errors).
