API: Verify Signed Message
Where should I integrate
Wallet Verify - Verify Signed Message
Submit a wallet signature for manual Wallet Verify.
Use this API after the wallet owner signs the ownership message returned by /api/verify/wallet/v2/verify under manualSigning.params.signMessage, or after the hosted verification page signs the same server-generated message.
The manualSigning.params.signMessage value includes a server-generated Nonce. Sign the exact message returned by GTR, including line breaks and the Nonce line.
The default manual-signing TTL is 5 minutes. GTR rejects signatures submitted after manualSigning.expiredAt.
The request field name is signedMessage.
Request
curl --silent --location --request POST "/api/verify/wallet/v2/verify_sign_message" \
--cert-type P12 --cert ./certificate.p12:'[MY_PASSWORD_OF_CERT]' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer [YOUR LOGIN TOKEN]" \
--header "Connection: keep-alive" \
--data-raw "{
\"requestId\": \"[REQUEST_ID]\",
\"publicKey\": \"[BASE64_PUBLIC_KEY]\",
\"signedMessage\": \"[BASE64_SIGNATURE]\"
}"
Response
Success
On success, GTR updates the Wallet Verify request to success, runs address screening when available, and sends callback type 18.
{
"verifyStatus": 100000,
"verifyMessage": "Verify Success"
}
Signature Verification Failed
{
"verifyStatus": 100001,
"verifyMessage": "wallet signature verification failed"
}
Manual Signing Expired
{
"verifyStatus": 100001,
"verifyMessage": "manual signing expired"
}
Wallet Address Mismatch
{
"verifyStatus": 100001,
"verifyMessage": "wallet address does not match the verify record"
}
Invalid Parameter
{
"verifyStatus": 100023,
"verifyMessage": "signedMessage is not valid Base64"
}