API-overzicht

Volledige documentatie voor de Cliqer API, met de REST-endpoints en realtime communicatie via WebSocket.
Basis-URL
https://cliqer.io/apiAlle API-endpoints zijn relatief ten opzichte van de basis-URL van de Cliqer-server waarmee je verbinding maakt.
$BASE_URL door de URL van je Cliqer-instantie (bijv. https://cliqer.io). Vervang in de WebSocket-voorbeelden $WS_URL door wss://cliqer.io. De TypeScript-voorbeelden gebruiken relatieve paden en werken zonder aanpassingen.Authenticatie
Cliqer authenticeert met een httpOnly sessiecookie (session_token), aangemaakt door POST /api/auth/login. Browsers sturen deze automatisch mee; tooling voor server-naar-serververkeer bewaart hem in een cookie jar. Teams met Studio 8K en Enterprise kunnen ook API-sleutels aanmaken voor server-naar-server REST-verzoeken, verzonden als Authorization: Bearer cliqer_<key> (voor sleutelbeheer is het abonnement Studio 8K of Enterprise vereist). De WebSocket accepteert geen API-sleutels: maak daar verbinding met een sessietoken.
# The session cookie is set by /api/auth/login and sent on every subsequent request
Cookie: session_token=YOUR_SESSION_TOKEN
# Or authenticate a server-to-server REST request with a team API key
Authorization: Bearer cliqer_<key>
Een paar endpoints hebben geen sessie nodig, zoals POST /api/licenses/validate, dat openbaar is.
API-onderdelen
Levenscyclus van een verzoek
Foutresponses
Alle endpoints geven standaard foutresponses terug:
| Status | Beschrijving |
|---|---|
400 | Bad Request: ontbrekende of ongeldige parameters |
401 | Unauthorized: geen geldige sessiecookie |
403 | Forbidden: onvoldoende rechten of niet-toegestane origin |
404 | Not Found: resource niet gevonden |
409 | Conflict: bijv. de limiet voor licentieactiveringen is bereikt |
429 | Too Many Requests: rate limit overschreden (zie Retry-After) |
500 | Internal Server Error |
Formaat van een foutresponse:
{
"statusCode": 400,
"statusMessage": "Description of the error"
}
Rate limiting
De meeste endpoints hebben een rate limit per client-IP, met een vast venster van 60 seconden verdeeld over drie niveaus. Als een verzoek de limiet overschrijdt, antwoordt de server met 429 Too Many Requests en een Retry-After: 60-header. Er is geen progressieve of exponentiële blokkering en er wordt geen X-RateLimit-Remaining-header teruggegeven.
| Header | Beschrijving |
|---|---|
Retry-After | Seconden tot het venster opnieuw begint (60, alleen verzonden bij een 429) |
Rate limit-niveaus
| Niveau | Verzoeken / 60s | Van toepassing op |
|---|---|---|
| Strikt | 5 | POST /api/licenses/validate en de inlog-endpoints (POST /api/auth/login, registratie, wachtwoordherstel, passkey- en 2FA-stappen) |
| Standaard | 30 | GET /api/licenses/status, POST /api/licenses/deactivate, GET /api/auth/me, POST /api/auth/logout |
| Ruim | 60 | Leesendpoints met veel verkeer |
Twee endpoints passen een tweede strikte limiet toe op basis van de inloggegevens in plaats van het IP-adres, zodat één doelwit niet via vele adressen bestookt kan worden: POST /api/licenses/validate hanteert de license_key als sleutel en POST /api/auth/login het e-mailadres.
429 terug voor de rest van het venster van 60 seconden. Rate limits worden door de server zelf afgedwongen, voordat het endpoint zijn werk doet.