Chiavi di amministrazione
Con una chiave di amministrazione gestisci un workspace dal tuo codice: crei le chiavi di inferenza che usano i tuoi clienti o dispositivi, ne fissi i limiti e leggi utilizzo, log e impostazioni. Non può chiamare un modello.
Una chiave di amministrazione può fare tutto ciò che i suoi ambiti consentono, sull’intero workspace. Tienila sui tuoi server, dalle solo gli ambiti che le servono e limitala agli indirizzi IP dei tuoi server.
Creare una chiave di amministrazione
- Nella console apri Chiavi API › Chiavi di amministrazione e scegli Crea chiave di amministrazione. Possono farlo gli amministratori e il proprietario del workspace.
- Scegli a chi appartiene la chiave e quali ambiti ha.
- Copia la chiave. Inizia con
sk-syn-admin-e viene mostrata una sola volta.
Ambiti
Ogni ambito apre una parte dell’API di gestione. Un ambito di scrittura include quello di lettura corrispondente. Se la chiave non ha l’ambito richiesto, la richiesta riceve 403 insufficient_scope.
| Ambito | Che cosa apre | Endpoint |
|---|---|---|
keys.readkeys.write | Le chiavi di inferenza e i loro limiti | /api/v1/keys |
billing.read | Utilizzo, costi e saldo del workspace | /api/v1/billing/* |
logs.read | Richieste, trace e sessioni. Mai i prompt né le risposte. | /api/v1/requests/api/v1/traces/api/v1/sessions |
usage.read | Totali di utilizzo per etichetta | /api/v1/usage/labels |
prompts.readprompts.write | La libreria dei prompt: prompt, versioni ed etichette | /api/v1/prompts |
evals.readevals.write | Set di test ed esecuzioni di valutazione | /api/v1/prompts/{id}/test-sets/api/v1/prompts/{id}/eval-runs |
audit.read | Il registro di audit | /api/v1/audit-logs |
members.read | Membri e inviti | /api/v1/members/api/v1/invites |
byok.read | Impostazioni BYOK. Mai le chiavi dei provider. | /api/v1/byok |
exports.read | Destinazioni di esportazione, senza le credenziali | /api/v1/export-destinations |
A chi appartiene una chiave
- A te. Se lasci il workspace, la chiave viene disattivata. Se resti ma non sei più amministratore, le richieste ricevono
403 key_creator_not_authorized. - Al workspace. La chiave continua a funzionare anche se chi l’ha creata lascia il workspace o cambia ruolo. Usala per CI e integrazioni. Quando chi l’ha creata se ne va, la chiave passa al proprietario del workspace insieme alle chiavi di inferenza create con essa, e continuano tutte a funzionare.
Lo scegli quando crei la chiave e non puoi cambiarlo in seguito.
Autenticazione
Invia la chiave come token Bearer. Una chiave di amministrazione funziona solo sull’API di gestione: gli endpoint dei modelli sotto /v1/ la rifiutano, e l’API di gestione rifiuta una chiave di inferenza (sk-syn-) con 401 wrong_key_kind.
Authorization: Bearer sk-syn-admin-... Creare una chiave di inferenza
POST /api/v1/keys
| Parametro | Tipo | Descrizione |
|---|---|---|
name* | string | Compare nella console e nell’utilizzo. Obbligatorio. |
limit_usd | number | Limite di spesa in dollari USA. Omettilo per non avere limiti, a meno che il membro per cui agisce la tua chiave di amministrazione non abbia un limite giornaliero in questo workspace: in quel caso il limite è obbligatorio, non può superare il suo e limit_reset deve essere daily. |
limit_reset | string | Quando la spesa riparte da zero: mai, ogni giorno, ogni settimana o ogni mese. |
allowed_models | string[] | I modelli che la chiave può chiamare. Vuoto significa tutti oppure, se il membro per cui agisce la tua chiave di amministrazione può usare solo alcuni modelli, quelli. Un modello fuori dalla sua lista viene rifiutato. |
ip_allowlist | string[] | Indirizzi IP o intervalli CIDR da cui la chiave può essere usata. Vuoto significa qualsiasi indirizzo. |
expires_at | string | Quando la chiave smette di funzionare, come data e ora RFC 3339. |
include_byok_in_limit | boolean | Se le richieste eseguite con le tue chiavi dei provider contano per il limite. Attivo di default. |
rate_limit | object | I limiti al minuto propri della chiave: richieste (rpm) e token (tpm). 0 significa nessun limite. |
metadata | object | Le tue etichette per la chiave, per esempio l’id di un tenant o di un dispositivo. Puoi usarle per filtrare l’elenco. |
curl https://synthorai.io/api/v1/keys \
-H "Authorization: Bearer sk-syn-admin-..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: device-abc-123" \
-d '{
"name": "Device abc-123",
"limit_usd": 5.0,
"limit_reset": "monthly",
"allowed_models": ["claude-haiku-4-5"],
"metadata": { "tenant_id": "acme", "device_id": "abc-123" }
}'import requests
resp = requests.post(
"https://synthorai.io/api/v1/keys",
headers={
"Authorization": "Bearer sk-syn-admin-...",
"Idempotency-Key": "device-abc-123",
},
json={
"name": "Device abc-123",
"limit_usd": 5.0,
"limit_reset": "monthly",
"allowed_models": ["claude-haiku-4-5"],
"metadata": {"tenant_id": "acme", "device_id": "abc-123"},
},
)
inference_key = resp.json()["data"]["key"] # full key - shown only onceLa risposta contiene la chiave completa nel campo key, una sola volta. Salvala subito: le letture successive restituiscono solo key_prefix.
{
"data": {
"id": 42,
"key": "sk-syn-d4f0...e91b",
"key_prefix": "sk-syn-d4f0...",
"name": "Device abc-123",
"enabled": true,
"status": "enabled",
"limit_usd": 5.0,
"used_usd": 0,
"limit_reset": "monthly",
"allowed_models": ["claude-haiku-4-5"],
"ip_allowlist": [],
"expires_at": null,
"include_byok_in_limit": true,
"rate_limit": { "rpm": 0, "tpm": 0 },
"metadata": { "tenant_id": "acme", "device_id": "abc-123" },
"created_via": "provisioning_api",
"created_at": "2026-10-01T12:00:00Z"
},
"meta": { "request_id": "01a1..." }
} Per ripetere una creazione senza rischi, invia un header Idempotency-Key. Una richiesta ripetuta con lo stesso valore restituisce la prima risposta, senza il segreto. La chiave restituisce quella risposta per 24 ore, anche se nel frattempo la risorsa è stata eliminata: per ricrearla, usa una chiave nuova.
Elencare e filtrare le chiavi
GET /api/v1/keys
Filtra per qualsiasi campo dei metadati con ?metadata.<name>=<value>. I risultati sono paginati: per la pagina successiva passa meta.next_cursor come cursor.
# all keys
curl https://synthorai.io/api/v1/keys \
-H "Authorization: Bearer sk-syn-admin-..."
# only keys tagged tenant_id=acme, 50 at a time
curl "https://synthorai.io/api/v1/keys?metadata.tenant_id=acme&limit=50" \
-H "Authorization: Bearer sk-syn-admin-..." Leggere, modificare, ruotare ed eliminare
- GET
/api/v1/keys/{id}restituisce una chiave. - PATCH
/api/v1/keys/{id}modifica solo i campi che invii."enabled": falseblocca la chiave senza eliminarla. - POST
/api/v1/keys/{id}/rotateassegna alla chiave un nuovo segreto. Il vecchio smette subito di funzionare. - DELETE
/api/v1/keys/{id}elimina la chiave. Le richieste che la usano ricevono subito401.
# stop a key without deleting it
curl -X PATCH https://synthorai.io/api/v1/keys/42 \
-H "Authorization: Bearer sk-syn-admin-..." \
-H "Content-Type: application/json" \
-d '{ "enabled": false }'
# give it a new secret
curl -X POST https://synthorai.io/api/v1/keys/42/rotate \
-H "Authorization: Bearer sk-syn-admin-..."
# delete it
curl -X DELETE https://synthorai.io/api/v1/keys/42 \
-H "Authorization: Bearer sk-syn-admin-..." Una chiave di amministrazione agisce per un solo membro: chi l’ha creata o, se la chiave è del workspace e chi l’ha creata se n’è andato, il proprietario. Può modificare, ruotare ed eliminare solo le chiavi di quel membro, comprese quelle che ha creato; sulla chiave di un altro membro la risposta è 403 not_key_creator, anche con la chiave di amministrazione del proprietario. Su un’istanza dedicata qualsiasi chiave di amministrazione del workspace può gestire le chiavi di tutti i membri, come gli amministratori nella console. Una chiave disattivata da un amministratore può essere riattivata solo da un amministratore: chiunque altro riceve 403 disabled_by_admin.
Limiti e spesa
limit_usd è quanto la chiave può spendere, used_usd quanto ha già speso. Raggiunto il limite, status diventa limit_reached e le richieste vengono rifiutate finché non alzi il limite o il periodo non si azzera.
Metti in metadata il tuo id del cliente o del dispositivo, poi filtra l’elenco con quel valore: vedi le chiavi di quel cliente e quanto ha speso ciascuna.
Devi decidere il limite di spesa di ogni chiave? Il calcolatore dei costi delle API LLM trasforma il volume di token previsto per un cliente in una cifra mensile da impostare come limit_usd.
Errori
Gli errori seguono il formato dell’API di gestione: error.code indica il motivo e error.message cosa fare. Su /api/provisioning/keys lo stesso codice arriva in error.type. Questi sono i codici specifici delle chiavi di amministrazione e degli endpoint delle chiavi:
| Codice | Stato HTTP | Significato |
|---|---|---|
key_creator_not_authorized | 403 | Chi ha creato la chiave di amministrazione non è più amministratore né proprietario. |
key_owner_not_member | 403 | Il membro per cui agisce la chiave non fa più parte del workspace. |
not_key_creator | 403 | La chiave che stai modificando, ruotando o eliminando appartiene a un altro membro. |
disabled_by_admin | 403 | Un amministratore ha disattivato la chiave. Solo un amministratore può riattivarla. |
key_policy_refused | 400 | La chiave supererebbe i limiti del membro a cui è destinata: il suo limite giornaliero, i suoi modelli o gli intervalli IP consentiti dal workspace. Il messaggio indica quale. |
key_policy_unavailable | 503 | Non è stato possibile leggere questi limiti. Riprova tra poco. |
Chiavi di provisioning e /api/provisioning
Le chiavi emesse prima delle chiavi di amministrazione (sk-syn-prov-) continuano a funzionare, con gli ambiti keys.read e keys.write. Il vecchio indirizzo /api/provisioning/keys risponde ancora, con i suoi nomi di campo (quota, status). Per le nuove integrazioni usa /api/v1/keys.
L’API di gestione copre anche la fatturazione, il registro delle richieste, i prompt e le impostazioni del workspace. Vedi la panoramica dell’API e il documento OpenAPI.