Use this guide when you already know you want Prove Unified Authentication with a server-side SDK (Go, Java, .NET, TypeScript, or JavaScript). When you finish, your backend can start a Unify session, poll for the final possession result, and—if you use customer-supplied possession—bind the phone to the Prove Key. For conceptual background (flows, possession variants, Prove Key), see Unified Authentication overview. For end-to-end wiring with the client SDKs, see Unified Authentication implementation guide. PrerequisitesDocumentation Index
Fetch the complete documentation index at: https://developer.prove.com/llms.txt
Use this file to discover all available pages before exploring further.
- Prove OAuth — Client ID and client secret (Authentication).
- Client integration — Your front end uses a Prove Unify client SDK; this guide covers the backend calls those clients depend on.
HTTP endpoints for this how-to
POST /v3/unifyPOST /v3/unify-statusPOST /v3/unify-bind(customer-supplied possession only)
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.
Unify()
Add an endpoint to your server such as POST /unify so the front end can submit the possession type and phone number. On the back end, start a Prove Unified Authentication flow with a call to the Unify() function. This function takes these required parameters:
- Possession Type: specify
mobile,desktop, ornonefor customer-supplied possession to describe which type of device the end user is starting their flow on. - Phone Number: phone number of the end user.
Timeouts (operational)
desktop uses Instant Link (three minutes from SMS send to link use). mobile tries the Prove Key first, then can fall back to OTP (two minutes from SMS send to code entry). For how possession variants fit together, see Unified Authentication overview.finalTargetUrl when possessionType=desktop, checkReputation, identifiers, deviceId, rebind, allowOTPRetry) are documented on POST /v3/unify. Set them according to your product rules.
For OTP retries (
allowOTPRetry), implement the matching client behavior described in Unified Authentication implementation guide.Unify() response
- Auth token — When Prove-led possession applies, return this to the client for
Authenticate(). Short-lived JWT scoped to this session. - Correlation ID — Persist on the server and pass into
UnifyStatus()for the same flow. Expires 15 minutes after this response. - Success — On this first call, expect
pendingwhile possession runs.
POST /v3/unify.
UnifyStatus()
After the client finishes possession, call UnifyStatus() with the correlation ID from Unify() to read the final outcome (including success). This maps to POST /v3/unify-status.
Required
- Correlation ID — UUID returned by
Unify(). Format:^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$.
POST /v3/unify-status.
You can then respond to the front end with the results of the authentication.
UnifyBind()
Customer-supplied possession only: after your possession check succeeds, call UnifyBind() to bind the phone to the Prove Key. This maps to POST /v3/unify-bind.
Required
- Correlation ID — From the
Unify()response. - Phone number — To bind to the Prove Key.
clientRequestId) are listed on POST /v3/unify-bind.
The function returns the following fields:
-
Success:
trueif the binding succeeded,falseif it failed. - Phone Number: the phone number bound to the Prove Key.
- clientHumanId: a client-generated unique ID to identify a specific customer across business lines.
- clientRequestId: a client-generated unique ID for a specific session.
- deviceId: the unique identifier for the Prove Key on the device.
POST /v3/unify-bind. Interpret evaluation using the Global Fraud Policy when present.
