spicyapiDocumentazione
Account e fatturazione
Contenuto principale

Conservazione e distruzione

Limiti di conservazione, periodi più brevi, effetti sui contenuti esistenti, distruzione dei contenuti di un'attività e limiti delle nostre garanzie.

La conservazione ha due livelli. Il limite massimo della piattaforma è un impegno pubblico, non un parametro interno da regolare. Entro quel limite, puoi impostare periodi più brevi e distruggere il contenuto di una singola attività quando vuoi.

Il rapporto tra i due livelli si riassume in una frase: puoi soltanto abbreviare il periodo; nessuna tua impostazione può aumentare il limite massimo.

Per quanto tempo conserviamo i dati (limiti della piattaforma)

DatiLimite della piattaformaAlla scadenza
File generati (immagini / video / audio)Circa 14 giorniEliminati dall'archiviazione a oggetti
Contenuti multimediali dei cortometraggi (immagini delle scene, video e voci creati in un progetto di cortometraggio di Spicy Studio, e film esportati da quel progetto)Circa 60 giorniEliminati dall'archiviazione a oggetti
Immagini di riferimento caricate da te1 giornoL'URI spicy:// scade al valore expiresAt della risposta di conferma del caricamento; l'oggetto viene eliminato successivamente
Contenuto delle attività (prompt e parametri in input, riferimenti ai file in output)30 giorniEntrambi i campi vengono svuotati; il record dell'attività viene conservato
Libreria di asset (file che salvi di proposito)Finché non li eliminiEliminati quando elimini l'asset o il proprietario chiude l'account; una libreria di team viene eliminata insieme al suo team. Vedi Media
Record delle attività (ID, modello, stato, importo, date e ore, senza contenuti di alcun tipo)Conservati a tempo indeterminatoNon vengono eliminati. Sono le prove su cui si basa una contestazione di fatturazione
Log ed eventi delle attività (transizioni di stato, record di consegna dei webhook)Almeno 60 giorni (partizioni mensili, quindi in pratica 2–3 mesi)Eliminati
Record del saldo e del registro contabile10 anniConservati per la cronologia dell'account, le riconciliazioni e le contestazioni; vedi sotto
Record di audit2 anniRimossi secondo la politica dopo la verifica dell'integrità
IP / UA in chiaro nei record di sicurezza90 giorniSostituiti con pseudonimi HMAC con versione; non si tratta di anonimizzazione
Backup del database35 giorniSostituiti a rotazione; la cancellazione nell'applicazione non elimina immediatamente i backup

Puoi abbreviare i periodi delle prime quattro righe con i quattro intervalli descritti sotto: risultati generati, inclusi file e contenuto della risposta, contenuti multimediali dei cortometraggi, testo dei prompt e file caricati.

I contenuti dei cortometraggi hanno una finestra più lunga perché un film in Spicy Studio viene costruito nell'arco di giorni o settimane, e una scena creata nella prima settimana deve essere ancora disponibile quando si esporta il film completo. Questo vale soltanto per le attività avviate all'interno di un progetto di cortometraggio nello Studio; lo stesso modello chiamato tramite API, SDK o Playground mantiene il limite di 14 giorni, mentre il testo dei prompt mantiene il limite di 30 giorni in entrambi i casi. Gli altri periodi rispondono a obblighi della piattaforma o previsti dalla legge e non cambiano con le tue impostazioni.

Questi valori sono configurazioni del server, non costanti fissate nel codice

La tabella elenca i limiti attualmente in vigore, che sono anche i valori predefiniti: senza impostare nulla, il comportamento rimane quello precedente. Il team operativo può modificarli, poiché i requisiti delle giurisdizioni cambiano, ma ogni modifica viene gestita come un cambiamento di conformità: questa pagina e il comportamento effettivo di cancellazione devono restare allineati.

Se ti serve un periodo di conservazione diverso previsto da contratto, discutine prima della firma, invece di dedurlo da questa pagina.

La durata dell'URI di caricamento non coincide con il completamento della cancellazione dell'oggetto

