Authentifizierung
Alle API-Requests benötigen deinen API-Key im Authorization-Header.
Header
HTTPAuthorization: Bearer DEIN_API_KEY
API-Key erstellen
API-Keys werden im Dashboard erstellt. Pro Discord-Server kann ein Key angelegt werden. Der Key wird nach der Erstellung einmalig angezeigt, kann aber jederzeit über die Key-Vorschau erneut abgerufen werden.
Verification-Link erstellen
Erstellt einen einmaligen Verification-Link für einen Discord-User.
Request Body
| Feld | Typ | Beschreibung | |
|---|---|---|---|
| user_id | string | Discord Snowflake des Users | optional |
| role_id | string | Rolle überschreiben (Standard: Key-Konfiguration) | optional |
| expires_in | number | Sekunden bis Ablauf (60–86400, Standard: 3600) | optional |
Response{ "verification_url": "https://…/verify/a1b2c3…", "token": "a1b2c3d4e5f6…", "expires_at": 1700003600, "server_id": "123456789012345678", // null möglich "role_id": "987654321098765432" // null möglich }
Beispiel
Node.js / fetchconst res = await fetch(`${BASE_URL}/api/verify/create`, { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ user_id: member.id }) }); const { verification_url } = await res.json(); // → Link per DM an den User schicken
cURLcurl -X POST https://deine-domain.de/api/verify/create \ -H "Authorization: Bearer DEIN_KEY" \ -H "Content-Type: application/json" \ -d '{"user_id":"123456789012345678"}'
Status abfragen
Gibt den aktuellen Status einer Verification-Session zurück.
Response{ "token": "a1b2c3…", "status": "verified", // "pending" | "verified" | "expired" "target_user_id": "123456789012345678", "verified_user_id": "123456789012345678", "role_id": "987654321098765432", "server_id": "111222333444555666", "verified": true, "verified_at": 1700000123, "expires_at": 1700003600, "email": "user@example.com", // null wenn scope nicht aktiv "guilds": […] // null wenn scope nicht aktiv }
Polling-Beispiel
Node.jsasync function pollVerify(token) { let tries = 0; return new Promise(resolve => { const iv = setInterval(async () => { if (++tries > 60) { clearInterval(iv); resolve(null); return; } const s = await fetch(`/api/verify/status/${token}`, { headers: { 'Authorization': `Bearer ${API_KEY}` } }).then(r => r.json()); if (s.verified) { clearInterval(iv); resolve(s); } }, 5000); }); }
API Key Info
Gibt Informationen über den verwendeten API-Key zurück.
Response{ "server_id": "123456789012345678", "role_id": "987654321098765432", "label": "Mein Server", "created_at": 1700000000, "last_used": 1700000500 }
Custom Bot Setup
Konfiguriere eine eigene Discord-App als OAuth2-Provider für die Verifizierung.
1. Discord App erstellen
- Öffne discord.com/developers/applications
- Klicke New Application
- Gehe zu Tab OAuth2 → kopiere Client ID und Client Secret
2. Redirect URIs eintragen
Im Discord Developer Portal unter OAuth2 → Redirects müssen beide folgenden URLs eingetragen werden:
Discord Developer Portal → OAuth2 → Redirectshttps://deine-domain.de/auth/callback https://deine-domain.de/auth/verify/callback
3. Bot hinzufügen (optional – für Rollenvergabe)
- Tab Bot → Add Bot → Token kopieren
- Server Members Intent aktivieren
- Bot zum Server einladen mit Berechtigung Administrator (permission 8)
Bot-Einladungslinkhttps://discord.com/oauth2/authorize?client_id=CLIENT_ID&scope=bot&permissions=8
4. Im Dashboard konfigurieren
Beim Erstellen oder Bearbeiten eines API-Keys Eigener Bot aktivieren und Client ID, Client Secret und optional Bot Token eintragen.
MadeZMT Bot vs. eigener Bot
| Feature | MadeZMT Bot | Eigener Bot |
|---|---|---|
| OAuth2 | System-App | Deine App |
| Rollenvergabe | ✓ (MadeZMT Bot Token) | ✓ (eigener Token) |
| Auto-Join | ✓ | ✓ |
| Bot-Branding | MadeZMT | Dein Bot-Name |
| Setup | Einfach | Eigene App nötig |
Fehler-Referenz
Alle API-Fehler liefern konsistentes JSON: {"error": "…"}
| Status | error | Ursache |
|---|---|---|
| 401 | Missing Authorization header | Header fehlt |
| 401 | Invalid API key | Key existiert nicht |
| 400 | user_id must be a valid Discord snowflake | Ungültige ID |
| 404 | Session not found | Token existiert nicht |
| 403 | Session does not belong to your API key | Fremden Token abgefragt |