Accedi

Licenze

API per la convalida e l'attivazione delle licenze e per la gestione dei dispositivi

Gestisci la convalida delle licenze, l'attivazione e il tracciamento dei dispositivi.

Limitazione delle richieste: gli endpoint delle licenze applicano un limite di richieste per IP su una finestra fissa di 60 secondi. Se superi il limite, ricevi 429 Too Many Requests con un'intestazione Retry-After: 60 finché la finestra non si azzera.

Convalida licenza

Convalida e attiva una chiave di licenza. Questo endpoint è limitato a 5 richieste al minuto per indirizzo IP.

Endpoint: POST /api/licenses/validate

ParametroTipoObbligatorioDescrizione
license_keystringSìChiave di licenza da convalidare
device_idstringSìIdentificatore stabile e univoco del dispositivo da attivare. Invia sempre lo stesso valore per un determinato dispositivo: è ciò che assegna e riassegna a quel dispositivo la sua postazione
curl -X POST "$BASE_URL/api/licenses/validate" \
  -H "Content-Type: application/json" \
  -d '{"license_key":"XXXX-XXXX-XXXX-XXXX","device_id":"device_abc123"}'

Risposta (successo):

{
  "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
  }
}

Risposta (errore):

{
  "statusCode": 400,
  "statusMessage": "Invalid licence key or validation failed"
}
StatoQuando
400license_key o device_id è mancante, vuoto o troppo lungo, oppure la chiave è sconosciuta, inattiva o scaduta
409Tutte le postazioni della licenza sono già occupate da altri dispositivi e nessuna è rimasta inattiva abbastanza a lungo da poter essere recuperata
429Limite di richieste superato, vedi Limitazione delle richieste
Per motivi di sicurezza, tutti gli errori di convalida delle licenze restituiscono lo stesso messaggio generico per prevenire gli attacchi di enumerazione. Un 400 quindi non indica mai quale campo ha causato l'errore: verifica che license_key e device_id siano entrambi presenti e non vuoti prima di riprovare.

Disattiva licenza

Autenticazione richiesta

Richiede il cookie di sessione session_token del proprietario della licenza (vedi Autenticazione): puoi disattivare solo una licenza di tua proprietà.

Disattiva una licenza su un dispositivo specifico o su tutti i dispositivi.

Endpoint: POST /api/licenses/deactivate

ParametroTipoObbligatorioDescrizione
license_keystringSìChiave di licenza da disattivare
device_idstring
No
Dispositivo specifico da disattivare (omettilo per tutti i dispositivi)
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"}'

Risposta:

{
  "success": true,
  "message": "Device deactivated successfully",
  "deactivated_count": 1,
  "remaining_activations": 4
}
Nonostante il nome, remaining_activations è il numero di postazioni ancora in uso dopo la disattivazione, ovvero il conteggio dei dispositivi distinti rimasti attivi sulla licenza. Non è il numero di postazioni libere. Disattivando tutti i dispositivi si ottiene quindi 0. Calcola le postazioni libere come activation_limit - remaining_activations, usando activation_limit di GET /api/licenses/status. Senza device_id il messaggio è «All devices deactivated successfully»; deactivated_count è il numero di postazioni liberate da questa chiamata.

Stato della licenza

Autenticazione richiesta

Richiede il cookie di sessione session_token del proprietario della licenza (vedi Autenticazione): puoi consultare solo una licenza di tua proprietà.

Controlla lo stato attuale di una licenza. Limitato a 30 richieste al minuto per IP.

Endpoint: GET /api/licenses/status

ParametroTipoObbligatorioDescrizione
license_keyquerySìChiave di licenza da controllare
curl -X GET "$BASE_URL/api/licenses/status?license_key=XXXX-XXXX-XXXX-XXXX" \
  -b cookies.txt

Risposta:

{
  "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"
    }
  ]
}

Ciclo di vita della licenza

Limitazione delle richieste

Gli endpoint delle licenze applicano un limite di richieste per IP su una finestra fissa di 60 secondi. In caso di 429, viene restituita un'intestazione:

IntestazioneDescrizione
Retry-AfterSecondi mancanti all'azzeramento della finestra (sempre 60)

Limiti di richieste per endpoint

EndpointRichieste / 60sLivello
/api/licenses/validate5Rigoroso
/api/licenses/status30Standard
/api/licenses/deactivate30Standard

POST /api/licenses/validate applica il limite Rigoroso due volte: una per IP e una in base alla license_key inviata, così una singola chiave non può essere bersagliata da molti IP.

Il superamento di un limite restituisce 429 Too Many Requests per il resto della finestra di 60 secondi. Non esiste una durata di blocco progressiva o crescente.

Tipi di licenza

Una licenza corrisponde a uno dei livelli di piano attuali. L'insieme di funzionalità e limiti di riferimento per ciascun livello è quello mostrato nella pagina dei prezzi, vedi Confronta i piani.

LivelloA chi è rivoltoPrincipali aggiunte rispetto al livello inferiore
freePiano gratuito permanente, senza carta, senza scadenzaUn semplice telecomando per presentazioni: una stanza, un relatore, condivisione dello schermo con filigrana e Stream Deck; tutte le altre funzionalità sono bloccate
presenterRelatoriTimer Pro, chat, disegno, multi-host e NDI
pro (Studio HD)Produttori singoliChiamanti, stanze personalizzate, condivisione video e gli elementi essenziali di Studio
ultra (Studio 4K)Utenti esperti e streamerStanze illimitate, temi di colore del brand salvati, livelli, registrazione ISO, replay e il set di strumenti Studio più ampio
studio (Studio 8K)Team di produzioneDesigner del layout delle stanze, branding whitelabel, la Client API, chiavi API, domini personalizzati, licenze di team condivise per postazione
enterpriseGrandi organizzazioni e uffici acquistiSSO, SCIM e ruoli di team personalizzati, contratti annuali per postazione
Le licenze meno recenti possono ancora riportare nomi di prodotto legacy. Queste mantengono i diritti con cui sono state acquistate e l'API le associa ai livelli sopra indicati.