Zum Hauptinhalt springen

KI-Medien speichern: temporäre Upload-URLs, kurzlebige Ergebnisse und zuverlässige API-Übergabe

SpicyAPI behält Uploads 1 Tag, Ergebnisse etwa 14 Tage und Links etwa 20 Minuten. Einstellungen und API-Aufrufe verkürzen dies oder löschen Inhalte.

Autor
SpicyAPI Engineering
Erschienen
Lesedauer
12 Min. Lesezeit
Aktualisiert
Landschaftskarten, verbunden durch goldenes Licht von einer Glasschale über eine geschützte Glasglocke zu einem gläsernen Bilderrahmen

Wenn Sie ein KI-Bild- oder Videoprodukt ohne Zensur entwickeln, bestimmen drei Fakten Ihre Speicherarchitektur. Hochgeladene Referenzdateien bleiben 1 Tag erhalten. Generierte Medien aus API-, SDK- und Playground-Tasks bleiben etwa 14 Tage erhalten (für Studio-Kurzfilmmedien gilt eine separate Obergrenze von etwa 60 Tagen), und jeder erhaltene Download-Link funktioniert nur etwa 20 Minuten. Das sind jeweils Obergrenzen: Sie können sie nur verkürzen, entweder für das ganze Konto oder für einzelne Anfragen, und Inhalte abgeschlossener Tasks bei Bedarf vernichten. Keine Einstellung verlängert diese Grenzen.

Der zuverlässige Ablauf lautet daher: mit einem kurzlebigen Ticket direkt hochladen, den Upload bestätigen, mit der privaten spicy://-Referenz einen asynchronen Task erstellen, nach Abschluss den Ergebnislink abrufen und das Ergebnis entweder in selbst kontrollierten Speicher kopieren oder bewusst verfallen lassen. Legen Sie Kunden-Uploads nicht in einem öffentlichen Bucket ab und speichern Sie zurückgegebene Download-URLs nicht als permanente Links.

Eine Referenz zu SpicyAPI hochzuladen ist kostenlos; der Generationstask, der sie verwendet, wird separat berechnet. Das Erneuern eines Download-Links für ein vorhandenes Ergebnis startet oder kauft die Generierung nicht erneut. Jeder neue Generierungsversuch kostet den jeweiligen Modellpreis. Speicher, Anfragen und Datentransfer einer Kopie in Ihrem eigenen Bucket richten sich nach den Preisen Ihres Speicheranbieters.

Lesen Sie die akzeptierten Aufbewahrungsfristen, bevor Sie Kunden eine Speicherfrist zusagen; die Dokumentation zur Aufbewahrung erklärt die Einstellungen. Ein praktisches Beispiel für eine lokale Kopie finden Sie in Temporäre KI-Medien in dauerhaft nutzbare Produktdateien umwandeln.

Zuerst im Playground ausprobieren

  1. Öffnen Sie die z-image-Seite für Text-zu-Bild, bleiben Sie in Workbench bei Form, geben Sie einen Prompt ein, wählen Sie ein Aspect ratio und dann Run model (vorher anmelden; dieses eine Bild ist eine regulär kostenpflichtige Generierung). Prüfen Sie es unter Preview und speichern Sie es mit Download.
  2. Öffnen Sie in der Console Logs und suchen Sie diesen Task, um die Aufbewahrungsdauer seiner Ausgabe zu sehen.
  3. Öffnen Sie Data protection, dann Retention, um die vier Fristen einzusehen und zu verkürzen.
  4. Sobald Sie eine eigene Kopie haben, wählen Sie beim abgeschlossenen Task Destroy outputs, um seinen Inhalt zu löschen.

Was SpicyAPI aufbewahrt und wie lange

