Discord verification API
Flow
- Joi calls
POST /api/discord/verify/startwith guild and Discord user IDs. - The backend returns a one-time code and a
/verify?code=...URL. - The browser loads
GET /api/discord/verify/challenge?code=.... - The browser calls
POST /api/discord/verify/preparewith the wallet address and key hash. - The wallet signs the returned payload.
- The browser calls
POST /api/discord/verify/completewith the signature. - The backend verifies the signature and checks for at least one ADA Handle on the connected payment address.
- Joi polls
GET /api/discord/verify/pendingand assigns roles. - Joi acknowledges each result with
POST /api/discord/verify/ack.
Security
- One-time code, short expiry.
- Challenge bound to guild, Discord user, address and key hash.
- Payment key and network checks.
- Unique wallet per guild.
- 180-day retention; weekly Hodler recheck.
- No signature persistence.