Riferimento API
Autenticazione e idempotenza
Credenziali, ambiti, Idempotency-Key e identificativi delle richieste per ogni chiamata all’API SciFig.
Autenticazione Bearer#
Invia Authorization: Bearer <credential> con ogni richiesta, eccetto GET /pricing, GET /openapi.json e GET /openapi.yaml. Le credenziali nei parametri di query o in altre intestazioni vengono ignorate.
Le credenziali usano autenticazione Bearer; le credenziali vincolate a DPoP non sono supportate.
- Le chiavi API iniziano con
sk_live_. Creale in Impostazioni → Sviluppatore; la chiave viene mostrata una sola volta. Conservala su un server e non distribuirla mai in un’applicazione per browser o mobile. Ti inviamo un’e-mail 7 giorni prima della scadenza. - I token di accesso OAuth iniziano con
sf_at_. I client MCP li ricevono dopo la tua autorizzazione; puoi scollegare un client in Impostazioni → Sviluppatore → Applicazioni collegate. - Credenziali mancanti, non valide, scadute o revocate restituiscono
401 UNAUTHORIZED. Un account che non può usare l’API, ad esempio perché è in fase di eliminazione, restituisce401 ACCOUNT_UNAVAILABLE. - La revoca di una chiave impedisce nuove richieste con quella chiave; i processi già creati continuano e restano consultabili con altre credenziali dello stesso account.
Ambiti#
| Ambito | Autorizzazioni | Tipo di chiave API |
|---|---|---|
| figures:read | GET /jobs, GET /jobs/{id}, GET /files/{file_id}, GET /credits | Chiave di sola lettura; può non scadere mai |
| figures:generate | Tutto ciò che include figures:read, più ogni endpoint POST | Chiave di generazione; scade dopo 30 giorni, 90 giorni o 1 anno; richiede un abbonamento attivo o un saldo positivo di crediti acquistati in pacchetti |
Una richiesta fuori dall’ambito delle credenziali restituisce 403 SCOPE_DENIED. Usa una chiave diversa per ogni applicazione e ambiente, così puoi revocarne una senza influire sulle altre.
Idempotenza#
- Ogni richiesta di creazione (
POST /images/*,/charts/*,/flowcharts/*) richiede un’intestazioneIdempotency-Keycon 1–255 caratteri ASCII visibili. Un UUID casuale per richiesta è la scelta più semplice. Anche i caricamenti suPOST /filespossono inviarla; consulta file. - La stessa chiave con lo stesso corpo restituisce lo stesso processo e non riserva altri crediti. Per i caricamenti dei grafici, i byte del file di dati fanno parte del corpo.
- La stessa chiave con un corpo diverso restituisce
409 IDEMPOTENCY_CONFLICT. Richieste simultanee con la stessa chiave non creano mai due processi: ciascuna restituisce lo stesso processo oppure409 IDEMPOTENCY_IN_PROGRESSconRetry-After: 1mentre la prima viene ancora ammessa. - Riprova con la stessa chiave dopo un timeout, un errore di rete, un
429o un503: è l’unico modo per garantire che un processo non venga creato due volte. - Una volta creato il processo, un errore che consente un nuovo tentativo (
429,503,409 IDEMPOTENCY_IN_PROGRESS) o500 INTERNAL_ERRORincludedetails.job_id. Riprova con la stessa chiave o consultaGET /jobs/{job_id}; non passare a una nuova chiave, che creerebbe e addebiterebbe un secondo processo. Un processo accettato ma non rileggibile riceve una risposta202con statoqueued. - Una richiesta rifiutata, ad esempio
402 INSUFFICIENT_CREDITS, conserva quella risposta per la sua chiave. Dopo una ricarica o il passaggio a un piano superiore, inviala di nuovo con una nuova chiave.
Client OAuth#
- I client MCP usano OAuth 2.1 con PKCE. I token di accesso (
sf_at_…) sono validi per 1 ora. Un client che richiede l’ambitooffline_accessriceve anche un token di rinnovo (sf_rt_…) valido per 30 giorni e rimane collegato finché non lo scolleghi; senzaoffline_access, devi accedere di nuovo quando scade il token di accesso. - I token di rinnovo ruotano: ogni rinnovo ne restituisce uno nuovo. Presentare un token già usato viene considerato riutilizzo e revoca i token emessi a partire da esso, quindi il client deve accedere nuovamente.
- La registrazione dinamica dei client accetta un corpo di massimo 16 KB, con limiti alla lunghezza di ogni campo e al numero di URI di reindirizzamento. L’autenticazione dell’endpoint dei token è
noneper i client pubblici con PKCE oppureclient_secret_basic. - Un client registrato ma mai autorizzato viene eliminato dopo 24 ore.
- Una richiesta di autorizzazione con
prompt=loginomax_agerichiede un nuovo accesso. Se hai già effettuato l’accesso, SciFig chiede conferma prima di disconnetterti e farti accedere nuovamente. - I limiti delle credenziali OAuth vengono conteggiati per client e account: gli altri utenti dello stesso assistente non consumano i tuoi limiti.
Identificativi delle richieste#
Ogni risposta include X-Request-Id; i corpi degli errori lo ripetono come error.request_id. Identifica la richiesta nei nostri registri senza esporre altre informazioni, quindi puoi registrarlo e fornirlo quando contatti l’assistenza.