Inloggen

Licenties

API voor licentievalidatie, activering en apparaatbeheer

Beheer licentievalidatie, activering en het bijhouden van apparaten.

Rate limiting: voor licentie-endpoints geldt een rate limit per IP-adres binnen een vast venster van 60 seconden. Wie de limiet overschrijdt, krijgt 429 Too Many Requests met een Retry-After: 60-header terug totdat het venster opnieuw begint.

Licentie valideren

Valideer en activeer een licentiesleutel. Voor dit endpoint geldt een limiet van 5 verzoeken per minuut per IP-adres.

Endpoint: POST /api/licenses/validate

ParameterTypeVerplichtBeschrijving
license_keystringJaTe valideren licentiesleutel
device_idstringJaStabiele, unieke identificatie van het apparaat dat wordt geactiveerd. Stuur voor een bepaald apparaat altijd dezelfde waarde mee: daarmee wordt de licentieplek van dat apparaat geclaimd en opnieuw geclaimd
curl -X POST "$BASE_URL/api/licenses/validate" \
  -H "Content-Type: application/json" \
  -d '{"license_key":"XXXX-XXXX-XXXX-XXXX","device_id":"device_abc123"}'

Antwoord (succes):

{
  "valid": true,
  "license": {
    "id": "uuid",
    "status": "active",
    "product": { "id": "uuid", "name": "studio", "features": ["client_api", "api_keys"] },
    "activation_date": "2024-01-01T00:00:00Z",
    "expiration_date": "2025-12-31T23:59:59Z",
    "current_activations": 1
  }
}

Antwoord (fout):

{
  "statusCode": 400,
  "statusMessage": "Invalid licence key or validation failed"
}
StatusWanneer
400license_key of device_id ontbreekt, is leeg of te lang, of de sleutel is onbekend, inactief of verlopen
409Alle licentieplekken zijn al bezet door een ander apparaat en geen daarvan was lang genoeg inactief om terug te nemen
429Rate limit overschreden, zie Rate limiting
Om veiligheidsredenen geven alle validatiefouten van licenties dezelfde algemene melding terug, zodat enumeratieaanvallen worden voorkomen. Een 400 vertelt dus nooit welk veld fout was: controleer of license_key en device_id allebei aanwezig en niet leeg zijn voordat je het opnieuw probeert.

Licentie deactiveren

Authenticatie vereist

Vereist de sessiecookie session_token van de licentie-eigenaar (zie Authenticatie): je kunt alleen een licentie deactiveren die van jou is.

Deactiveer een licentie op een specifiek apparaat of op alle apparaten.

Endpoint: POST /api/licenses/deactivate

ParameterTypeVerplichtBeschrijving
license_keystringJaTe deactiveren licentiesleutel
device_idstringNeeSpecifiek apparaat om te deactiveren (weglaten voor alle apparaten)
curl -X POST "$BASE_URL/api/licenses/deactivate" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"license_key":"XXXX-XXXX-XXXX-XXXX","device_id":"device_abc123"}'

Antwoord:

{
  "success": true,
  "message": "Device deactivated successfully",
  "deactivated_count": 1,
  "remaining_activations": 4
}
Ondanks de naam is remaining_activations het aantal licentieplekken dat na de deactivering nog in gebruik is, oftewel het aantal unieke apparaten dat nog actief is op de licentie. Het is niet het aantal vrije plekken. Als je alle apparaten deactiveert, krijg je dus 0 terug. Bereken het aantal vrije plekken als activation_limit - remaining_activations, met activation_limit uit GET /api/licenses/status. Zonder device_id luidt de melding "All devices deactivated successfully"; deactivated_count is het aantal plekken dat deze aanroep heeft vrijgegeven.

Licentiestatus

Authenticatie vereist

Vereist de sessiecookie session_token van de licentie-eigenaar (zie Authenticatie): je kunt alleen een licentie inzien die van jou is.

Controleer de huidige status van een licentie. Hiervoor geldt een limiet van 30 verzoeken per minuut per IP-adres.

Endpoint: GET /api/licenses/status

ParameterTypeVerplichtBeschrijving
license_keyqueryJaTe controleren licentiesleutel
curl -X GET "$BASE_URL/api/licenses/status?license_key=XXXX-XXXX-XXXX-XXXX" \
  -b cookies.txt

Antwoord:

{
  "license": {
    "id": "uuid",
    "license_key": "XXXX-XXXX-XXXX-XXXX",
    "status": "active",
    "purchase_date": "2024-01-01T00:00:00Z",
    "activation_date": "2024-01-01T00:00:00Z",
    "expiration_date": "2025-12-31T23:59:59Z",
    "days_until_expiration": 365,
    "activation_limit": 5,
    "current_activations": 2,
    "available_activations": 3,
    "is_expired": false,
    "is_active": true,
    "product": { "id": "uuid", "name": "Studio 8K", "description": "...", "features": [] },
    "user": { "id": "uuid", "first_name": "Jane", "last_name": "Doe", "email": "user@example.com" }
  },
  "active_devices": [
    {
      "id": "uuid",
      "device_id": "device_abc123",
      "device_name": "Studio Mac",
      "platform": "macos",
      "app_version": "3.1.2",
      "activated_at": "2024-01-01T00:00:00Z",
      "last_seen_at": "2024-01-02T09:00:00Z",
      "ip_address": "192.168.1.1"
    }
  ]
}

Levenscyclus van een licentie

Rate limiting

Voor licentie-endpoints geldt een rate limit per IP-adres binnen een vast venster van 60 seconden. Bij een 429 wordt één header meegestuurd:

HeaderBeschrijving
Retry-AfterAantal seconden totdat het venster opnieuw begint (altijd 60)

Rate limits per endpoint

EndpointVerzoeken / 60sNiveau
/api/licenses/validate5Streng
/api/licenses/status30Standaard
/api/licenses/deactivate30Standaard

POST /api/licenses/validate past de strenge limiet twee keer toe: één keer per IP-adres en één keer op basis van de ingediende license_key, zodat één sleutel niet vanaf veel IP-adressen kan worden bestookt.

Wie een limiet overschrijdt, krijgt 429 Too Many Requests terug voor de rest van het venster van 60 seconden. Er is geen oplopende of escalerende blokkeerduur.

Licentietypen

Een licentie valt onder een van de huidige abonnementsniveaus. De doorslaggevende set functies en limieten per niveau is wat de prijspagina toont, zie Abonnementen vergelijken.

NiveauVoor wieBelangrijkste toevoegingen ten opzichte van het niveau eronder
freePermanent gratis abonnement, geen creditcard, geen vervaldatumEen eenvoudige presentatieclicker: één ruimte, één presentator, schermdeling met watermerk en Stream Deck; alle andere functies zijn vergrendeld
presenterPresentatorenTimer Pro, chat, tekenen, multi-host en NDI
pro (Studio HD)SoloproducersBellers, aangepaste ruimtes, video delen en de essentiële Studio-functies
ultra (Studio 4K)Power users en streamersOnbeperkt aantal ruimtes, opgeslagen kleurthema's voor je merk, lagen, ISO-opname, replay en de uitgebreidere Studio-toolset
studio (Studio 8K)ProductieteamsOntwerper voor ruimte-indelingen, whitelabelbranding, de Client API, API-sleutels, eigen domeinen, gedeelde teamlicenties per plek
enterpriseGrote organisaties en inkoopafdelingenSSO, SCIM en aangepaste teamrollen, jaarcontracten per plek
Oudere licenties kunnen nog verouderde productnamen hebben. Die behouden de rechten waarmee ze zijn gekocht, en de API koppelt ze aan de bovenstaande niveaus.