L'URI spicy:// restituito dalla conferma del caricamento può essere utilizzato soltanto fino a expiresAt nella risposta, che per impostazione predefinita è 1 giorno dopo una conferma riuscita. Da quel momento l'URI diventa immediatamente inutilizzabile per nuove attività. L'oggetto sottostante viene rimosso dal nostro processo di pulizia e l'ultimo meccanismo di protezione può intervenire con un ritardo fino a 24 ore; tale ritardo non prolunga la validità dell'URI.

Perché diciamo «circa 14 giorni» e non «esattamente 14 giorni»

Il livello finale di scadenza è una regola del ciclo di vita dell'archiviazione a oggetti, il cui comportamento ufficiale prevede la rimozione degli oggetti entro 24 ore dalla scadenza. Promettere un numero intero quando la cancellazione avviene a 14 giorni più fino a un giorno ulteriore sarebbe una dichiarazione falsa, quindi diciamo «circa».

Lo stesso vale per i periodi brevi che imposti tu. Se imposti un'ora, la pulizia normalmente si completa entro pochi minuti, ma continuiamo a scrivere «circa un'ora» o «non oltre», mai un valore esatto.

Scarica tutto ciò che vuoi conservare. Una volta chiusa la finestra non è possibile emettere un link di download, anche se il record dell'attività resta consultabile e i movimenti del saldo restano visibili nella cronologia di fatturazione.

Quattro intervalli, impostati separatamente

Rispondono a quattro domande diverse, non a una sola domanda con quattro impostazioni. I nomi qui sotto sono quelli mostrati nella console:

IntervalloChe cosa comprendeValore predefinito (= limite della piattaforma)Opzioni
Risultati generatiImmagini / video / audio generati e contenuto della risposta del risultatoCirca 14 giorni1 ora / 6 ore / 24 ore / 7 giorni / 14 giorni
Contenuti multimediali dei cortometraggiContenuti creati in un progetto di cortometraggio di Spicy Studio e film esportati da quel progettoCirca 60 giorni1 ora / 24 ore / 7 giorni / 14 giorni / 30 giorni / 60 giorni
Testo dei promptTesto della richiesta: prompt e campi di testo dentro input30 giorniCome i risultati / 1 ora / 24 ore / 7 giorni / 30 giorni
File caricatiFile che carichi come riferimenti1 giornoElimina al termine dell'attività / 1 ora / 24 ore

Impostali in Conservazione nella pagina Protezione dei dati della console. Quando un'attività viene accettata, ricava i propri tempi di scadenza dei risultati e dei prompt da queste impostazioni e dall'header descritto sotto; puoi leggerli in retention dentro recordInfo.

«Elimina al termine dell'attività» significa che un file caricato viene eliminato quando tutte le attività che lo utilizzano hanno raggiunto uno stato finale (succeeded / failed / canceled / expired), normalmente entro un minuto. Non viene eliminato alla creazione dell'attività, perché un nuovo tentativo ne ha bisogno. Considera prima la conseguenza: per elaborare di nuovo la stessa immagine devi ricaricarla, e un nuovo tentativo fallirà.

Effetti di una modifica sui dati già presenti

Cambiare un intervallo non è semplicemente un interruttore «da ora in poi». Alcune modifiche si applicano anche alle attività che hai già eseguito; altre no. Oggi funziona così:

