Skip to main content
POST
Request a wallet ownership challenge

Authorizations

Authorization
string
header
required

OAuth 2.0 authorization and token endpoints

Body

Wallet ownership challenge params

Creates a wallet ownership challenge. Two modes are supported:

  • plain (default): produces a random nonce. Only wallet_address and chain are required. domain, uri, and statement must not be provided.
  • siwe: produces an EIP-4361 Sign-In with Ethereum message. Requires domain, uri, and statement in addition to wallet_address and chain. Only supported for EVM chains.
chain
enum<string>
required

The blockchain network the wallet belongs to. EVM chains (e.g. ethereum_sepolia) support both plain and SIWE challenges. Non-EVM chains (e.g. solana_devnet) support plain challenges only.

Available options:
ethereum_sepolia,
base_sepolia,
solana_devnet,
ethereum_mainnet,
base_mainnet,
solana_mainnet
Example:

"ethereum_sepolia"

wallet_address
string
required

The wallet address to prove ownership of. For EVM chains, must be a valid 40-hex-digit Ethereum address (normalized to lowercase). For non-EVM chains, must not contain whitespace and is limited to 128 characters.

Example:

"0x742d35cc6634c0532925a3b844bc9e7595f0beb1"

challenge_type
enum<string>
default:plain

The type of challenge to generate. plain (default) produces a random nonce. siwe produces an EIP-4361 message and requires domain, uri, and statement.

Available options:
plain,
siwe
Example:

"plain"

domain
string

Required when challenge_type is siwe; must not be provided for plain challenges. The hostname of the requesting service. Must be a valid hostname (e.g. example.com or app.example.com:3000).

Example:

"example.com"

statement
string

Required when challenge_type is siwe; must not be provided for plain challenges. A human-readable message the user is agreeing to. Must not contain newlines. Maximum 256 characters.

Maximum string length: 256
Example:

"Sign in with Ethereum"

uri
string

Required when challenge_type is siwe; must not be provided for plain challenges. The URI of the resource being accessed. Must be a valid URI with scheme and host.

Example:

"https://example.com/login"

Response

Successful response.

expires_at
string<date-time>
required

When the challenge expires

Example:

"2025-01-01T00:00:00.000000Z"

message
string
required

The challenge message to sign