DatenAufbewahrungWas bei Ablauf geschieht
Hochgeladene Referenzdateien1 Tag nach erfolgreicher Upload-BestätigungDie spicy://-URI funktioniert für neue Tasks (einschließlich Wiederholungen) nicht mehr; das Objekt wird anschließend gelöscht, mit bis zu 24 Stunden Verzögerung bei der Bereinigung
Generierte Bilder, Videos und AudiodateienEtwa 14 Tage für API-, SDK- und Playground-Ergebnisse; etwa 60 Tage innerhalb eines Spicy Studio-Kurzfilmprojekts, mit bis zu 24 Stunden BereinigungsverzögerungAus dem Objektspeicher gelöscht; es kann kein Download-Link mehr ausgestellt werden
Prompt-Text und Ergebnisdateipfade im Task (input, output)30 TageBeide Felder werden geleert; der Task-Datensatz bleibt
Task-Datensatz (ID, Modell, Status, Betrag, Zeitstempel)UnbegrenztBleibt als Abrechnungsnachweis; Inhaltsfelder werden nach ihrem eigenen Zeitplan geleert
Abrechnungsbuch10 JahreBleibt erhalten; Inhaltslöschung hat keinen Einfluss
Task-Logs und Webhook-ZustellnachweiseMindestens 60 TageGelöscht
Datenbank-Backups35 TageWerden rollierend ersetzt; Inhaltslöschung entfernt Backups nicht sofort

Selbst verkürzen oder vernichten

1. Aufbewahrungsfristen des Kontos. Unter Retention auf der Seite Data protection der Console gibt es vier getrennte Fristen:

FristGilt fürStandardKürzere Optionen
Generated resultsBilder, Videos, Audio und ErgebnisdatenEtwa 14 Tage1 Stunde, 6 Stunden, 24 Stunden, 7 Tage
Short-film mediaStudio-Kurzfilmmedien und exportierte FilmeEtwa 60 Tage1 Stunde bis 30 Tage
Prompt textTextfelder der Anfrage30 TageWie Ergebnisse, 1 Stunde, 24 Stunden, 7 Tage
Uploaded filesReferenzdateien1 TagDelete when the job ends

Für die Frist hochgeladener Dateien gelten drei wichtige Einschränkungen:

  • Delete when the job ends: Ein Upload wird entfernt, sobald alle Tasks, die ihn verwenden, einen Endstatus erreicht haben, normalerweise innerhalb einer Minute. Eine neue Generierung mit dieser gelöschten Referenz erfordert einen erneuten Upload.
  • Nur vorhandene Dateien: Der Schalter gilt für Dateien, die beim Speichern vorhanden sind. Spätere Uploads behalten derzeit den standardmäßigen Ablauf nach 1 Tag aus ihrer Bestätigungsantwort.
  • Optionen für 1 Stunde und 24 Stunden: Diese ändern derzeit nichts; der Upload bleibt bis zum zurückgegebenen expiresAt nutzbar.

Warnung vor jeder Verkürzung: Eine kürzere Einstellung kann bereits ausgeführte Tasks betreffen. Wenn Sie Prompt text beispielsweise auf 1 oder 24 Stunden setzen, werden Prompt-Text und generierte Ergebnisse aller Tasks geleert, die vor mehr als einem Tag fertig wurden, selbst wenn Generated results weiterhin auf 14 Tage steht. Gelöschte Inhalte lassen sich nicht wiederherstellen. Laden Sie zuerst alles herunter, was Sie behalten möchten; eine Verlängerung der Einstellung wirkt nur für die Zukunft.

2. Einzelne Anfragen. Senden Sie beim Erstellen eines Tasks den Header X-Spicy-Retention (Sekunden); die Dokumentation zur Aufbewahrung zeigt die Anfrage. Es gilt die kürzeste Frist aus Anfrage, Kontoeinstellung und Plattformobergrenze. Lesen Sie die akzeptierten Fristen aus dem Task, statt die angeforderte Dauer zu versprechen.

Verwenden Sie keine sofortige Löschung für ein Produkt, das Auslieferung oder eine gespeicherte Mediathek verspricht. Sie kann das Ergebnis entfernen, bevor Ihre Kopie fertig ist. Lassen Sie nach der Auslieferung einen zeitlichen Puffer für die Wiederherstellung.

3. Einen abgeschlossenen Task vernichten. Sobald Sie alles Nötige kopiert haben oder ein Kunde die Löschung verlangt, entfernen Sie die kreativen Inhalte dieses Tasks.

