Android SDK

How It Works?

  1. Register your app at and get your client keys and server key.

  2. Add VerifyKit SDK to your app

  3. Configure and start VerifyKit SDK

  4. When verification is complete, send sessionId which VerifyKit SDK gives you to your backend service.

  5. At your server side, get user's phone number from VerifyKit service with serverKey and sessionId. You can check Rest Api Docs.


ServerKey is used for getting info from VerifyKit service.

Please keep ServerKey safe. Do not include it in your client's code base.

VerifyKit Flow



Minimum SDK Version is api 16

// Add it to your app build.gradle at the end of repositories:
implementation 'org.bitbucket.verifykit:verifykit-android:0.11.1'
//Add it to your root build.gradle at the end of repositories:
allprojects {
  repositories {
      maven { url '' }  


In your Application file you should initialize VerifyKit. VerifyKit.init() method needs VerifyKitOptions object.


  val theme = VerifyKitTheme(
            backgroundColor = Color.WHITE
                isLogEnabled = true,
                verifyKitTheme = theme

You can call VerifyKit.startVerification(this) method from your Activity or Fragment then get the result via VerifyCompleteListener interface from your Activity or Fragment.


VerifyKit.startVerification(this, object : VerifyCompleteListener {
    override fun onSuccess(sessionId: String) {
      // TODO operate SUCCESS process    
    override fun onFail(error: VerifyKitError) {
      // TODO operate FAIL process    

Optional: You can pass user phone number to VerifyKit with startVerification method. In this way VerifyKit doesn’t ask phone number to user

    activity = this,  
    countryPhoneCode = "+90",
    phoneNumber = "5555555555",  
    mCompleteListener = object : VerifyCompleteListener {  
        override fun onSuccess(sessionId: String) {  
            // TODO operate SUCCESS process  
        override fun onFail(error: VerifyKitError) {  
            // TODO operate FAIL process  


There may be a case when user chooses a third party messaging app for validation, sends a message, but doesn't return to main app and kills it. In that case, that user is verified with VerifyKit but the main app doesn't know it yet.

To fix this, we have a method to check interrupted session status.

VerifyKit.checkInterruptedSession(object : VerifyCompleteListener {
    override fun onSuccess(sessionId: String) {
        // sessionId    
    override fun onFail(error: VerifyKitError) {
        // error    


Open the /app/manifest/AndroidManifest.xml file.

Add the following meta-data elements, an activity for VerifyKit and intent filter for App Link inside your application element:

    android:value="your_verifykit_client_key" />
    android:value="your_verifykit_client_secret" />
<intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />      
      <category android:name="android.intent.category.DEFAULT" />      
      <category android:name="android.intent.category.BROWSABLE" />      
            android:scheme="https" />    

An Android App Link is a deep link based on your website URL that has been verified to belong to your website. So clicking one of these immediately opens your app if it's installed—the disambiguation dialog does not appear. Though the user may later change their preference for handling these links. For verifying your App Link see document.


-keep class com.verifykit.sdk.core** { *; }

Backend Integration

When the verification is complete, in order to get information of the verified user, you should integrate with VerifyKit Rest API. After receiving the sessionID variable from the Web SDK, you can fetch your client's data, such as phone numbers , from VerifyKit Rest API service.

This integration requires a ServerKey token that is unique to your application in VerifyKit and used as both an identifier and a security measure. For this reason, you have to use your ServerKey token in backend integration. You can not use ServerKey on your client-side.

For further info on how to integrate this part please click here.

Need some help?

We all need a little help sometimes. If you have any question or request, feel free to create an issue.

Last updated