Challenge() section. For raw HTTP instead of snippets, use the reference links in the table below.
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; see Prove Pre-Fill implementation guide and Prove Pre-Fill flow.
| Operation | HTTP reference |
|---|---|
| Start | POST /v3/start |
| Validate | POST /v3/validate |
| Challenge | POST /v3/challenge |
| Complete | POST /v3/complete |
Install the server SDK
Add the dependency for your language. The CodeGroup tabs show install commands and import lines.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() (or later on Challenge()):
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; see Prove Pre-Fill implementation guide — OTP.
- Auth token — Short-lived JWT for the client
Authenticate()call and possession. - Correlation ID — Store in server session; pass into
Validate(),Challenge(), andComplete()for this flow. Session tied to this ID expires 15 minutes afterStart()returns. Helps troubleshooting. Next— Map of the next server operation to invoke.
Start().
Validate()
After possession completes on the device, the client calls your backend (for example POST /verify). Then call Validate() with:
- Correlation ID — From
Start().
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.

