Authentifizierung

Alle API-Requests benötigen deinen API-Key im Authorization-Header.

Header

HTTP
Authorization: Bearer DEIN_API_KEY
API-Key niemals öffentlich teilen oder in den Source Code commiten. Immer Umgebungsvariablen verwenden.

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.

POST/api/verify/createLink generieren

Request Body

FeldTypBeschreibung
user_idstringDiscord Snowflake des Usersoptional
role_idstringRolle überschreiben (Standard: Key-Konfiguration)optional
expires_innumberSekunden bis Ablauf (60–86400, Standard: 3600)optional
201
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 / fetch
const 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
cURL
curl -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.

GET/api/verify/status/:tokenStatus prüfen
200
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.js
async 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.

GET/api/meKey-Info
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.

Wenn kein eigener Bot konfiguriert ist, wird der System-Bot (bzw. MadeZMT Bot) für OAuth2 und Rollenvergabe verwendet.

1. Discord App erstellen

2. Redirect URIs eintragen

Im Discord Developer Portal unter OAuth2 → Redirects müssen beide folgenden URLs eingetragen werden:

Discord Developer Portal → OAuth2 → Redirects
https://deine-domain.de/auth/callback https://deine-domain.de/auth/verify/callback
Beide Callbacks müssen eingetragen sein. Der erste ist für den Dashboard-Login, der zweite für die eigentliche Verifizierung. Ohne diese Einträge schlägt OAuth2 fehl.

3. Bot hinzufügen (optional – für Rollenvergabe)

  • Tab BotAdd Bot → Token kopieren
  • Server Members Intent aktivieren
  • Bot zum Server einladen mit Berechtigung Administrator (permission 8)
Bot-Einladungslink
https://discord.com/oauth2/authorize?client_id=CLIENT_ID&scope=bot&permissions=8
Die Bot-Rolle muss in der Rollenhierarchie über der zu vergebenden Rolle stehen. Andernfalls schlägt die Rollenvergabe fehl.

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

FeatureMadeZMT BotEigener Bot
OAuth2System-AppDeine App
Rollenvergabe✓ (MadeZMT Bot Token)✓ (eigener Token)
Auto-Join
Bot-BrandingMadeZMTDein Bot-Name
SetupEinfachEigene App nötig

Fehler-Referenz

Alle API-Fehler liefern konsistentes JSON: {"error": "…"}

StatuserrorUrsache
401Missing Authorization headerHeader fehlt
401Invalid API keyKey existiert nicht
400user_id must be a valid Discord snowflakeUngültige ID
404Session not foundToken existiert nicht
403Session does not belong to your API keyFremden Token abgefragt