In der Console finden Sie dieselbe Aktion als Destroy outputs bei einem Task in Logs. Es gelten drei Regeln:

  • Nur abgeschlossene Tasks. Purge ist anhand von taskId idempotent; es benötigt keinen Idempotency-Key. Es bricht weder die Generierung ab noch erstattet es die Kosten, und billingRetained bleibt true.
  • Die Löschung wird eingeplant. contentState wird purged, während mediaDeletionPending bis zum Abschluss der Bereinigung true bleibt, normalerweise innerhalb einer Minute. Bestätigen Sie den Abschluss, bevor Sie einem Kunden mitteilen, dass die Daten gelöscht sind.
  • Eine Antwort mit present hat nichts entfernt. Prüfen Sie die Antwort und Aufbewahrungseinstellungen, statt die Löschung als abgeschlossen zu melden.

contentState ist expired, wenn die Aufbewahrungsfrist den Inhalt entfernt hat, und purged, wenn Sie ihn vernichtet haben. Der Task-Status expired bedeutet etwas völlig anderes: Die Generierung hat das Zeitlimit überschritten und nichts erzeugt. Nur in diesem zweiten Fall hilft eine Wiederholung.

Referenzdateien senden

Ein Referenzbild, -video oder eine Audiodatei kann einen Task auf drei Wegen erreichen. Eine öffentliche HTTPS-URL muss die Datei selbst zurückgeben: Ein Link auf eine Freigabeseite (Cloud-Laufwerk, Fotoalbum, Social-Media-Beitrag) liefert eine Webseite, und der Task scheitert mit invalid_asset. Laden Sie die Datei daher herunter und dann hoch. Ein kleines Bild (bis zu 1 MiB) kann inline als Base64-Daten-URI übergeben werden. Private oder große Dateien sollten über SDK, CLI oder Playground hochgeladen werden; diese liefern eine private spicy://-Referenz für den Task.

Upload-Grenzen: JPEG, PNG, WebP und GIF bis zu 10 MiB; WAV, MP3, WebM, MP4 und MOV bis zu 90 MiB und 600 Sekunden; ein Modell kann niedrigere Grenzen haben. Behalten Sie ein Original, wenn Sie die Eingabe nach ihrer eintägigen Frist erneut benötigen. Ihr Backend muss nur den Upload autorisieren und die Eigentümerschaft erfassen; der Client kann die Daten direkt senden. Hochladen ist kostenlos; die Generierung wird separat gekauft. Die Mediendokumentation beschreibt den Ablauf.

Ergebnisse: abrufen, dann kopieren oder verfallen lassen

Filmstreifen werden auf eine einzige Leinwand projiziert: allgemeine Illustration mehrerer Eingaben, die zu einem ausgelieferten Ergebnis werden

Ein Manuskript und Landschaftsbilder laufen in einer einzigen projizierten Szene zusammen.

Übermitteln Sie jede neue Anfrage mit einem eigenen Idempotenzschlüssel, behalten Sie die Task-ID und holen Sie das Ergebnis per Polling oder Callback ab. Fertige Dateien enthalten eine signierte url; rufen Sie diese ohne API-Key ab und senden Sie einen User-Agent wie Mozilla/5.0, weil das CDN den Standard-Agent von Python urllib mit einem 403 ablehnt, der nicht bedeutet, dass der Link abgelaufen ist. Ein Task mit succeeded kann noch eine Datei mit pending enthalten; prüfen Sie weiter, bis die URL bereitsteht. Ein abgelaufener Link lässt sich innerhalb der Aufbewahrungsfrist erneuern; die Mediendokumentation zeigt, wie.

Drei Dateizustände sollten Sie ausdrücklich behandeln:

Was Sie sehenBedeutungWas zu tun ist
pending: true, noch keine urlDie Datei wird noch in den Speicher kopiertNach einigen Sekunden erneut abfragen
unavailable: true, kein keyKeine abrufbare Plattformdatei: anfängliche Speicherung gescheitert, Frist abgelaufen oder durch Purge entferntEine verifizierte gespeicherte Kopie wiederherstellen; falls keine existiert, ausdrücklich über eine neue Generierung entscheiden
HTTP 410 von download-urlDie Aufbewahrungsfrist der Plattformkopie ist abgelaufen oder sie wurde vernichtetDie Plattformkopie lässt sich nicht wiederherstellen; gegebenenfalls eigenes Archiv verwenden

Ein reines Textmodell hat überhaupt keine assets; auch sein Text in output.text wird nach demselben Zeitplan gelöscht. Lesen Sie ihn, bevor Sie davon ausgehen, dass eine Datei existiert.

