Bespot Gatekeeper is a highly customizable fraud prevention and geolocation verification platform for mobile and web applications. It verifies user locations, detects device integrity issues, and monitors network connections to help organizations—particularly in the iGaming, Media Streaming, and Financial Services industries—comply with regulations and protect digital transactions from fraud.
Refer to our documentation for the latest list of fraud detection capabilities available across platforms.
Add the following lines to the dependencyResolutionManagement block in your settings.gradle.kts file, or to the repositories block in the root build.gradle.kts file if you're using the legacy structure.
dependencyResolutionManagement {
maven(url = "https://artifactory.bespot.com/artifactory/bespot-antifraud")
maven(url = "https://artifactory.bespot.com/artifactory/bespot-logger")
maven(url = "https://jitpack.io" )
}The bespot-logger dependency enables logging to assist our developers with debugging, while the jitpack dependency supports certain SDK components. We plan to remove these dependencies in a future update.
Next, add the following dependency to your app’s build.gradle.kts file.
dependencies {
implementation("com.bespot.antifraud:sdk-android:$latest_version")
}Finally, include the following, API_KEY, API_URL, CLIENT_ID, CLIENT_SECRET and OAUTH2_TOKEN_URL as resValues entries in your app’s build.gradle.kts file:
resValue("string", "antifraud_sdk_key", YOUR_API_KEY)
resValue("string", "antifraud_sdk_api_url", API_URL)
resValue("string", "antifraud_sdk_client_id", YOUR_CLIENT_ID)
resValue("string", "antifraud_sdk_client_secret", YOUR_CLIENT_SECRET)
resValue("string", "antifraud_sdk_oauth2_token_url", OAUTH2_TOKEN_URL)or via your app's strings.xml file
<string name="antifraud_sdk_key">YOUR_API_KEY</string>
<string name="antifraud_sdk_api_url"> API_URL</string>
<string name="antifraud_sdk_client_id">YOUR_CLIENT_ID</string>
<string name="antifraud_sdk_client_secret"> YOUR_CLIENT_SECRET</string>
<string name="antifraud_sdk_oauth2_token_url">OAUTH2_TOKEN_URL</string>Depending on your fraud prevention strategy, the Gatekeeper SDK requires the following permissions:
The Gatekeeper SDK provides the following methods for use in client applications:
This method performs a single check for fraudulent activities. It should be used when the application need to verify a specific user action, ex. the user clicks a button in your app.
The check method uses a FraudulentCheckObserver callback which can be used for handling the Actions returned from our service or possible Failures.
safeSdk.check(object : FraudulentCheckObserver {
override fun onSuccess(action: Action, signature: String) {
// Your onSuccess logic
}
override fun onError(error: Failure) {
// Your onError logic
}
}
)This method initializes a subscription to periodic detections, running at a configurable interval (as low as 1 second), which can be customized per application. It’s ideal for continuously monitoring changes in the device’s fraud detection state over time, rather than responding to specific user actions.
The subscribe method relies on a FraudulentSessionObserver callback to handle both the Actions returned by our service and any potential Failures.
safeSdk.subscribe(object : FraudulentSessionObserver {
override fun perform(action: Action, signature: String) {
// Your onSuccess logic
}
override fun onError(error: Failure) {
// Your onError logic
}
}
)This method ends the subscription at regular intervals.
safeSdk.unsubscribe()This method sets a String value as the User ID. It’s recommended to use a unique identifier, such as an account ID, player ID, or loyalty number.
safeSdk.setUserId(id: String)This method enables logging for our service and should be used only in debug builds.
safeSdk.logging(enable: Boolean)Since the Callbacks used in the check and subscribe methods are similar, they will be unified in a future update.
When an error occurs, the check and subscribe methods return the following objects, which should be properly handled:
when (error) {
is Failure.NetworkConnection -> // Connection Error
is Failure.NoActiveApiKey -> // The Api Key is either disabled or wrong
is Failure.NoChecksAvailableFailure -> // The server did not find available Checks
is Failure.NoRecipeFoundFailure -> // The application does not have a valid Recipe
is Failure.NotInitialized -> // The SDK is not initialized
is Failure.ServerError -> // Remote Server Error
is Failure.UnknownError -> // Unknown Error (see Support section)
}We use Github issues to track bugs and feature requests.
- If you encounter a bug, please open an issue and include as much detail as possible.
- If you have a feature suggestion or improvement idea, feel free to submit it as a proposal.
© 2025 Bespot Private Company. All rights reserved. See LICENSE for more information.

