> For the complete documentation index, see [llms.txt](https://docs.truecaller.com/truecaller-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.truecaller.com/truecaller-sdk/ios/integrating-with-your-ios-app/verifying-non-truecaller-app-users/completing-verification.md).

# Completing Verification

Once verificationState is *TCVerificationState.otpInitiated* and the user has entered the OTP, first name and last name(optional), you can complete the verification process by calling the following method :

**Swift:** `TCTrueSDK.sharedManager().verifySecurityCode(<#OTP>, andUpdateFirstname: <#FIRST_NAME>, lastName:<#LAST_NAME>)`

**Objective C**

`[[TCTrueSDK sharedManager] verifySecurityCode:<#OTP> andUpdateFirstname:<#FIRST_NAME> lastName:<#LAST_NAME>];`

Please note that the first name and last name values to be passed in the above method call need to follow the below mentioned rules :

* The strings need to contain 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 null )

After you call the above method, your delegate method *verificationStatusChanged()* with verification status as TCVerificationState.verificationComplete is called and the user profile is received in delegate method

**Objective C:** `- (void)didReceiveTrueProfile:(nonnull TCTrueProfile *)profile`

**Swift:** `func didReceive(_ profile: TCTrueProfile)`

Whenever you get verification status as *TCVerificationState.verificationComplete*, SDK will share an additional access token with your application which can be accessed using the accessTokenForOTPVerification() method. 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.

**Swift:** `TCTrueSDK.sharedManager().accessTokenForOTPVerification()`

**Objective C :** `[[TCTrueSDK sharedManager] accessTokenForOTPVerification];`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.truecaller.com/truecaller-sdk/ios/integrating-with-your-ios-app/verifying-non-truecaller-app-users/completing-verification.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
