personal_sign. You first request a nonce tied to your wallet address, sign the returned message client-side, then submit the signature to receive a session token. Both steps use the Chat Server base URL (https://api.reppo.xyz) and do not require an existing token.
Step 1 — Request a nonce
POST https://api.reppo.xyz/auth/nonce
Send your wallet address to receive a unique nonce and a pre-formatted message to sign. The nonce expires after 5 minutes.
Request body
Your Ethereum wallet address. Must be
0x-prefixed and 40 hex characters. Pattern: ^0x[a-fA-F0-9]{40}$.Response
A UUID identifying this auth attempt. Pass this value to
/auth/verify.The exact string you must sign with your wallet using
personal_sign (EIP-191).Errors
| Status | Meaning |
|---|---|
400 | Missing or malformed walletAddress |
429 | Rate limit exceeded |
Example
Step 2 — Verify the signature
POST https://api.reppo.xyz/auth/verify
Submit your wallet address, the signature produced by signing the message from step 1, and the nonce. A valid signature returns a 24-hour session token.
Request body
The same wallet address you passed to
/auth/nonce. Pattern: ^0x[a-fA-F0-9]{40}$.The EIP-191
personal_sign signature of the message string returned by /auth/nonce.The UUID returned by
/auth/nonce. Must not be expired (5-minute window).Response
A session token valid for 24 hours. Pass this as
Authorization: Bearer <token> on all subsequent authenticated requests.The authenticated wallet address in lowercase.
Errors
| Status | Meaning |
|---|---|
400 | Missing fields or malformed request |
401 | Signature does not match the wallet address, or nonce has expired |
429 | Rate limit exceeded |
Example
The session token expires after 24 hours. Include it on all subsequent authenticated requests as
Authorization: Bearer <token>. When it expires, repeat the nonce → verify flow to obtain a fresh token.