Dein erster API-Aufruf
- Als Vereinsadmin unter Entwicklerzugänge einen Key mit read:groups erstellen.
- Key einmalig kopieren und als Umgebungsvariable CLUB_API_KEY (oder vereinsbezogen) in deiner Serveranwendung hinterlegen.
- Bearer-Header mitsenden. Der ausstellende Verein bestimmt den Datenumfang; Parameter können ihn nicht wechseln.
cURL
curl 'https://staging.cluuub.app/api/v1/groups?limit=10' \
-H "Authorization: Bearer $CLUB_API_KEY"TypeScript / Node.js
const response = await fetch("https://staging.cluuub.app/api/v1/groups?limit=10", {
headers: { Authorization: `Bearer ${process.env.CLUB_API_KEY}` },
});
if (!response.ok) throw new Error(JSON.stringify(await response.json()));
const { data, meta } = await response.json();
console.log(data, meta);Python
import os, json, urllib.request
request = urllib.request.Request(
"https://staging.cluuub.app/api/v1/groups?limit=10",
headers={"Authorization": "Bearer " + os.environ["CLUB_API_KEY"]},
)
with urllib.request.urlopen(request, timeout=15) as response:
print(json.load(response))Fehler und Limits
Fehler haben den Inhaltstyp application/problem+json und die Felder type, title, status, detail und instance. HTTP 401 bedeutet ungültiger oder abgelaufener Key, 403 fehlender Scope. Bei 429 den Retry-After-Header beachten.
Der Token Bucket erlaubt bis zu 60 Requests sofort und füllt kontinuierlich einen Request pro Sekunde nach. X-RateLimit-Remaining zeigt die sofort verfügbaren Tokens; X-RateLimit-Reset nennt den Zeitpunkt vollständiger Auffüllung ohne weitere Aufrufe als Unix-Zeit. Zusätzlich gelten 10.000 autorisierte Requests pro UTC-Tag. X-RateLimit-Day-Remaining und X-RateLimit-Day-Reset zeigen Tageskontingent und den nächsten Reset um 00:00 UTC. Bei 429 nennt Retry-After die Wartezeit bis zum nächsten Token oder zum Tagesreset. Abgelehnte Aufrufe verbrauchen kein Tageskontingent; ein nach der Autorisierung festgestellter Parameterfehler zählt als API-Aufruf und liefert 400.
Geheimnisse gehören in serverseitige Umgebungsvariablen. Widerrufe verlorene Keys sofort im Dashboard.