Autenticazione

Due credenziali — una chiave API per le macchine, una sessione per la console — e le regole che le tengono separate.

Due tipi di credenziale

L'API accetta una chiave API. La console accetta un cookie di sessione. Non sono intercambiabili, e l'API lo impone invece di decidere richiesta per richiesta se un cookie dovesse essere presente.

Un browser autenticato non può chiamare l'API

Una richiesta autenticata con un cookie di sessione riceve 403 api_key_required, con un messaggio che rimanda alla pagina delle chiavi della console. Questo è intenzionale: senza un percorso autenticato tramite cookie verso l'API, non c'è nulla che una richiesta cross-site possa falsificare.

L'header

Invia la chiave come bearer token. Una chiave è un prefisso, un punto e un segreto; il prefisso identifica la riga, quindi la revoca è immediata e costa una sola ricerca.

curl https://api.llmeu.com/v1/chat/completions \
  -H "Authorization: Bearer llmeu_live_xxxxxxxx.your-secret" \
  -H "Content-Type: application/json" \
  -d '{"model":"llmeu-auto","messages":[{"role":"user","content":"Hello"}]}'

Scope

Una chiave porta uno o più scope. Una richiesta la cui chiave manca dello scope richiesto da un endpoint viene rifiutata con 403 insufficient_scope, prima che il corpo venga analizzato.

Scope Sblocca
inference Chat completions, embeddings, e gli endpoint di elenco e dettaglio dei modelli.
platform_read Leggi la tua organizzazione: profilo, chiavi, utilizzo, tracce e policy.
platform_write Crea e revoca chiavi, e crea o modifica policy. Questo è lo scope che cambia chi può fare cosa, quindi crealo con attenzione.

Gli scope vengono controllati per endpoint, non per chiave. Una chiave con platform_read non può spendere credito tramite il playground.

Creazione di una chiave

Nella console, o tramite l'API della piattaforma con una chiave che ha già platform_write. Il segreto viene mostrato una volta, al momento della creazione: viene memorizzato solo un hash scrypt, quindi nessuno — compresi noi — può rileggerlo.

curl -X POST https://api.llmeu.com/platform/v1/api-keys \
  -H "Authorization: Bearer llmeu_live_xxxxxxxx.a-platform-write-key" \
  -H "Content-Type: application/json" \
  -d '{"name":"ci","scopes":["inference"]}'

Le azioni amministrative nella console — policy, team, impostazioni, credito, revoca delle chiavi — sono riservate al proprietario o all'amministratore, indipendentemente dagli scope di una chiave.

Revoca, e cosa non è una chiave

Una chiave appartiene a un'organizzazione, e l'organizzazione viene risolta dalla chiave stessa — mai da un campo nel corpo della richiesta, quindi un chiamante non può rivolgersi a un altro tenant chiedendo gentilmente. La revoca ha effetto dalla richiesta successiva. La rotazione significa creare una seconda chiave, spostare il traffico, poi revocare la prima; non c'è una finestra di sovrapposizione da configurare.

Per la console invece

Accesso, recupero password e verifica dell'indirizzo sono documentati con la console. Non ci sono OAuth, SAML o personal access token: la console usa un cookie di sessione, l'API usa chiavi.