Installation
Install the server-side SDK of your choice by running a command in your terminal, or by using a dependency management tool specific to your project.Authentication
To access the Prove API, configure your OAuth 2.0 client ID and client secret. You can use environment variables or another method:proveEnv to uat-eu.
Token ExpirationThe OAuth token expires after 60 minutes. If it expires, generate another token.
Verify()
Add an endpoint to your server such as POST /verify so the front end can submit the flow type, phone number, first name, and last name. On the back end, start a Prove flow with a call to the Verify() function. This function takes these required parameters:
- Flow Type: either 
desktopormobileto describe which type of device the customer is starting their flow on. - Phone Number: phone number of the customer.
 
In sandbox, the phone number field determines which scenario to test. If you forget to pass in the phone number of a valid test user, then it returns a “no test user found matching the phone number” error.
- First Name: first name of the customer.
 - Last Name: last name of the customer.
 
Possession TimeoutsWhen flow type is 
desktop, Instant Link executes the possession check. When flow type is mobile, first Mobile Auth executes and then one-time password (OTP) as a fallback. The Instant Link session has a three minute timeout from when it’s sent through SMS to when the customer can select the link. The OTP session has a two minute timeout from when it’s sent through SMS to when the customer can enter in the OTP.- Final Target URL: required when 
flowType=desktop. This should be a URL you support. When the customer clicks the Instant Link, the system redirects them to this URL. The page instructs the customer to continue the workflow. Maximum length is 128 characters. 
- SMS Message: a field to customize the message body sent in the Instant Link or OTP SMS message. Otherwise, you can use Prove defaults.
 - Client Customer ID: a client-generated unique ID for a specific customer. You can link calls related to the same customer, across different requests or sessions. The client defines the format of this ID.
 - Client Request ID: a client-generated unique ID for a specific session. You can identify specific requests using this field. You decide the format of this ID.
 - 
Allow OTP Retry: set to 
trueto allow the customer to re-enter the OTP up to three times. Defaults tofalse.For OTP retries, make sure to implement client SDK changes as detailed in the Implementation Guide. 
- 
Auth Token: send this to your client-side code to pass into the 
Authenticate()function - it’s a short lived JSON Web Token (JWT) tied to the current flow and used for the possession checks. - 
Correlation ID: save this in your current session, then pass it in to each of the 
Validate(),Challenge(), andComplete()function calls of the same flow. The correlation ID ties together different system calls for the same Prove flow. It also aids in troubleshooting. The session expires in 15 minutes from when the correlation ID returns from theStart()call. - 
Success: 
trueif the challenge succeeded and customer info returned,falseif it failed, orpendingif the possession check needs to complete first. - 
Possession Result: either 
successif the possession check was successful,failedif it failed, orpendingif the possession check needs to complete first. - 
Verify Result: either 
successif the verification was successful,failedif it failed, orpendingif the verification check needs to complete first. 
authToken, returned to the front end.
VerifyStatus()
Once the possession check is complete, your back end calls VerifyStatus() to get the final result in the success field.
This function is the final call in the flow that verifies the customer information.
This function takes this required parameter:
- Correlation ID: the ID returned by the 
Verify()function. It validates against this regular expression:^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$. 
The function returns the following fields:
- 
Success: 
trueif the challenge succeeded and customer info returned,falseif it failed, orpendingif the possession check needs to complete first. - 
Possession Result: either 
successif the possession check was successful,failedif it failed, orpendingif the possession check needs to complete first. - 
Verify Result: either 
successif the verification was successful,failedif it failed, orpendingif the verification check needs to complete first. 
SDK UpdatesFind the server-side SDKs on GitHub. Once you create a free GitHub account, you can Watch any of the projects to receive notifications when there are updates.

