Skip to main content
POST
Verify signature and authenticate

Body

application/json
address
string
required

Ethereum wallet address

Required string length: 42
Pattern: ^0x[0-9a-fA-F]{40}$
Example:

"0x742d35Cc6634C0532925a3b8D4060f31E2C3d8B5"

signature
string
required

Wallet authorization of the challenge message, hex with an optional 0x prefix. An EOA sends a 65-byte EIP-191 signature; a contract wallet verified under EIP-1271 sends whatever its own contract accepts, which is usually longer and need not be 65 bytes. Capped at 8192 decoded bytes (16386 characters with the prefix) — enough for well over a hundred owner slots — and a longer value is rejected as an invalid signature rather than forwarded to the chain.

Required string length: 1 - 16386
Example:

"0x1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0"

nonce
string
required

Challenge nonce

Minimum string length: 1
Example:

"abc123def456"

sessionPublicKey
string
required

Lowercase hex (64 chars) ed25519 public key generated locally by the SDK. Subsequent authenticated requests are signed with the matching private key. The wallet's signature on the challenge message proves the user authorized this specific public key.

Required string length: 64
Pattern: ^[0-9a-f]{64}$
Example:

"3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29"

clientId
string | null

Optional application identifier

Example:

"monaco-frontend"

chainId
string | null

Optional EVM chain ID supplied by SDK clients, as a JSON number or a decimal string (for example 1329 or "1329")

Example:

"1328"

referralCode
string | null

Optional TraderCode captured at signup (e.g. from a ?ref=CODE link). When a user verifies for the very first time with a valid code, a referral relationship is recorded atomically. Ignored for users who already exist. A code that does not apply (unknown, the wallet's own, or a different referrer than the one the wallet already has) never blocks sign-in; VerifyResponse.referral_not_applied_reason says why.

Example:

"0x1234567890abcdef1234567890abcdef12345678"

inviteCode
string | null

Optional Mainnet invite code. Exactly 10 case-sensitive ASCII letters or digits. Required while Mainnet Invite Mode is enabled for any wallet without a Mainnet access grant, including existing accounts that never received one; ignored while Invite Mode is off and unnecessary once the wallet has access. A missing code is refused with 403 and code INVITE_CODE_REQUIRED; a wrong, redeemed or revoked code, or an unused code whose issuer is deactivated, with 403 and code INVITE_CODE_INVALID. A deactivated signing account is refused with 403 and code ACCOUNT_DEACTIVATED.

Required string length: 10
Pattern: ^[A-Za-z0-9]{10}$
Example:

"aB3dE5gH7J"

Response

OK

expiresAt
integer<int32> | null

Unix timestamp when the session expires

Example:

1699876543

user
object
isNewUser
boolean | null

True when this verify created the user row — the wallet's first sign-in to THIS application. Identity is per (wallet, application), so a wallet already registered on another application is still is_new_user on its first sign-in to a new one. Use it to gate first-time UX (e.g. showing the optional "have a referral code?" input only to new users) and to confirm a fresh sign-up. False for every returning verify on this application.

Example:

true

referralApplied
boolean | null

True when a TraderCodes referral relationship was recorded on this verify: a valid, non-self TraderCode presented on the wallet's first sign-in to THIS application resolved to a known referrer. Scoped like is_new_user (per (wallet, application)), so a wallet already registered on another application can still see this on its first sign-in to a new one. False for a returning user of this application, an absent or unknown code, a self-referral, or a wallet that already has a different referrer (see referral_not_applied_reason). Confirms the referral landed for the signup success screen.

Example:

true

referralNotAppliedReason
enum<string> | null

Why the TraderCode presented on this sign-up did not apply. Absent when it applied, when no code was presented, and for a returning user of this application.

Available options:
REFERRAL_NOT_APPLIED_REASON_UNSPECIFIED,
REFERRAL_NOT_APPLIED_REASON_ALREADY_REFERRED,
REFERRAL_NOT_APPLIED_REASON_UNKNOWN_CODE,
REFERRAL_NOT_APPLIED_REASON_SELF_REFERRAL