Inloggen

API-overzicht

Volledige API-documentatie voor integratie met Cliqer

De Client API is de API-add-on: bij Presenter, Studio HD en Studio 4K koop je hem erbij, bij Studio 8K en Enterprise zit hij inbegrepen. Langlevende API-sleutels voor onbeheerde server-naar-servertoegang tot de REST-endpoints maak je aan op de abonnementen Studio 8K en Enterprise, zie Authenticatie met API-sleutel. Abonnementen vergelijken.

Volledige documentatie voor de Cliqer API, met de REST-endpoints en realtime communicatie via WebSocket.

Basis-URL

https://cliqer.io/api

Alle API-endpoints zijn relatief ten opzichte van de basis-URL van de Cliqer-server waarmee je verbinding maakt.

Codevoorbeelden: vervang in de curl-, Python- en Go-voorbeelden $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.

Zie Authenticatie voor inloggen, sessierotatie en best practices voor beveiliging.

API-onderdelen

Authenticatie

Inloggen, sessierotatie en best practices voor beveiliging.

WebSocket-realtime

Bedien een ruimte vanuit je eigen software, net als met een presentatieclicker op afstand: dia's, de timer, een laserpointer en berichten aan de host.

Licenties

Licentievalidatie, activering en apparaatbeheer.

Levenscyclus van een verzoek

Foutresponses

Alle endpoints geven standaard foutresponses terug:

StatusBeschrijving
400Bad Request: ontbrekende of ongeldige parameters
401Unauthorized: geen geldige sessiecookie
403Forbidden: onvoldoende rechten of niet-toegestane origin
404Not Found: resource niet gevonden
409Conflict: bijv. de limiet voor licentieactiveringen is bereikt
429Too Many Requests: rate limit overschreden (zie Retry-After)
500Internal 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.

HeaderBeschrijving
Retry-AfterSeconden tot het venster opnieuw begint (60, alleen verzonden bij een 429)

Rate limit-niveaus

NiveauVerzoeken / 60sVan toepassing op
Strikt5POST /api/licenses/validate en de inlog-endpoints (POST /api/auth/login, registratie, wachtwoordherstel, passkey- en 2FA-stappen)
Standaard30GET /api/licenses/status, POST /api/licenses/deactivate, GET /api/auth/me, POST /api/auth/logout
Ruim60Leesendpoints 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.

Wie een niveau overschrijdt, krijgt 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.