ModificaEffetto sulle attività e sui file già presenti
Testo dei prompt a 1 ora o 24 oreAl successivo passaggio di pulizia, normalmente entro pochi minuti, ogni attività conclusa da più di un giorno perde il testo del prompt e i risultati e i file generati, anche se Risultati generati resta impostato a 14 giorni. Da quel momento lo stesso accade a ogni attività quando supera un giorno dalla conclusione, salvo che venga rimossa prima da un altro meccanismo.
Testo dei prompt a 7 giorniStesso comportamento, con 7 giorni al posto di uno.
Risultati generati a un periodo più breve, mentre Testo dei prompt è impostato su Come i risultatiStesso comportamento dell'impostazione di Testo dei prompt a quella durata: 7 giorni si applica retroattivamente a 7 giorni; 1 ora, 6 ore o 24 ore si applicano retroattivamente a un giorno.
Risultati generati a un periodo più breve, mentre Testo dei prompt ha un valore proprioNon cambia nulla per le attività già eseguite: ciascuna mantiene la scadenza dei risultati assegnata all'accettazione. Le nuove attività usano il periodo più breve.
File caricati su Elimina al termine dell'attivitàSi applica ai file presenti quando salvi. Quelli già utilizzati soltanto da attività concluse vengono eliminati entro circa un minuto; gli altri quando terminano le attività che li utilizzano. I file caricati dopo il salvataggio mantengono attualmente la scadenza standard indicata nella risposta di conferma.
File caricati a 1 ora o 24 oreAttualmente non cambia nulla: ogni file caricato resta utilizzabile fino a expiresAt nella propria risposta di conferma.
Qualsiasi intervallo a un periodo più lungoNulla di ciò che è stato eliminato viene ripristinato e le attività esistenti mantengono la scadenza assegnata.

Alcune modifiche si applicano retroattivamente perché i tempi di scadenza di ogni attività vengono fissati all'accettazione, ma un secondo processo di pulizia lavora per giorni interi. Legge l'impostazione Testo dei prompt, la arrotonda per eccesso a 1, 7 o 30 giorni e la applica a tutte le attività concluse dell'account; quando svuota un'attività, rimuove insieme testo dei prompt e risultati.

La stessa pagina ha una seconda scheda, Conservazione del contenuto delle attività, che controlla direttamente quel processo basato sui giorni:

  • Scegliere 1 giorno o 7 giorni elimina testo dei prompt, risultati e file generati di tutte le attività concluse da più di quel periodo, continuando a farlo per ogni attività quando raggiunge quella età.
  • Attivare Cancella il contenuto poco dopo il completamento li elimina per ogni attività conclusa, incluse quelle eseguite prima dell'attivazione, circa un'ora dopo il completamento di ciascuna.
  • Le due schede condividono le impostazioni: salvare in una modifica ciò che mostra l'altra.

Scarica ciò che vuoi conservare prima di abbreviare qualsiasi periodo

Un'impostazione più breve può eliminare risultati e prompt di attività già eseguite, e i contenuti eliminati non possono essere ripristinati. Prima del salvataggio, la console mostra quanti elementi prevede di coinvolgere; considera quel numero un avviso, non un elenco esatto di ciò che verrà rimosso.

Scarica prima ogni risultato che vuoi conservare, poi abbrevia l'intervallo. Allungarlo non richiede questa precauzione: influisce soltanto sul futuro e non ripristina nulla di ciò che è già stato eliminato.

Impostazione per singola richiesta: X-Spicy-Retention

Se non vuoi cambiare l'impostazione dell'account e desideri soltanto che questa generazione scompaia prima, invia l'header alla creazione dell'attività. Il valore è un numero intero di secondi e si applica ai file e al prompt di questa attività:

curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $SPICY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
  -H "X-Spicy-Retention: 3600" \
  --data "$TASK_PAYLOAD"
  • Solo periodi più brevi. Il valore effettivo è min(header, account setting, platform cap). Quando un amministratore imposta l'account a un'ora, una singola richiesta non può ottenere di nuovo 14 giorni: altrimenti l'impostazione dell'account sarebbe un suggerimento, non un'impostazione.
  • 0 è valido e significa «elimina i file non appena l'attività raggiunge uno stato terminale».
  • Un valore non valido non fa fallire la richiesta. Un numero negativo viene limitato a 0; un valore oltre il limite massimo viene ridotto al limite; un valore che non è un intero decimale viene ignorato, applicando quindi l'impostazione dell'account. Il valore effettivamente applicato viene sempre riportato in retention dentro recordInfo. Un header che chiede soltanto una conservazione più prudente non dovrebbe mai interrompere una generazione.
  • Quali endpoint lo leggono. Lo leggono sia jobs/createTask sia jobs/stream. jobs/retry eredita il valore effettivo dell'attività sorgente e ignora l'header: un retry è un secondo tentativo della stessa operazione, e consentirgli un periodo diverso darebbe due scadenze diverse a una famiglia di attività. jobs/quote non lo legge, perché non crea attività.