Die Ausnahme ohne Berechnung bei Speicherfehlern gilt, wenn keine Ausgabe eines Tasks anfänglich gespeichert werden konnte. Eine alte Datei mit unavailable allein begründet keine Erstattung; prüfen Sie die ursprüngliche Abrechnung des Tasks.

Callbacks enthalten Ihren Prompt und signierte Ergebnislinks. Ihr Endpunkt, Reverse Proxy, Fehlertracker und Ihre Logging-Pipeline erhalten damit Material, das SpicyAPI selbst planmäßig löscht. Entfernen Sie Callback-Inhalte aus Zugriffslogs und führen Sie das Kopieren in einem Worker aus. Signaturprüfung, Deduplizierung und Wiederholungen erklärt die Webhook-Dokumentation.

  • Ihr Produkt verspricht eine Mediathek, Freigaben oder spätere Bearbeitung: Streamen Sie das Ergebnis bei Erfolg sofort in privaten, selbst kontrollierten Speicher, erfassen Sie eine eigene Datei-ID und rufen Sie anschließend Purge auf, falls die Plattformkopie entfernt werden soll. Streamen Sie große Videos, statt sie im Speicher zu puffern, und machen Sie den Schreibvorgang am Ziel anhand von Task und Datei idempotent.
  • Einmalige Auslieferung: Kopieren Sie nichts. Zeigen Sie das Ergebnis, nennen Sie dem Kunden die Dauer der Verfügbarkeit und lassen Sie die Aufbewahrungsfrist oder einen kurzen X-Spicy-Retention es entfernen.

Eine vom Nutzer hochgeladene Referenz ist kein Marketingmaterial, und ein erfolgreiches Ergebnis bedeutet keine Einwilligung zur Veröffentlichung. Markieren Sie etwas erst als „vom Kunden gespeichert“, wenn Ihre eigene Kopie bestätigt ist.

Wenn etwas fehlschlägt

ÜbergangSymptomRichtige Wiederherstellung
Task erstellenAntwort verlorenDen gespeicherten Anfrageinhalt mit demselben Idempotenzschlüssel innerhalb des 24-stündigen Deduplizierungsfensters erneut senden; zur Abstimmung stoppen, wenn dieses Fenster abgelaufen sein könnte. Ein neuer Schlüssel kann einen zweiten Task samt Kosten erzeugen
CallbackDoppelt, verspätet oder ausgebliebenAnhand von request_id deduplizieren; recordInfo abfragen, wenn ein erwartetes Abschlussereignis nie eintrifft
ErgebniskopieLink vor einem eingereihten Abruf oder einer erneuten Verbindung abgelaufenFrische URL abrufen und erneut auf denselben Zielschlüssel streamen
Nach Fristablauf410 oder unavailableZuerst das verifizierte Archiv prüfen; als nicht verfügbar markieren, wenn keine gespeicherte Kopie bleibt

Logs nützlich halten, ohne kreative Inhalte aufzubewahren

Prüfen Sie folgende Stellen auf versehentliche Kopien:

  • Fehlerberichte und Zugriffslogs: Prompts, Tickets und signierte Links schwärzen; Inhalte von Medienrouten nicht protokollieren.
  • Analysen und Warteschlangen: Undurchsichtige Vorgangs-, Task- und Datei-IDs statt URLs oder Dateinamen verwenden, auch im Speicher für nicht zustellbare Nachrichten.
  • Support-Exporte und öffentliche Auslieferung: Screenshots, Seitenmetadaten und E-Mails prüfen. Kunden auf eine authentifizierte Seite verweisen, die nach einer Zugriffsprüfung einen frischen Link ausstellt.
  • Eigener Speicher und Backups: Eigene Löschrichtlinie anwenden. Ein abgelaufener Link kann eine bereits heruntergeladene Datei nicht zurückrufen.

Was Aufbewahrungseinstellungen nicht versprechen können

  • Das Modell sieht den Prompt. Das Modell, das eine Anfrage ausführt, erhält ihn im Klartext. SpicyAPIs Einstellungen regeln daher nur, wie lange SpicyAPI selbst etwas aufbewahrt. Senden Sie kein unnötiges Material.
  • Purge ist eine asynchrone Löschanfrage. Bestätigen Sie den zurückgegebenen Inhaltsstatus und den Abschluss der Medienlöschung. Speicherbereinigung und Backup-Rotation haben eigene Fristen; Ihre eigenen Dateikopien und Backups benötigen ebenfalls eigene Löschvorgänge. Abrechnungsdatensätze bleiben in jedem Fall.

