# Completing Verification

Once you receive a callback in your `VerificationCallback` instance with the requestCode `TYPE_MISSED_CALL_RECEIVED` or TYPE\_OTP\_RECEIVED , you can complete the verification process by calling the following method from within your activity :

```
TrueProfile profile = new TrueProfile.Builder(firstName, lastName).build();
```

You need to create a TrueProfile instance by passing the user's first and last name as defined above.&#x20;

{% hint style="info" %}
Please note that the first name and last name values to be passed in the above method call need to follow below mentioned rules :\
\
\- The strings need to contains at least 1 alphabet, and cannot be completely comprised of numbers or special characters\
\- String length should be less than 128 characters\
\- First name is a mandatory field, last name can be empty ( but non nullable )&#x20;
{% endhint %}

\
Depending on whether the verification medium is **drop call** or **OTP,** you need to call one of the following methods respectively:

{% tabs %}
{% tab title="Dropcall" %}

```
TruecallerSDK.getInstance().verifyMissedCall(profile, apiCallback)
```

You need to call this method once you have received callback with requestCode as `TYPE_MISSED_CALL_RECEIVED` in your `VerificationCallback` instance
{% endtab %}

{% tab title="OTP" %}

```
TruecallerSDK.getInstance().verifyOtp(profile, OTP, apiCallback)
```

You need to call this method once you have received the callback in your `VerificationCallback` instance with requestCode as `TYPE_OTP_RECEIVED` and the OTP as a string in *VerificationDataBundle*

If your input mobile number is not present on the same device, you need to ask the user to input the OTP manually in case of OTP based verification
{% endtab %}
{% endtabs %}

After you call the above method, you will receive a callback in your `VerificationCallback` instance with requestCode as `TYPE_VERIFICATION_COMPLETE,` which completes your verification process.

Whenever you get the verification callback with requestType as `TYPE_VERIFICATION_COMPLETE,` you would get an *accessToken* as a parameter in the *verificationDataBundle.* You can use this access token to validate the authenticity of the verification flow by making an API call from your server to Truecaller's server. For details on this part, please refer [here](/truecaller-sdk/android/sdk-v2.8.0/server-side-response-validation/for-non-truecaller-users-verification-flow.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://truecaller4developers.gitbook.io/truecaller-sdk/android/sdk-v2.8.0/integrating-with-your-app/verifying-non-truecaller-users/completing-verification.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
