Start an ownership verification challenge
Start (or restart) ownership verification for a FIRST_PARTY self-custody
crypto wallet external account in PENDING_OWNERSHIP_VERIFICATION or
UNVERIFIED status. The response carries the method-specific challenge
material:
WALLET_SIGNATURE— amessageToSign; have the wallet sign it exactly and submit the result to the verify endpoint to complete verification synchronously.LIVENESS— a hostedverificationLink(and possibly an embedtoken); the user completes a biometric flow and verification completes asynchronously. The outcome is delivered viaEXTERNAL_ACCOUNT.STATUS_UPDATEDwebhooks or by polling the account.
Calling this endpoint again abandons any in-flight challenge and issues a
new one with the requested method — use it to retry after a failed
attempt, to replace an expired challenge, or to switch methods. An
UNVERIFIED account returns to PENDING_OWNERSHIP_VERIFICATION when a
new challenge is issued.
Completing ownership verification moves the account to ACTIVE.
Authorizations
API token authentication using format <api token id>:<api client secret>
Path Parameters
External account ID
Body
Starts (or restarts) an ownership verification challenge for a crypto wallet external account.
The verification method to use for this challenge.
WALLET_SIGNATURE, LIVENESS "WALLET_SIGNATURE"
Response
Challenge created; the method-specific material is returned.
- Wallet Signature Challenge
- Liveness Challenge
An ownership verification challenge for a crypto wallet external account. The shape is determined by the challenge method.
The verification method. Always WALLET_SIGNATURE for this shape.
WALLET_SIGNATURE "WALLET_SIGNATURE"
The exact message the wallet must sign, character-for-character. Submit the resulting signature via the verify endpoint.
"I verify that I control this wallet. Nonce: 019542f5-b3e7-1d02"
When this challenge expires. Prompt the user promptly; after expiry, start a new challenge.
"2025-08-15T15:32:00Z"