Skip to main content
Search

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"
}