Wenn Sie eine andere Aufbewahrungsfrist vertraglich benötigen, sprechen Sie dies vor der Unterzeichnung an, statt es aus einer Dokumentationsseite abzuleiten.

Häufige Fragen

Kann ich eine temporäre Upload-URL als Bild-URL in einer Generierungsanfrage verwenden?

Nein. Die Upload-URL autorisiert nur das direkte Schreiben. Laden Sie hoch, bestätigen Sie den Upload und setzen Sie die bestätigte spicy://-URI in ein Feld, das das aktuelle Modellschema als Upload-Feld ausweist.

Kann ich ein generiertes Video länger als 14 Tage bei SpicyAPI behalten?

Für API-, SDK- und Playground-Ergebnisse nicht: Ihre Obergrenze beträgt etwa 14 Tage. Studio-Kurzfilmmedien haben eine separate Obergrenze von etwa 60 Tagen. Kopieren Sie die Datei nach Erfolg für längeren Zugriff in Ihren eigenen Speicher.

Erstattet Purge den Task?

Nein. Purge entfernt nur Inhalte; die Kosten und der Task-Datensatz bleiben.

Kann ein Webhook Polling vollständig ersetzen?

Er kann der Hauptweg sein, mit einer begrenzten Abgleichprüfung für ausgebliebene Zustellungen. Verwenden Sie die Zustellungs-request_id und die Task-ID als Schlüssel Ihres Handlers.

Vermeiden Sie das. E-Mails werden weitergeleitet und lange nach Ablauf eines kurzlebigen Links archiviert. Verweisen Sie Kunden auf eine authentifizierte Seite, die den Zugriff prüft und einen frischen Link ausstellt.

Was sollte geschehen, wenn ein Kunde ein gespeichertes Ergebnis löscht?

Löschen oder widerrufen Sie Ihre eigene Kopie und deren Auslieferungsweg und dokumentieren Sie dies. Die Plattformkopie folgt ihrem eigenen Zeitplan; verwenden Sie Destroy outputs, wenn sie früher entfernt werden soll.

Einen vorhandenen Task per Code prüfen

Installieren Sie spicyapi, setzen Sie SPICY_API_KEY und TASK_ID und führen Sie diese schreibgeschützte Prüfung aus. Sie erstellt keine Generierung und löscht keine Inhalte.

python
import json
import os
from spicyapi import SpicyClient

client = SpicyClient()
task = client.get_task(os.environ["TASK_ID"])
print(json.dumps({"taskId": task["taskId"], "state": task["state"],
    "contentState": task.get("contentState"), "retention": task.get("retention"),
    "mediaDeletionPending": task.get("mediaDeletionPending")}, indent=2))

Die Aufbewahrungsreferenz beschreibt Anfrageeinstellungen und Löschvertrag.

Den Aufruf einem Agent überlassen

Delegieren Sie eine Speicherprüfung, wenn Sie bereits eine Task-ID haben; eine neue Generierung ist nicht nötig.

  • CLI: npx @spicyapi/cli tasks get "$TASK_ID" liest die aktuellen Fristen. Siehe CLI-Anleitung.
  • MCP: Bitten Sie spicyapi_task_get, diesen Task zu prüfen. Verwenden Sie spicyapi_task_purge nur, nachdem Sie die Vernichtung seines Inhalts ausdrücklich genehmigt haben; die MCP-Anleitung erklärt die Bestätigung.
  • Skill: Nach npx skills add spicyapi-ai/spicy-skill bitten Sie $spicyapi, die Aufbewahrung des Tasks zu prüfen und zu erklären, was abläuft. Siehe Skill-Anleitung.

Auch in English · 日本語 · 한국어 · Français · Español · Português (Brasil) · Русский · Italiano · Polski

Selbst ausprobieren

Sie zahlen nur für das, was Sie ausführen – ohne Tarif, ohne Abo.

Erstellt mit MiniMax H3 · ByteDance Seedance 2.0 Fast