Prove publishes server-side SDKs for Go, Java, .NET, TypeScript, and JavaScript. Other stacks use the same HTTP operations documented under Reference (for exampleDocumentation Index
Fetch the complete documentation index at: https://developer.prove.com/llms.txt
Use this file to discover all available pages before exploring further.
POST /v3/start, POST /v3/validate, POST /v3/challenge, POST /v3/complete).
Prerequisites
- Server SDK — Installed in your service (see Set up Prove SDKs in your project or Install the server SDK below).
- OAuth credentials — Sandbox (or Production) client ID and secret from the Developer Portal; see Get started with Prove API authentication and Secure API credentials.
- Client possession path — Your app runs the client SDK for Mobile Auth / OTP / Instant Link as required.
Install the server SDK
Add the dependency for your language.Configure OAuth for the SDK
Initialize the client with your OAuth 2.0 client ID and client secret (environment variables or your secrets store).Follow the Next field
Each SDK call returns a Next map. Do not hard-code the full sequence after Start: read Next and call the indicated operation until the flow ends. The sections below describe parameters and return fields for each call.
Start()
Expose a server endpoint (for example POST /initiate) so your front end can send flow type, phone number, and any challenge inputs. On the server, call Start() with at least:
- Flow type —
desktopormobilefor the device class starting the session.
Possession channels — On desktop, possession typically uses Instant Link; on mobile, Mobile Auth then OTP when applicable. Instant Link and OTP sessions have short SMS-side timeouts; for behavior and UX, see Prove Pre-Fill flow.
- Final target URL — Required when
flowType=desktop: URL the customer reaches after tapping the Instant Link (max 128 characters).
Start():
ssn— Full SSN or last four digits.dob—YYYY-MM-DD,YYYY-MM, orMM-DD.allowOTPRetry—trueto allow up to three OTP retries (defaults tofalse). Requires matching client SDK handling.
-
Auth token — Short-lived JWT for the current flow; passed to the client
Authenticate()method for possession checks. -
Correlation ID — Identifier for this flow; include on future calls for the same session. Correlation context expires 15 minutes after
Start()returns. Useful for troubleshooting. -
Next— Next operation to invoke.
Validate()
Validates possession after the client signals completion. Parameter: correlation ID from Start() (often from a server route such as POST /verify).
success— Whether mobile validation succeeded.challengeMissing— Whentrue, collect SSN or DOB (or callChallenge()if those values were already supplied onStart()per your flow).phoneNumber— Validated number when present.Next— Next operation.
challengeMissing and Next to decide whether to return a challenge UI to the browser or invoke Challenge() on the server.
Challenge()
When Validate() includes v3-challenge in Next, call Challenge() to retrieve attributes for the phone number plus challenge. Pre-Fill uses this path. Prove Identity may move to v3-complete in Next after a successful Validate() instead of v3-challenge.
Parameters
- Correlation ID — From
Start()(required).
Validate() set challengeMissing=true, include one of:
ssndob— Same formats as onStart().
success— Whether customer data was returned.individual— Attribute map (up to three addresses possible).Next— Next operation.
success is true, return individual to the client for pre-fill.
Complete()
After the customer confirms or edits pre-filled data, submit the payload to your server and call Complete() — the final verification step.
Parameters
- Correlation ID — From
Start(); must match UUID pattern^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$. individual— The customer data map to verify.
Returns
success— Whether verification succeeded.Next— TypicallyDonewhen the flow is finished.

