POST/auth/login
PublicauthLoginStart a login for a user authority. The user authority may be:
- phone number
- Apple JWT
- Google JWT
- a wallet (
wallet_auth): a Solana or Bittensor signature over the single-use challenge from /auth/wallet-challenge. A bound wallet returnsnetwork.by_; an unbound wallet echoesjwt wallet_authand the client continues to /auth/network-create with a fresh challenge. - a seedphrase
A well-formed wallet signature that does not verify for wallet_ over the challenge (in practice the wallet signed with another account than the address entered) is refused with error.code signature_ when the request sets result_, as a 200. Without it, that refusal is a 401 with a plain text body. Every other wallet refusal keeps its HTTP status.
Request bodyshow schema
email or phone number
Solana base58 public key, or Bittensor ss58 address (prefix 42, checksum verified)
The message_template issued by /auth/wallet-challenge, unmodified (no <Bytes> wrapper, LF line endings)
Solana: base64 ed25519 signature over the message. Bittensor: hex of the 64-byte sr25519 signature (with or without 0x) made in the substrate signing context, over the raw or <Bytes>-wrapped message
solana (default) or tao/bittensor; case-insensitive
The single-use nonce from /auth/wallet-nonce, embedded in wallet_ and echoed here. Optional during the client rollout; enforced whenever it is present. The newer /auth/wallet-challenge flow supersedes it.
The recovery seedphrase, for a seedphrase login.
Report a refusal that has a code (signature_) in the result error with a 200, instead of a 401. New clients set this.
Responses1 status · show schema
email or phone number
The sign-in methods on file for this user authority
A stable code for a refusal that has one, so a client can pick a localized message. Only with result_. signature_: the wallet signature is well formed but does not verify for wallet_ over the challenge. In practice the wallet signed with another account than the address entered (an sr25519 signature cannot be recovered to the key that made it, so the server cannot name that account), or signed other text. Sign the issued challenge with the entered address. The challenge is not used up. Absent for every other refusal; clients fall back to message for an absent or unknown code.
Solana base58 public key, or Bittensor ss58 address (prefix 42, checksum verified)
The message_template issued by /auth/wallet-challenge, unmodified (no <Bytes> wrapper, LF line endings)
Solana: base64 ed25519 signature over the message. Bittensor: hex of the 64-byte sr25519 signature (with or without 0x) made in the substrate signing context, over the raw or <Bytes>-wrapped message
solana (default) or tao/bittensor; case-insensitive
The single-use nonce from /auth/wallet-nonce, embedded in wallet_ and echoed here. Optional during the client rollout; enforced whenever it is present. The newer /auth/wallet-challenge flow supersedes it.