Skip to main content
POST
Public endpoint. No JWT or Authorization header is required. It verifies the wallet’s signed challenge, consumes the challenge, and returns a wallet-bound bearer token. A challenge succeeds at most once.
string
required
Lowercase 32-character challenge ID returned by POST /auth/challenge.
string
required
Canonical low-s, 65-byte EOA personal-sign signature. The recovery byte may be 0/1 or 27/28.
string
required
Short-lived wallet-bound JWT. Treat it as a secret and never log it.
string
required
Always Bearer.
string
required
Token expiration as an ISO 8601 timestamp. Testnet tokens last one hour.
string
required
Address to which the JWT is bound.

Body

application/json
challengeId
string
required
signature
string
required

Response

200

Wallet-bound JWT