recordInfo restituisce retention per ogni attività; la risposta di createTask non lo include, quindi leggilo dopo la creazione:

{
  "retention": {
    "outputsExpireAt": "2026-09-13T12:00:00Z",
    "promptsExpireAt": "2026-09-13T12:00:00Z",
    "source": "header"
  }
}

source indica quale livello ha determinato il valore: header (questa richiesta), account (impostazione dell'account) o platform (limite massimo). Se invii l'header ma ottieni comunque account, l'impostazione dell'account era già più breve di quanto richiesto.

Prima che l'attività termini, outputsExpireAt è calcolato dall'accettazione; quando l'attività raggiunge uno stato terminale, viene ricalcolato dal momento di completamento, usando la stessa finestra. Può quindi spostarsi soltanto più avanti, mai prima. Affidati alle date e ore della risposta invece di ricalcolarle: il risultato dell'applicazione dei tre limiti non è sempre quello atteso. A parte una distruzione richiesta da te, l'unico meccanismo che può rimuovere i contenuti prima di questi tempi è un'impostazione retroattiva dell'account, come descritto sopra.

Distruggere i contenuti su richiesta: POST /jobs/purge

Se non vuoi aspettare la scadenza:

  • Nella console, apri l'attività nei Log e scegli Distruggi gli output: è la stessa operazione dell'endpoint seguente.
  • Rimuovi dalla cronologia, sulla stessa attività, svuota anch'esso prompt e risultato e accoda i file per la cancellazione, nascondendo inoltre l'attività dai tuoi log. È disponibile dopo la conclusione dell'attività e il regolamento della fatturazione.

Nessuna delle due azioni cambia l'addebito e nessuna annulla un'attività. Da codice:

curl -X POST https://api.spicyapi.ai/api/v1/jobs/purge \
  -H "Authorization: Bearer $SPICY_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{"taskId": "job_01k..."}'
RimossoConservato
Gli oggetti dei file generatiVoci e importi del registro contabile
Il contenuto del risultato (output)Stato dell'attività e date e ore
Prompt e testo dentro inputIdentificatore del modello e request_id

La risposta:

{
  "taskId": "job_01k...",
  "contentState": "purged",
  "purgedAt": "2026-09-13T12:00:00Z",
  "contentRemovedBy": "user",
  "billingRetained": true,
  "mediaDeletionPending": true
}

Alcune regole:

  • Solo attività terminali (succeeded / failed / canceled / expired). Aspetta la fine di un'attività in corso: i file non sono ancora arrivati e una cancellazione parziale è peggio di nessuna cancellazione. Una generazione non può essere annullata dopo l'accettazione, quindi non esiste un percorso «prima annulla, poi distruggi».
  • L'operazione è idempotente e non richiede Idempotency-Key. L'endpoint è idempotente in base a taskId: richiamarlo su un'attività già distrutta restituisce comunque 200, e purgedAt indica il momento della prima distruzione, non quello della chiamata corrente. Riprovare dopo un timeout è sicuro.
  • La risposta significa «programmata», non «già eliminata». Quando mediaDeletionPending è true, contentState è già purged, ma il processo in background non ha ancora completato la rimozione degli oggetti; normalmente termina entro un minuto. Una cancellazione sincrona permetterebbe a un singolo oggetto problematico di bloccare tutta la richiesta, proprio quando hai bisogno di una risposta chiara.
  • Una risposta ancora present significa che questa chiamata non ha rimosso nulla, per esempio perché l'attività è soggetta a un obbligo di conservazione. Puoi riprovare più tardi; la motivazione specifica non viene deliberatamente divulgata.
  • billingRetained è sempre true. Può sembrare ridondante, ma è presente perché è il punto che più facilmente viene frainteso da chi chiama questo endpoint: vedi sotto.

Distruggere non significa annullare né ottenere un rimborso

purge interviene soltanto sui contenuti. Non modifica la fatturazione:

  • Un addebito regolato resta tale. Distruggere i file non restituisce il denaro.
  • Una riserva già liberata per un'attività fallita o scaduta resta liberata; la distruzione non la rilascia una seconda volta.
  • L'addebito resta nella pagina di fatturazione, con importo, data e ora e modello.

È intenzionale. I record contabili sono la prova della transazione per entrambe le parti e vengono conservati secondo una politica di 10 anni; i contenuti sono tuoi e possono essere rimossi su richiesta. Sono due categorie di dati, non due aspetti della stessa cosa.

In una frase: la distruzione rimuove i contenuti, non la registrazione della tua spesa.

contentState: presenza dei contenuti e autore della rimozione

I dettagli dell'attività includono contentState, con tre valori:

ValoreSignificatoQuando compare
presentI contenuti sono ancora presentiÈ lo stato normale e quello da attribuire alle attività più vecchie, anteriori all'introduzione del campo
expiredRimossi automaticamente alla scadenzaÈ trascorso il periodo di conservazione effettivo ed è stato eseguito il processo di pulizia
purgedLi hai distrutti tuHai chiamato jobs/purge oppure scelto Distruggi gli output

Gli ultimi due includono purgedAt, cioè il momento della rimozione, e contentRemovedBy: system per il processo di pulizia e user per te.

La parola `expired` compare in due punti con significati diversi

  • Stato dell'attività expired: la generazione ha superato il tempo massimo e non ha prodotto nulla.
  • contentState expired: la generazione ha prodotto qualcosa che è stato successivamente rimosso secondo le impostazioni di conservazione.

Condividono una parola inglese. Una sola etichetta «Scaduto» nella tua interfaccia fonde due situazioni indipendenti: la prima richiede un nuovo tentativo; la seconda non può restituire quel risultato, indipendentemente dal numero di tentativi.

Mostrare purged come «scaduto» è sbagliato per lo stesso motivo, al contrario: uno è un pulsante premuto dall'utente, l'altro è la nostra politica applicata secondo programma. Invertirli fa pensare che la piattaforma abbia perso i file.

La scadenza svuota i campi, non elimina i record

Entrambe le parti della frase contano: la prima da sola è fuorviante

I contenuti vengono cancellati al termine del periodo di conservazione; il record di fatturazione e stato, che non contiene contenuti, viene conservato a tempo indeterminato.

La prima parte, da sola, è letteralmente vera ma lascia un'impressione sbagliata: scompare il contenuto di input e output, non il record dell'attività.

La pulizia comprende input, output, URL di callback e contenuti degli eventi e delle callback correlati. Il record dell'attività viene conservato a tempo indeterminato: è l'unica prova su cui si basa una contestazione di fatturazione, e cancellarlo comprometterebbe la contabilità. Dopo la pulizia, ogni riga contiene poche centinaia di byte di metadati: ID dell'attività, modello, stato, importo, date e ore, chiave di origine. La distruzione su richiesta segue esattamente la stessa regola; decidi tu soltanto il momento.

Una volta eliminati i contenuti:

  • Puoi ancora rispondere a «quanto mi è stato addebitato questo mese, quali attività sono fallite, quale chiave le ha inviate».
  • Non puoi rispondere a «quale prompt ho inviato, quale chiave dell'oggetto identificava il file»: da quel momento recordInfo smette di restituire input e output.

Se vuoi conservare i prompt più a lungo, mantieni una tua copia. Un obbligo di conservazione attivo sospende la cancellazione pertinente e blocca anche la distruzione su richiesta; nessuno dei due meccanismi può ripristinare un output già eliminato fisicamente.

La cronologia del saldo è separata dal contenuto delle attività

Svuotare input e output di un'attività, alla scadenza o perché li hai distrutti, non modifica ricariche, riserve, addebiti finali, riserve restituite o rettifiche manuali. Puoi ancora riconciliare quei movimenti nella pagina di fatturazione della console. I record contabili seguono una politica di conservazione di dieci anni e non vengono rimossi quando il contenuto di un'attività scade o viene distrutto.

Se una richiesta di accesso o cancellazione riguarda dati da conservare per una contestazione, un'indagine di sicurezza o la normativa applicabile, la nostra risposta spiegherà l'ambito e la motivazione.

Due cose che non possiamo fare

1. Il modello che esegue la richiesta vede necessariamente il prompt in chiaro

La generazione viene eseguita dal modello che selezioni, e il prompt deve arrivare a quel modello come testo in chiaro. È un limite architetturale, non un'impostazione; ridurre il periodo a un'ora non lo cambia. I nostri periodi di conservazione possono quindi garantire soltanto per quanto tempo SpicyAPI conserva direttamente qualcosa.

Ciò che accade al prompt dopo che raggiunge il modello è al di fuori del controllo delle nostre impostazioni di conservazione. Se questo è importante per il tuo caso d'uso, contattaci prima di inviare materiale sensibile.

2. La «cancellazione immediata» non esiste

La regola finale del ciclo di vita ha una finestra di esecuzione fino a 24 ore e i backup del database ruotano su 35 giorni. Qualsiasi affermazione secondo cui i dati scompaiano istantaneamente dal mondo è falsa. Possiamo impegnarci sui tempi di completamento, non sull'istantaneità: per questo anche l'endpoint di distruzione risponde «programmata» invece di «eliminata».

Le attività coinvolte in una contestazione, una richiesta forense o un obbligo di segnalazione previsto dalla legge vengono sottoposte a un blocco di conservazione e il conteggio verso la scadenza si interrompe fino alla rimozione del blocco. La distruzione su richiesta non viene eseguita mentre il blocco è attivo.

Questo prevale su tutti i valori e tutte le impostazioni descritti sopra. Non è un'eccezione nascosta: senza un meccanismo di blocco, la prima comunicazione legale imporrebbe di violare qualsiasi promessa di conservazione, per poi dover spiegare perché la documentazione dichiarava 14 giorni. Lo dichiariamo qui perché è parte di questa politica.

Le scelte che dipendono da te

  • Imposta ogni intervallo alla durata che ti serve davvero. Sono separati: non impostare i caricamenti su «Elimina al termine dell'attività» come effetto collaterale del desiderio di conservare i prompt per meno tempo.
  • Scarica prima di abbreviare. Un'impostazione più breve può applicarsi alle attività già eseguite: vedi gli effetti di una modifica.
  • Usa X-Spicy-Retention per singole richieste sensibili. Non occorre riconfigurare un intero account per una generazione.
  • Non inviare ciò che non serve. Immagini di riferimento e prompt sono i due elementi più sensibili e gli unici due di cui scegli il contenuto.
  • Archivia i tuoi file generati. Restano disponibili al massimo per circa 14 giorni, o circa 60 giorni per i contenuti dei cortometraggi, e per meno tempo se riduci l'intervallo.
  • Ottieni una copia dei dati dell'account. Scarica i tuoi dati nella pagina Protezione dei dati fornisce un file JSON con profilo, ruoli nei team, dettagli delle chiavi API, mai i segreti, dati delle attività conservati e record di fatturazione. Non include i file multimediali: scarica separatamente i risultati che ti servono.
  • Non memorizzare gli URL di download nel database. Scadono dopo 20 minuti e non possono essere revocati dopo l'emissione. Genera un URL firmato quando serve: consulta Contenuti multimediali.
  • Usa HTTPS per gli URL di callback. Il payload contiene stato dell'attività e riferimenti ai file; HTTP in chiaro li espone a chiunque si trovi sul percorso.

Non addestriamo modelli sui tuoi contenuti

Prompt, immagini di riferimento e file generati non entrano in alcun set di addestramento.

Il confine di questa frase conta: riguarda noi. Non siamo noi a stabilire le politiche applicate da ciascun modello; vedi il primo punto sopra.

In questa pagina