Kommandozeilen-Tool (CLI)
Mit dem Befehl spicyapi durchsuchen Sie Modelle, prüfen Preise, generieren Bilder und Videos und laden die Ergebnisse im Terminal herunter, ohne Code zu schreiben.
Was die CLI ist
spicyapi ist ein kleines Programm, das Sie in einem Terminal ausführen, also in dem Fenster, in das Sie Befehle tippen, statt Schaltflächen anzuklicken. Jeder Befehl erledigt genau eine Aufgabe: die Modelle auflisten, die Ihr Konto nutzen kann, Ihnen sagen, was eine Generierung kosten wird, eine Bild- oder Videogenerierung starten, auf ihren Abschluss warten und Ihnen einen Link zum Herunterladen des Ergebnisses geben.
Code schreiben Sie dabei nicht. Sie tippen einen Befehl, drücken die Eingabetaste und lesen die Antwort.
Die CLI ist die richtige Wahl, wenn Sie:
- Modelle ausprobieren und Preise vergleichen möchten, bevor jemand eine Integration schreibt;
- Bilder oder Videos auf Ihrem eigenen Computer generieren und die Dateien speichern möchten;
- dieselbe Art von Generierung wiederholen möchten, ohne sich jedes Mal durch eine Seite zu klicken;
- die genauen Einstellungen eines Modells prüfen möchten, bevor Sie etwas darauf aufbauen.
Die CLI deckt die Bild- und Videogenerierung ab. Text- und Chatmodelle rufen Sie über die chat-kompatiblen Endpunkte auf, die unter Text und Streaming beschrieben sind.
Es gibt drei weitere offizielle Werkzeuge. Nehmen Sie die CLI, wenn Sie Befehle selbst eintippen möchten:
| Werkzeug | Die richtige Wahl, wenn |
|---|---|
| SDK | Sie ein JavaScript- oder TypeScript-Programm schreiben, das SpicyAPI aufruft |
| MCP-Server | ein KI-Coding-Assistent genau diese Schritte für Sie ausführen soll |
| Agent Skill | Sie einem KI-Agenten beibringen möchten, SpicyAPI auf die sichere Art zu nutzen |
Sie schreiben in einer anderen Sprache? Auch für Python, Go, PHP und Java gibt es offizielle SDKs.
Auf dieser Seite gibt nichts versehentlich Geld aus
Nur zwei Befehle können Geld kosten: tasks create und tasks retry. Beide halten an und fragen Sie, bevor irgendetwas berechnet wird. Alle anderen Befehle sind kostenlos und dürfen so oft laufen, wie Sie möchten.
Was Sie tun können
| Ich möchte … | Befehl | Kostet Geld? | Braucht einen API-Schlüssel? |
|---|---|---|---|
| Prüfen, ob SpicyAPI erreichbar ist | spicyapi status | Nein | Nein |
| Diese Dokumentation durchsuchen | spicyapi docs search <words> | Nein | Nein |
| Sehen, welche Modelle ich nutzen kann, und ihre Preise | spicyapi models list | Nein | Ja |
| Sehen, welche Einstellungen ein Modell annimmt | spicyapi models get <model> | Nein | Ja |
| Mein Guthaben abfragen | spicyapi balance | Nein | Ja |
| Sehen, wie viel ein Schlüssel ausgegeben hat | spicyapi usage | Nein | Ja |
| Den genauen Preis einer Generierung erfahren, ohne sie zu starten | spicyapi tasks quote | Nein | Ja |
| Eine Bild- oder Videogenerierung starten | spicyapi tasks create | Ja, nach Rückfrage | Ja |
| Warten, bis eine Generierung fertig ist | spicyapi tasks wait <task-id> | Nein | Ja |
| Eine Generierung und ihre Ergebnislinks ansehen | spicyapi tasks get <task-id> | Nein | Ja |
| Meine letzten Generierungen auflisten | spicyapi tasks list | Nein | Ja |
| Eine fehlgeschlagene Generierung erneut ausführen | spicyapi tasks retry <task-id> | Ja, nach Rückfrage | Ja |
| Die Dateien und den Prompt einer Generierung endgültig löschen | spicyapi tasks purge <task-id> | Nein, und es wird nichts erstattet | Ja |
| Ein Bild, ein Video oder eine Audiodatei als Eingabe hochladen | spicyapi files upload <path> | Nein | Ja |
| Einen frischen Download-Link für ein Ergebnis erhalten | spicyapi files download-url <task-id> | Nein | Ja |
| Prüfen, ob ein Callback wirklich von SpicyAPI stammt | spicyapi webhooks verify | Nein | Nein, er verwendet Ihren Webhook-Signaturschlüssel |
Ein Wort in spitzen Klammern wie <task-id> bedeutet in den Befehlen oben: „Hier Ihren eigenen Wert einsetzen“, und zwar ohne die Klammern.
Bevor Sie beginnen
Sie brauchen vier Dinge: ein Terminal, Node.js, einen API-Schlüssel und eine Möglichkeit, die CLI auszuführen. Beim ersten Mal dauert das etwa zehn Minuten.
Ein Terminal öffnen
Ein Terminal ist ein Textfenster, in dem Sie Befehle ausführen. Alles auf dieser Seite wird dort eingetippt oder eingefügt und dann mit der Eingabetaste ausgeführt.
Drücken Sie Cmd + Leertaste, tippen Sie Terminal und drücken Sie die Eingabetaste. Es öffnet sich ein Fenster mit einer Zeile, die auf % oder $ endet: Dort tippen Sie. Einfügen können Sie mit Cmd + V.
Node.js 22.13 oder neuer installieren
Die CLI läuft unter Node.js, einem kostenlosen Programm. Prüfen Sie, ob es schon installiert ist:
node -vGibt der Befehl v22.13.0 oder eine höhere Nummer aus, etwa v22.14.0 oder v24.4.1, sind Sie startklar. Gibt er eine niedrigere Nummer aus oder meldet er command not found bzw. is not recognized:
- Gehen Sie auf nodejs.org, öffnen Sie die Download-Seite und wählen Sie die LTS-Version für Ihr System.
- Führen Sie das Installationsprogramm aus und übernehmen Sie die Standardoptionen.
- Schließen Sie das Terminal und öffnen Sie ein neues, dann führen Sie
node -vnoch einmal aus.
Node.js bringt npm und npx mit, die beiden Hilfsprogramme, die im letzten Schritt zum Einsatz kommen.
Einen API-Schlüssel anlegen
Am API-Schlüssel erkennt SpicyAPI, dass eine Anfrage von Ihrem Konto kommt.
- Legen Sie unter spicyapi.ai/register ein Konto an. Konten werden unter Umständen in Etappen freigeschaltet; ist die Registrierung für Sie noch nicht offen, tragen Sie sich in die Warteliste ein.
- Laden Sie in der Konsole unter Abrechnung Guthaben auf. Generierungen werden in US-Dollar von Ihrem Guthaben bezahlt.
- Öffnen Sie API-Schlüssel und klicken Sie auf Schlüssel anlegen. Geben Sie dem Schlüssel einen Namen, den Sie später wiedererkennen, etwa
my laptop. Nur der Name ist Pflicht. - Kopieren Sie den Schlüssel sofort. Er beginnt mit
sk-spicy-und wird nur ein einziges Mal angezeigt. Alternativ können Sie Als Datei speichern verwenden.
Neue Schlüssel haben kein Ausgabenlimit, bis Sie eines festlegen. Ein Tageslimit sorgt dafür, dass ein Fehler oder ein geleakter Schlüssel keine hohe Rechnung verursachen kann, und Sie können es später auf derselben Seite ändern.
Behandeln Sie den Schlüssel wie ein Passwort
Wer Ihren Schlüssel hat, kann Ihr Guthaben ausgeben. Schicken Sie ihn nicht per Chat oder E-Mail, zeigen Sie ihn nicht auf einem Screenshot oder in einem Support-Ticket, und speichern Sie ihn nie in einem Projektordner, der in Git oder auf GitHub landet. Ist er geleakt, sperren Sie ihn auf der Seite API-Schlüssel und legen Sie einen neuen an.
Den Schlüssel in SPICY_API_KEY ablegen
Die CLI hat keinen Anmeldebefehl und nimmt den Schlüssel nie als Befehlsoption entgegen. Sie liest eine Umgebungsvariable namens SPICY_API_KEY: einen benannten Wert, den Ihr Terminal an die Programme weitergibt, die es startet.
Nur für das aktuelle Fenster (vergessen, sobald Sie das Fenster schließen):
export SPICY_API_KEY="sk-spicy-paste-your-key-here"Dauerhaft: Fügen Sie dieselbe export-Zeile ans Ende der Startdatei Ihrer Shell an; diese Datei wird bei jedem Öffnen eines Terminals ausgeführt. Unter macOS ist das ~/.zshrc, auf den meisten Linux-Systemen ~/.bashrc.
nano ~/.zshrcFügen Sie die export-Zeile ganz unten ein, drücken Sie zum Speichern Ctrl + O und dann die Eingabetaste, und zum Beenden Ctrl + X. Unter Linux verwenden Sie stattdessen nano ~/.bashrc. Öffnen Sie ein neues Terminalfenster, damit die Änderung wirkt.
Prüfen, ob die Variable gesetzt ist, ohne den ganzen Schlüssel auszugeben:
echo "${SPICY_API_KEY:0:9}"Ausgegeben werden sollte sk-spicy-.
Wo der Schlüssel liegen darf und wo nicht
Die Startdatei Ihrer Shell und Ihre Windows-Kontoeinstellungen bleiben auf diesem Computer; für die private Nutzung ist das in Ordnung. Legen Sie den Schlüssel nie in eine Datei innerhalb eines Projekts, committen Sie ihn nie und fügen Sie ihn nie in ein geteiltes Dokument ein. Terminals merken sich außerdem die Befehle, die Sie tippen. Auf einem gemeinsam genutzten Computer sind die Startdatei oder der Windows-Einstellungsdialog deshalb besser, als den Schlüssel in einen Befehl zu tippen.
Festlegen, wie Sie die CLI ausführen
Es gibt zwei Wege, und die Befehle sind bei beiden dieselben.
npx lädt die CLI bei Bedarf herunter und führt sie aus:
npx @spicyapi/cli statusBeim ersten Mal fragt npm Need to install the following packages: @spicyapi/cli@… Ok to proceed? (y). Drücken Sie y und die Eingabetaste.
Auf diesem Weg schreiben Sie überall npx @spicyapi/cli, wo auf dieser Seite spicyapi steht. Aus spicyapi models list wird zum Beispiel npx @spicyapi/cli models list.
Ihr erstes Ergebnis
Diese Anleitung generiert ein Bild und lädt es herunter. Jeder Schritt zeigt den Befehl, ungefähr das, was Sie sehen werden, und was dabei gerade passiert ist. Ihre Zahlen, IDs und Zeiten werden abweichen.
Ersetzen Sie MODEL_ID_FROM_CATALOG durch eine echte Modell-ID
MODEL_ID_FROM_CATALOG ist ein Platzhalter, kein Modell. Schritt 3 zeigt, wie Sie eine echte ID aus dem Live-Katalog auswählen (spicyapi models list, dieselbe Liste wie GET /api/v1/models). Setzen Sie Ihre ID überall dort ein, wo diese Seite den Platzhalter zeigt. Wer den Platzhalter selbst sendet, bekommt nur einen „not found“-Fehler zurück.
Die Verbindung prüfen
spicyapi statusSpicyAPI is reachable — api.spicyapi.ai answered in 523 ms.Was passiert ist: Die CLI hat SpicyAPI gefragt, ob der Dienst läuft. Dafür ist kein Schlüssel nötig, und es kostet nichts. Sehen Sie „could not be reached“, prüfen Sie Ihre Internetverbindung oder Ihren Proxy; siehe Fehlerbehebung.
Ihr Guthaben abfragen
spicyapi balanceavailable: 12.34
held: 0.06
total: 12.40Was passiert ist: Dies ist der erste Befehl, der Ihren Schlüssel verwendet. Beträge sind US-Dollar. available ist das, was Sie jetzt ausgeben können, held ist für Generierungen reserviert, die noch laufen, und total ist die Summe aus beidem. Möglicherweise sehen Sie außerdem eine Zeile funding, die das Guthaben in vorausbezahlte Mittel und Bonusguthaben aus Aktionen aufschlüsselt.
Sehen Sie Error: SPICY_API_KEY is required for authenticated API operations, ist der Schlüssel in diesem Terminalfenster nicht gesetzt. Die Zeile Next: darunter zeigt, wie Sie ihn setzen; siehe auch Bevor Sie beginnen.
Ein Modell auswählen
spicyapi models list --modality image --json{
"total": 1,
"items": [
{
"model": "MODEL_ID_FROM_CATALOG",
"displayName": "Example image model",
"modality": "image",
"tasks": ["text-to-image"],
"enabled": true,
"available": true,
"pricing": [
{ "variant": "", "unit": "per_image", "price": "0.03", "currency": "USD" }
]
}
]
}Dieses Beispiel ist gekürzt: Die echte Liste enthält mehr Modelle und mehr Felder.
Was passiert ist: Die CLI hat die Modelle abgerufen, die Ihr Konto heute aufrufen kann, und zwar mit Ihren Preisen. Wählen Sie eines, bei dem enabled und available beide true sind, und kopieren Sie seinen model-Wert, zum Beispiel indem Sie ihn mit der Maus markieren. Dieser Wert ist die Modell-ID. IDs haben die Form maker/model/task.
priceist in US-Dollar prounitangegeben:per_image,per_secondVideo,per_requestoderper_1k_tokens.- Mehrere Einträge unter
pricingbedeuten, dass der Preis von Ihren Einstellungen abhängt, etwa von der Auflösung. - Um ein Modell über seinen Namen zu finden, ergänzen Sie
--searchund einen Teil des Namens.
--json gibt die Liste als gut lesbares, eingerücktes JSON aus. Ohne diese Option wird die ganze Liste in eine einzige lange Zeile gequetscht.
Nachsehen, welche Einstellungen das Modell annimmt
spicyapi models get MODEL_ID_FROM_CATALOG --json{
"model": "MODEL_ID_FROM_CATALOG",
"enabled": true,
"available": true,
"inputSchema": {
"type": "object",
"required": ["prompt"],
"properties": {
"prompt": { "type": "string" },
"aspect_ratio": { "type": "string", "enum": ["1:1", "16:9", "9:16"] }
},
"additionalProperties": false
}
}Was passiert ist: inputSchema ist die Liste der Einstellungen des Modells; der Rest dieser Seite nennt sie die Eingabe.
requiredlistet die Einstellungen, die Sie senden müssen. Hier ist das nurprompt.propertieslistet jede Einstellung, die das Modell annimmt, und etwas anderes ist nicht erlaubt: Schon ein einziger unbekannter oder falsch geschriebener Name lässt die ganze Anfrage scheitern.enumlistet die einzigen Werte, die für diese Einstellung erlaubt sind.
Jedes Modell hat seine eigenen Einstellungen; lesen Sie sie deshalb immer für genau das Modell, das Sie ausgewählt haben. Fertige Eingaben, die der Server bereits geprüft hat, erhalten Sie mit spicyapi models list --search <name> --include-examples --json; sehen Sie dort unter examples nach.
Ihre Eingabe in eine Datei schreiben
Legen Sie die Eingabe in einer Datei namens input.json ab, und zwar in dem Ordner, in dem sich Ihr Terminal gerade befindet. Mit einer Datei vermeiden Sie Probleme mit Anführungszeichen, besonders unter Windows.
Fügen Sie alle drei Zeilen auf einmal ein:
cat > input.json <<'EOF'
{"prompt": "A paper lantern glowing on a rainy street at night, cinematic light"}
EOFWas passiert ist: Sie haben beschrieben, was generiert werden soll, und dabei die Namen der Einstellungen aus dem vorigen Schritt verwendet. Die Anführungszeichen müssen einfache gerade Anführungszeichen sein ("), keine typografischen.
Den Preis prüfen
spicyapi tasks quote --model MODEL_ID_FROM_CATALOG --input-file input.jsonquoteId: eyJ2IjoxLCJtIjoi…
model: MODEL_ID_FROM_CATALOG
estimatedCost: 0.03
maxCharge: 0.03
currency: USD
quantity: 1
unit: per_image
expiresAt: 2026-09-17T08:05:00ZWas passiert ist: SpicyAPI hat für genau diese Anfrage eine Kostenschätzung erstellt. Es wurde nichts gestartet und nichts berechnet. estimatedCost ist das, was die Generierung voraussichtlich kostet, und maxCharge das, was sie höchstens kosten kann. Dieser Schritt ist optional: Der nächste Befehl holt den Preis noch einmal ein und zeigt ihn Ihnen, bevor er Geld ausgibt.
Die Generierung starten und darauf warten
spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --waitDie CLI zeigt zuerst den Preis und bittet Sie um Bestätigung:
Estimated charge: USD 0.03; maximum charge: USD 0.03. Quote expires: 2026-09-17T08:05:00Z.
Idempotency-Key: 4f6755a5-0d72-4420-9f6b-9faf0e2b0241
Create a billable task with model MODEL_ID_FROM_CATALOG? Estimated charge: USD 0.03; maximum charge: USD 0.03. Quote expires: 2026-09-17T08:05:00Z. Idempotency-Key: 4f6755a5-0d72-4420-9f6b-9faf0e2b0241. Continue? [y/N]Tippen Sie y und drücken Sie die Eingabetaste. Jede andere Antwort bricht ab, und es wird nichts berechnet. Antworten Sie innerhalb von fünf Minuten, bevor die Kostenschätzung abläuft.
Sobald SpicyAPI den Auftrag annimmt, gibt die CLI seine Task-ID aus:
Accepted: job_01k3m8x9q2z4v7n5p6r8s0t1w3
If waiting is interrupted: spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3Bilder brauchen meist Sekunden, Videos Minuten. Ist die Generierung fertig, erscheint das Ergebnis:
idempotencyKey: 4f6755a5-0d72-4420-9f6b-9faf0e2b0241
accepted: {"taskId":"job_01k3m8x9q2z4v7n5p6r8s0t1w3","state":"queued","estimatedCost":"0.03","deadlineAt":"2026-09-17T08:30:00Z"}
task: {"taskId":"job_01k3m8x9q2z4v7n5p6r8s0t1w3","model":"MODEL_ID_FROM_CATALOG","state":"succeeded","output":{"assets":[{"key":"tasks/…/result.png","url":"https://…","expiresAt":"2026-09-17T08:20:00Z","mime":"image/png","width":1024,"height":1024}]},"cost":"0.03","settled":true,…}Was passiert ist: Nach Ihrem y hat SpicyAPI die Generierung angenommen, die ab diesem Moment Task heißt, und den geschätzten Betrag in Ihrem Guthaben reserviert. Danach hat die CLI alle paar Sekunden beim Task nachgefragt, bis er fertig war. Suchen Sie in der letzten Zeile nach "state":"succeeded" und nach der "url" innerhalb von output. cost ist die endgültige Belastung, sobald settled gleich true ist. Ergänzen Sie den Befehl um --json, wenn Sie das Ergebnis lieber übersichtlich auf mehrere Zeilen verteilt sehen möchten.
Das Fenster zu schließen bricht den Task nicht ab
Ist ein Task einmal angenommen, läuft er immer bis zum Ende und wird normal berechnet. Strg + C oder das Schließen des Terminals beendet nur das Warten. Bewahren Sie die Task-ID auf und nehmen Sie den Task mit spicyapi tasks wait <task-id> wieder auf; siehe Einen Task nach unterbrochenem Warten wieder aufnehmen.
Das Ergebnis herunterladen
Die url ist ein direkter Download-Link, der etwa 20 Minuten lang funktioniert und keinen Schlüssel braucht. Fügen Sie ihn in einen Browser ein und speichern Sie die Datei, oder laden Sie sie im Terminal herunter (lassen Sie die Anführungszeichen stehen, denn der Link enthält &-Zeichen):
curl -L -o result.png "PASTE_THE_URL_HERE"Verwenden Sie die Dateiendung, die zu mime passt: .png für image/png, .jpg für image/jpeg, .mp4 für video/mp4.
Ist der Link abgelaufen, holen Sie sich mit spicyapi files download-url <task-id> einen neuen, oder führen Sie spicyapi tasks get <task-id> aus, das ebenfalls frische Links liefert.
Was passiert ist: Sie haben das Ergebnis auf Ihren eigenen Computer kopiert. Erledigen Sie das bald: SpicyAPI bewahrt generierte Dateien höchstens etwa 14 Tage auf (kürzer, wenn Ihr Konto auf eine kürzere Frist eingestellt ist) und löscht sie danach endgültig. Siehe Datenaufbewahrung und Löschung.
So lesen Sie die Ausgabe
- Die normale Ausgabe zeigt pro Zeile ein
name: value. Werte, die aus mehreren Teilen bestehen, etwaoutputoderretention, erscheinen als JSON in einer einzigen Zeile. --jsongibt die vollständige Antwort als eingerücktes JSON aus. Die Option funktioniert bei jedem Befehl, vor oder nach dem Befehlsnamen:spicyapi --json balanceundspicyapi balance --jsonbewirken dasselbe.- Ergebnisse gehen in die normale Ausgabe, Meldungen in die Fehlerausgabe. Preise, der Idempotenzschlüssel, die
Accepted:-Zeilen und Fehler sind Meldungen. Deshalb speichertspicyapi --json tasks get <task-id> > task.jsonnur das Ergebnis intask.json, während die Meldungen weiterhin auf dem Bildschirm erscheinen. - Fehler sehen aus wie
Error: <what went wrong> (request req_…), meist gefolgt von einer ZeileNext:, die sagt, was zu tun ist. Mit--jsonist ein Fehler ein einzeiliges JSON-Objekt miterror,type,status,codeundrequestId, ohneNext:-Zeile. Ist kein Schlüssel gesetzt, lautettypeMissingApiKeyError. Nennen Sie den Wertreq_…, wenn Sie sich an den Support wenden. - Geldbeträge sind US-Dollar, geschrieben als reiner Text ohne
$-Zeichen, etwa0.03. - Zeitangaben sind in UTC. Das
Zam Ende von2026-09-17T08:05:00Zsteht für UTC. - Der Exit-Status ist
0, wenn ein Befehl erfolgreich war, und ungleich0, wenn er fehlgeschlagen ist; Skripte können das auswerten.
Befehlsreferenz
Jeder Befehl hat außerdem eine eingebaute Hilfe: Ergänzen Sie --help, zum Beispiel spicyapi tasks create --help.
Globale Optionen und Umgebungsvariablen
Diese Optionen funktionieren bei jedem Befehl.
| Option | Was sie tut | Standard | Pflicht |
|---|---|---|---|
--json | Das vollständige Ergebnis als JSON ausgeben | Aus | Nein |
--timeout-ms <milliseconds> | Wie lange auf eine einzelne Antwort von SpicyAPI gewartet wird, bevor aufgegeben wird, von 1 bis 120000 | 30000 (30 Sekunden) | Nein |
--max-retries <count> | Wie oft nach einem Netzwerkfehler, 429 oder einem Serverfehler automatisch neu versucht wird, und zwar nur bei Anfragen, die sich gefahrlos wiederholen lassen, von 0 bis 5 | 2 | Nein |
--api-base-url <url> | API-Anfragen an eine andere Adresse senden. Das brauchen Sie normalerweise nie | https://api.spicyapi.ai/api/v1 | Nein |
--service-base-url <url> | Die Adresse, die status prüft. Das brauchen Sie normalerweise nie | https://api.spicyapi.ai | Nein |
-V, --version | Die Version der CLI ausgeben | — | Nein |
-h, --help | Die Hilfe zum Befehl anzeigen | — | Nein |
| Umgebungsvariable | Wofür sie da ist |
|---|---|
SPICY_API_KEY | Ihr API-Schlüssel. Jeder Befehl außer status, docs search und webhooks verify braucht ihn |
SPICY_WEBHOOK_SECRET | Ihr Webhook-Signaturschlüssel, gelesen von webhooks verify |
SPICY_API_BASE_URL, SPICY_SERVICE_BASE_URL | Entsprechen den beiden Adressoptionen oben. Adressen müssen https:// verwenden |
status
Was er tut: prüft, ob SpicyAPI läuft und von Ihrem Computer aus erreichbar ist.
spicyapi statusKeine Optionen. Kein Schlüssel nötig. Kostenlos.
Ausgabe: ein Satz. SpicyAPI is reachable — … answered in … ms. bedeutet, dass alles in Ordnung ist. could not be reached bedeutet, dass Ihr Computer keine Antwort bekommen hat: Prüfen Sie Ihr Netzwerk oder Ihren Proxy. is not healthy oder reports it is not ready weist auf ein Problem auf unserer Seite hin; aktuelle Störungen stehen auf status.spicyapi.ai.
Mit --json sehen Sie die einzelnen Prüfungen im Rohformat. Entscheidend ist operational: true; ein Eintrag readiness mit dem Status 404 ist an der öffentlichen Adresse normal.
docs search
Was er tut: findet die Dokumentationsseite zu einem Thema. Er durchsucht einen kleinen Index, der in die CLI eingebaut ist, und funktioniert deshalb ohne Schlüssel und ohne SpicyAPI aufzurufen. Jedes Ergebnis verlinkt auf die passende Seite dieser Dokumentation unter docs.spicyapi.ai.
spicyapi docs search [words] [--limit <count>]| Argument oder Option | Was es tut | Standard | Pflicht |
|---|---|---|---|
words | Die Wörter, nach denen gesucht wird. Lassen Sie sie weg, um Seiten aufzulisten | Leer | Nein |
--limit <count> | Höchstzahl an Ergebnissen, von 1 bis 25 | 10 | Nein |
spicyapi docs search retentionslug: retention
title: Retention and destruction
summary: What the platform caps are, how far down you can dial them, how to destroy a task's content, and what we cannot promise.
keywords: ["privacy","delete","storage","retention","per-request retention","purge","destroy"]
url: https://docs.spicyapi.ai/docs/retentionGibt es mehrere Ergebnisse, erscheinen sie nacheinander, und jedes beginnt mit slug:. Passt nichts, meldet der Befehl das und beendet sich trotzdem mit dem Status 0:
No documentation matched "refnd". Try fewer or different words, or run `spicyapi docs search` without words to browse pages.Mit --json ergibt eine Suche ohne Treffer eine leere Liste, []. Kostenlos.
models list
Was er tut: listet die Modelle, die Ihr Konto heute aufrufen kann, mit den Preisen, die Ihr Konto zahlt.
spicyapi models list [options]| Option | Was sie tut | Standard | Pflicht |
|---|---|---|---|
--modality <type> | Nur Modelle vom Typ image, video oder text. Die Option akzeptiert auch audio, derzeit werden aber keine Audiomodelle angeboten | Alle | Nein |
--task <task> | Nur eine Art von Auftrag, etwa text-to-image, edit, image-to-video, text-to-video oder reference-to-video | Alle | Nein |
--provider <name> | Nur Modelle eines Modellherstellers, also des Unternehmens oder Labors, das das Modell entwickelt hat. Muss exakt mit dem Wert provider übereinstimmen | Alle | Nein |
--search <text> | Nur Modelle, deren ID oder Anzeigename diesen Text enthält; Groß- und Kleinschreibung spielen keine Rolle | Keiner | Nein |
--include-schema | Die vollständigen Einstellungen jedes Modells (inputSchema) hinzufügen. Macht die Ausgabe deutlich größer | Aus | Nein |
--include-examples | Fertige Beispieleingaben hinzufügen, die der Server bereits geprüft hat (examples) | Aus | Nein |
spicyapi models list --modality video --task image-to-video --jsonAusgabe: total und items. Verwenden Sie --json, denn ohne diese Option landen alle Einträge in einer Zeile. Die nützlichsten Felder jedes Eintrags:
| Feld | Bedeutung |
|---|---|
model | Die Modell-ID, die Sie in anderen Befehlen verwenden |
displayName, provider, modality, tasks | Name, Modellhersteller, Art der Ausgabe und Art des Auftrags |
enabled, available | Verwenden Sie Modelle, bei denen beide true sind |
pricing | Ein Eintrag pro Preisstufe: variant (zum Beispiel eine Auflösung), unit, price in USD, dazu regularPrice und offerLabel, wenn ein Rabatt gilt |
taskTimeoutSeconds | Wie lange eine Generierung laufen darf, bevor sie als expired endet |
maxOutputDurationSeconds | Die längste Videodauer, die dieses Modell erlaubt, sofern es eine Grenze gibt |
Kostenlos. Der Abruf der Modellliste zählt gegen das Rate Limit Ihres Kontos; Sie müssen ihn also nicht vor jeder Generierung ausführen.
models get
Was er tut: zeigt ein einzelnes Modell vollständig an, einschließlich der Einstellungen, die es annimmt.
spicyapi models get <model>| Argument | Was es tut | Standard | Pflicht |
|---|---|---|---|
model | Die exakte Modell-ID. Die Schrägstriche darin können bleiben, wie sie sind | — | Ja |
spicyapi models get MODEL_ID_FROM_CATALOG --jsonAusgabe: dieselben Felder wie bei models list, dazu inputSchema. Lesen Sie in inputSchema die Einträge required (Einstellungen, die Sie senden müssen), properties (jede erlaubte Einstellung mit ihrem Typ), enum (die einzigen erlaubten Werte), minimum und maximum (Grenzen für Zahlen) sowie default (wird verwendet, wenn Sie die Einstellung weglassen). Einträge namens x-ui sind Hinweise für den Bau von Formularen; Sie können sie ignorieren. Kostenlos.
balance
Was er tut: zeigt, wie viel Geld auf Ihrem Konto verfügbar ist.
spicyapi balanceKeine Optionen. Kostenlos.
Ausgabe: available (was Sie jetzt ausgeben können), held (für noch laufende Tasks reserviert) und total, alles in US-Dollar. Möglicherweise ist außerdem funding enthalten, das das Guthaben in vorausbezahlte Mittel und Bonusguthaben aus Aktionen aufteilt, samt der Angabe, wann Bonusguthaben verfallen und für welche Modelle sie gelten. Sie müssen das Guthaben nicht vor jeder Generierung prüfen: Das übernimmt tasks create für Sie.
usage
Was er tut: zeigt, wie viele Generierungen der aktuelle API-Schlüssel ausgeführt hat und was sie gekostet haben, gruppiert nach Tag und nach Modell.
spicyapi usage [--from <date>] [--to <date>]| Option | Was sie tut | Standard | Pflicht |
|---|---|---|---|
--from <date> | Der erste einbezogene Tag, als YYYY-MM-DD in UTC | Die letzten sieben Tage, einschließlich heute | Nein |
--to <date> | Der Tag nach dem letzten einbezogenen Tag, als YYYY-MM-DD in UTC. Der Zeitraum darf höchstens 92 Tage umfassen | Die letzten sieben Tage, einschließlich heute | Nein |
spicyapi usage --from 2026-09-01 --to 2026-10-01Das deckt den ganzen September ab: --to ist der erste Tag, der nicht mehr dazugehört. Lassen Sie beide Optionen weg, sehen Sie die letzten sieben Tage einschließlich heute.
Ausgabe: from, to, currency, totalCalls, totalSpend, dann days (pro Tag: calls, succeeded, failed, spend) und models (dieselben Zahlen pro Modell). totalSpend zählt nur endgültige Belastungen. days und models beschreiben dieselben Tasks auf zwei Arten; addieren Sie sie also nicht. Für Ihr gesamtes Konto statt nur für einen Schlüssel verwenden Sie in der Konsole die Seite Verbrauch.
Kostenlos. Der Befehl ist auf 30 Aufrufe pro Minute begrenzt; nutzen Sie ihn also, um Summen zu prüfen, nicht in einer Schleife.
tasks quote
Was er tut: sagt Ihnen genau, was eine Generierung kosten würde, ohne sie zu starten und ohne Geld zu reservieren.
spicyapi tasks quote --model <model> --input-file <path>| Option | Was sie tut | Standard | Pflicht |
|---|---|---|---|
--model <model> | Die exakte Modell-ID | — | Ja |
--input-file <path> | Die Eingabe aus einer JSON-Datei lesen. Mit - wird sie aus dem gelesen, was per Pipe an den Befehl übergeben wird | — | Diese Option oder --input-json |
--input-json <json> | Die Eingabe direkt als JSON-Text angeben. Mit --input-file haben Sie weniger Ärger mit Anführungszeichen | — | Diese Option oder --input-file |
--callback-url <url> | Die Callback-Adresse, die Sie verwenden wollen, denn sie gehört zu der Anfrage, deren Preis ermittelt wird | Keine | Nein |
Ausgabe: quoteId, model, estimatedCost, maxCharge, currency, quantity (zum Beispiel die Anzahl der berechneten Sekunden), unit und expiresAt. Eine Kostenschätzung gilt fünf Minuten.
Kostenlos und ohne Bestätigung. Nutzen Sie den Befehl, um Modelle oder Einstellungen zu vergleichen. Vor tasks create müssen Sie ihn nicht ausführen, denn dieser Befehl holt eine eigene Kostenschätzung ein.
tasks create
Was er tut: startet eine Bild- oder Videogenerierung. Das kostet Geld. Die CLI zeigt immer zuerst den Preis und fragt nach.
spicyapi tasks create --model <model> --input-file <path> [options]| Option | Was sie tut | Standard | Pflicht |
|---|---|---|---|
--model <model> | Die exakte Modell-ID | — | Ja |
--input-file <path> | Die Eingabe aus einer JSON-Datei lesen. - liest sie aus dem, was per Pipe an den Befehl übergeben wird; dann ist zusätzlich --yes nötig | — | Diese Option oder --input-json |
--input-json <json> | Die Eingabe direkt als JSON-Text angeben | — | Diese Option oder --input-file |
--wait | Warten, bis der Task fertig ist, und dann das Ergebnis ausgeben | Aus: Task-ID ausgeben und zurückkehren | Nein |
--yes | Die Bestätigungsfrage überspringen. Nur verwenden, wenn Sie den Preis kennen, typischerweise in Skripten | Aus: nachfragen | Nein |
--idempotency-key <key> | Ein Name für „genau diese eine Generierung“. Führen Sie den Befehl innerhalb von 24 Stunden mit demselben Idempotenzschlüssel erneut aus, erhalten Sie denselben Task statt eines neuen. Bis zu 128 Zeichen | Bei jedem Lauf ein neuer zufälliger Idempotenzschlüssel | Nein |
--retention <duration> | Die generierten Medien, die Ergebnisdaten, den Prompt und andere Eingabetexte dieses Tasks früher als üblich löschen: 30m, 1h, 7d oder eine Anzahl Sekunden. Die Frist lässt sich nur verkürzen. 0 löscht alles davon, sobald der Task fertig ist. Abrechnungsdatensätze bleiben immer erhalten | Ihre Kontoeinstellung | Nein |
--callback-url <url> | Eine öffentliche Adresse, die mit https:// beginnt und die SpicyAPI aufruft, wenn der Task fertig ist. Reines http://, localhost und Adressen aus privaten Netzen werden abgelehnt. Nur sinnvoll, wenn Sie einen Server betreiben; siehe Webhooks | Keine | Nein |
--poll-interval-ms <milliseconds> | Mit --wait: im Abstand von so vielen Millisekunden nachfragen, von 100 bis 60000 | Beginnt bei 2 Sekunden und wird bis auf 10 Sekunden langsamer | Nein |
--wait-timeout-ms <milliseconds> | Mit --wait: nach dieser Zeit aufhören zu warten, von 1 bis 86400000. Der Task läuft weiter | 600000 (10 Minuten) | Nein |
Was nacheinander passiert:
- Die CLI liest Ihre Eingabe und prüft, ob sie ein JSON-Objekt ist. Haben Sie keine Eingabe angegeben, bricht sie hier ab.
- Kann niemand eine Rückfrage beantworten, zum Beispiel in einem Skript, und haben Sie
--yesnicht angegeben, bricht sie hier ab. - Sie holt eine Kostenschätzung ein und gibt die geschätzte Belastung, die Höchstbelastung, den Ablaufzeitpunkt der Kostenschätzung und den Idempotenzschlüssel aus.
- Sie fragt
Continue? [y/N]. Nuryoderyessetzt fort. Die Voreinstellung ist nein. - Sie erstellt den Task zum geschätzten Preis. Der geschätzte Betrag wird in Ihrem Guthaben reserviert, und dieser Betrag ist zugleich das Höchste, was der Task kosten kann.
- Ohne
--waitgibt sieidempotencyKey,taskId,state(queued),estimatedCostunddeadlineAtaus und kehrt zurück. Mit--waitgibt sie sofortAccepted: <task-id>und einen Befehl zur Wiederaufnahme aus, wartet und gibt dannidempotencyKey,acceptedund den fertigentaskaus.
deadlineAt ist der späteste Zeitpunkt, zu dem der Task fertig werden kann, bevor er als expired endet. Es ist nicht der Zeitpunkt, zu dem Ihr Download-Link oder Ihre Dateien ablaufen.
spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --waitUnter macOS und Linux können Sie die Eingabe auch direkt in den Befehl schreiben:
spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-json '{"prompt": "A paper lantern on a rainy street"}'Scheitert das Warten, läuft der Task trotzdem weiter
Das Warten kann vorzeitig enden: durch das Zeitlimit, ein Netzwerkproblem oder Strg + C. Der Task selbst läuft weiter und wird normal berechnet. Die Accepted:-Zeile vom Anfang enthält seine ID; machen Sie mit spicyapi tasks wait <task-id> weiter. Führen Sie nicht einfach denselben create-Befehl ohne --idempotency-key noch einmal aus: Das startet eine zweite Generierung und berechnet sie auch.
Endet das Warten mit einem Fehler (und nicht mit Strg + C), wiederholen die letzten Zeilen alles, was Sie brauchen, sodass Sie nicht zur Accepted:-Zeile zurückscrollen müssen:
Error: task job_01k3m8x9q2z4v7n5p6r8s0t1w3 did not reach a terminal state within 600000ms
Task job_01k3m8x9q2z4v7n5p6r8s0t1w3 was accepted and may still be running; only the wait stopped.
Recover: spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3
To replay the same request without creating a second task, reuse --idempotency-key 4f6755a5-0d72-4420-9f6b-9faf0e2b0241.War es ein Fehler mit bekannter Lösung, etwa 429 oder ein Serverfehler, folgt eine Zeile Next:. Mit --json stehen dieselben Angaben im Fehlerobjekt als taskId, idempotencyKey und recover.
tasks wait
Was er tut: wartet auf einen Task, den Sie bereits gestartet haben, bis er fertig ist.
spicyapi tasks wait <task-id> [options]| Argument oder Option | Was es tut | Standard | Pflicht |
|---|---|---|---|
task-id | Die Task-ID, etwa job_01k3m8x9q2z4v7n5p6r8s0t1w3 | — | Ja |
--poll-interval-ms <milliseconds> | Im Abstand von so vielen Millisekunden nachfragen, von 100 bis 60000 | Beginnt bei 2 Sekunden und wird bis auf 10 Sekunden langsamer | Nein |
--wait-timeout-ms <milliseconds> | Nach dieser Zeit aufhören zu warten, von 1 bis 86400000 | 600000 (10 Minuten) | Nein |
spicyapi tasks wait job_01k3m8x9q2z4v7n5p6r8s0t1w3 --wait-timeout-ms 1800000Ausgabe: der fertige Task mit denselben Feldern wie bei tasks get, sobald sein Status succeeded, failed oder expired ist. War der Task erfolgreich, werden seine Dateien aber noch kopiert, wartet der Befehl noch ein wenig länger.
Läuft das Zeitlimit ab, sehen Sie Error: task … did not reach a terminal state within 600000ms. Das ist kein Fehlschlag: Der Task läuft noch. Warten Sie erneut, bei Bedarf mit einem längeren --wait-timeout-ms. Das Warten zu beenden bricht nie einen Task ab. Kostenlos.
tasks get
Was er tut: zeigt einen Task, wie er gerade ist: Status, Kosten, Ergebnislinks und wann seine Inhalte gelöscht werden.
spicyapi tasks get <task-id>| Argument | Was es tut | Standard | Pflicht |
|---|---|---|---|
task-id | Die Task-ID | — | Ja |
Verwenden Sie denselben API-Schlüssel, mit dem der Task erstellt wurde: Mit einem anderen Schlüssel erhalten Sie „not found“.
Ausgabefelder:
| Feld | Bedeutung |
|---|---|
state | queued (wartet auf den Start), running, succeeded, failed oder expired (Frist abgelaufen). Ältere Tasks können auch canceled zeigen |
output.assets | Die Ergebnisse. Jedes hat eine url (einen Download-Link, der etwa 20 Minuten gilt), expiresAt (wann dieser Link aufhört zu funktionieren), mime (den Dateityp), Angaben zur Größe und einen key. pending: true bedeutet, dass die Datei noch kopiert wird; versuchen Sie es in ein paar Sekunden erneut. unavailable: true bedeutet, dass sie sich nicht wiederherstellen lässt |
errorCode, errorMessage | Warum der Task fehlgeschlagen ist. Siehe Fehler |
cost, settled | Die Belastung in USD. Sie ist endgültig, sobald settled gleich true ist |
input | Die Einstellungen, die Sie gesendet haben. Werden entfernt, wenn die Aufbewahrungsfrist für Ihren Prompt abläuft |
createdAt, completedAt, deadlineAt | Wann der Task erstellt wurde, wann er fertig wurde und der späteste Zeitpunkt, zu dem er fertig werden konnte |
contentState | present (Inhalte noch gespeichert), expired (durch Aufbewahrungsregeln entfernt) oder purged (von Ihnen gelöscht) |
retention | outputsExpireAt (wann die Ergebnisdateien gelöscht werden), promptsExpireAt (wann Ihr Prompt-Text gelöscht wird) und source (welche Einstellung das festgelegt hat) |
sourceTaskId | Vorhanden, wenn dieser Task die Wiederholung eines anderen Tasks ist |
Die normale Ausgabe endet mit einer Zusammenfassung in Klartext, etwa Outputs expire: … oder Content: Destroyed — you removed the outputs …. Jeder Aufruf liefert frische Download-Links. Kostenlos.
tasks list
Was er tut: listet die mit dem aktuellen API-Schlüssel erstellten Tasks auf, jeweils eine Seite auf einmal.
spicyapi tasks list [options]| Option | Was sie tut | Standard | Pflicht |
|---|---|---|---|
--from <date> | Der erste einbezogene Tag, YYYY-MM-DD in UTC | Ein Zeitraum von sieben Tagen, der heute endet | Nein |
--to <date> | Der Tag nach dem letzten einbezogenen Tag, YYYY-MM-DD in UTC. Der Zeitraum darf höchstens 92 Tage umfassen | Siehe oben | Nein |
--state <state> | Nur Tasks in einem Status: queued, running, succeeded, failed, canceled oder expired | Alle | Nein |
--model <model> | Nur Tasks für eine exakte Modell-ID | Alle | Nein |
--limit <count> | Tasks pro Seite, von 1 bis 100 | 20 | Nein |
--cursor <cursor> | Nach der vorigen Seite weitermachen, mit deren Wert nextCursor | Erste Seite | Nein |
spicyapi --json tasks list --from 2026-09-01 --to 2026-09-08 --state failedAusgabe: items (jeweils mit taskId, model, state, cost, settled, createdAt, deadlineAt und completedAt), hasMore und nextCursor. Ist hasMore gleich true, führen Sie denselben Befehl mit denselben Werten für --from und --to erneut aus und ergänzen --cursor mit dem Wert von nextCursor. Die Liste enthält keine Download-Links; verwenden Sie für den gewünschten Task tasks get. Kostenlos.
tasks retry
Was er tut: führt einen Task mit dem Status failed oder expired erneut aus, und zwar als neuen Task mit neuer ID. Das kostet Geld.
spicyapi tasks retry <task-id> [options]| Argument oder Option | Was es tut | Standard | Pflicht |
|---|---|---|---|
task-id | Der fehlgeschlagene oder abgelaufene Task, der erneut laufen soll | — | Ja |
--wait | Warten, bis der neue Task fertig ist | Aus | Nein |
--yes | Die Bestätigungsfrage überspringen | Aus: nachfragen | Nein |
--idempotency-key <key> | Führen Sie die Wiederholung mit demselben Idempotenzschlüssel noch einmal aus, erhalten Sie denselben neuen Task statt eines weiteren | Bei jedem Lauf ein neuer zufälliger Idempotenzschlüssel | Nein |
--poll-interval-ms <milliseconds> | Mit --wait: wie oft nachgefragt wird | Beginnt bei 2 Sekunden und wird bis auf 10 Sekunden langsamer | Nein |
--wait-timeout-ms <milliseconds> | Mit --wait: nach dieser Zeit aufhören zu warten | 600000 (10 Minuten) | Nein |
Der Befehl fragt Retry source task … Continue? [y/N]. Anders als tasks create zeigt er vor der Frage keinen Preis. Der neue Task wird zum aktuellen Preis des Modells berechnet; prüfen Sie diesen deshalb vorher mit spicyapi models get <model>, wenn der Preis für Sie eine Rolle spielt.
Ausgabe: idempotencyKey, die neue taskId, sourceTaskId (der ursprüngliche Task), state, estimatedCost (der reservierte Betrag) und deadlineAt.
- Nur Tasks mit
failedoderexpiredlassen sich wiederholen, außerdem ältere mitcanceled. Für eine weitere Fassung eines erfolgreichen Ergebnisses verwenden Sietasks create. - Die ursprüngliche Eingabe wird unverändert wiederverwendet; eine Wiederholung hilft also nur, wenn die Ursache vorübergehend war. Prüfen Sie zuerst
errorCode; siehe Einen fehlgeschlagenen Task wiederholen und Fehler. - Verwies die Eingabe auf eine hochgeladene Datei, die inzwischen abgelaufen ist, schlägt die Wiederholung fehl; laden Sie die Datei erneut hoch und verwenden Sie
tasks create. - Die Wiederholung übernimmt die Aufbewahrungseinstellung des ursprünglichen Tasks.
- Hat
tasks createdie Verbindung verloren, bevor Sie eine Task-ID gesehen haben, ist das kein fehlgeschlagener Task. Folgen Sie stattdessen den Schritten unter Einen Task nach unterbrochenem Warten wieder aufnehmen.
tasks purge
Was er tut: löscht die generierten Medien, die Ergebnisdaten (das gespeicherte Ergebnis), den Prompt und andere Eingabetexte eines beendeten Tasks endgültig, und zwar sofort, statt auf den Ablauf ihrer Fristen zu warten.
spicyapi tasks purge <task-id> [--yes]| Argument oder Option | Was es tut | Standard | Pflicht |
|---|---|---|---|
task-id | Ein beendeter Task: succeeded, failed, expired oder canceled | — | Ja |
--yes | Die Bestätigungsfrage überspringen | Aus: nachfragen | Nein |
Ein Task, der noch queued oder running ist, lässt sich nicht löschen. Abbrechen lässt er sich auch nicht, denn dafür gibt es weder einen Befehl noch eine API. Warten Sie also mit spicyapi tasks wait <task-id>, bis er fertig ist, und löschen Sie ihn dann.
Der Befehl erklärt, was gelöscht wird, und bittet Sie um Bestätigung, denn das lässt sich nicht rückgängig machen. Laden Sie vorher alles herunter, was Sie behalten möchten.
Ausgabe: taskId, contentState (purged), purgedAt, contentRemovedBy (user), billingRetained (immer true) und mediaDeletionPending, gefolgt von einer Zeile, die nennt, was vernichtet wurde, und angibt, dass die gespeicherten Medien innerhalb von etwa einer Minute entfernt werden. Steht contentState noch auf present, wurde diesmal nichts entfernt; versuchen Sie es später erneut.
Kostenlos und keine Erstattung: Der Ledger-Eintrag, der berechnete Betrag, das Modell, der Status, die Zeitstempel und die Request-ID bleiben gespeichert. Siehe Datenaufbewahrung und Löschung.
files upload
Was er tut: lädt eine Datei von Ihrem Computer hoch, etwa das Startbild für eine Bild-zu-Video-Generierung, und gibt Ihnen eine spicy://-Adresse, die Sie in Ihre Eingabe schreiben.
spicyapi files upload <path> [--content-type <type>]| Argument oder Option | Was es tut | Standard | Pflicht |
|---|---|---|---|
path | Die hochzuladende Datei | — | Ja |
--content-type <type> | Der Dateityp, falls er sich nicht am Dateinamen erkennen lässt: image/jpeg, image/png, image/webp, image/gif, video/mp4, video/webm, audio/mpeg oder audio/wav | Wird an der Dateiendung erkannt | Nein |
Unterstützt werden Bilder im Format .jpg, .jpeg, .png, .webp und .gif bis 10 MiB, Videos im Format .mp4 und .webm sowie Audio im Format .mp3 und .wav bis 90 MiB und 600 Sekunden. Ein Modell kann eigene, niedrigere Grenzen setzen.
spicyapi files upload ./start-frame.jpgfileId: fil_01k3m8x9q2z4v7n5p6r8s0t1w3
status: ready
bytes: 402118
contentType: image/jpeg
sha256: a91f4c2e5b7d16809e3f2a4c8d0b61e7c4a890e5d2f71b3c609ae8427d15f0c6
uri: spicy://f/fil_01k3m8x9q2z4v7n5p6r8s0t1w3
expiresAt: 2026-09-18T09:12:11Z
width: 1280
height: 720Ausgabe: Kopieren Sie den Wert uri genau so, wie er ausgegeben wird, in die Dateieinstellung des Modells, häufig image_url. Er ist bis expiresAt verwendbar, normalerweise einen Tag lang. Danach laden Sie die Datei erneut hoch. Das Hochladen ist kostenlos.
files download-url
Was er tut: erstellt einen neuen Download-Link für das Ergebnis eines beendeten Tasks. Er gibt den Link aus, speichert die Datei aber nicht.
spicyapi files download-url <task-id> [--key <key>]| Argument oder Option | Was es tut | Standard | Pflicht |
|---|---|---|---|
task-id | Ein erfolgreicher Task | — | Ja |
--key <key> | Auf welches Ergebnis verlinkt wird, wenn ein Task mehrere erzeugt hat. Verwenden Sie den Wert key aus output.assets in tasks get | Das erste Ergebnis | Nein |
Ausgabe: key, url und expiresAt. Der Link funktioniert etwa 20 Minuten; öffnen Sie ihn im Browser oder laden Sie die Datei mit curl herunter. Ein Task, der noch nicht erfolgreich ist, antwortet mit „not found“. Wird die Datei noch kopiert, erhalten Sie einen Konfliktfehler; warten Sie ein paar Sekunden und versuchen Sie es erneut. Sind die Dateien des Tasks bereits gelöscht, lässt sich kein neuer Link mehr erstellen. Kostenlos.
webhooks verify
Was er tut: Betreiben Sie einen Server, der Callbacks von SpicyAPI empfängt (siehe --callback-url), prüft dieser Befehl, ob ein gespeicherter Callback echt und unverändert ist. Er läuft vollständig auf Ihrem Computer und braucht keinen API-Schlüssel.
spicyapi webhooks verify --body-file <path> --timestamp <seconds> --signature <base64> --payload-version <version>| Option | Was sie tut | Standard | Pflicht |
|---|---|---|---|
--body-file <path> | Eine Datei mit dem Body des Callbacks, genau so, wie er empfangen wurde, Byte für Byte | — | Ja |
--timestamp <seconds> | Der Wert des Headers X-Webhook-Timestamp | — | Ja |
--signature <base64> | Der Wert des Headers X-Webhook-Signature | — | Ja |
--payload-version <version> | Der Wert des Headers X-Webhook-Payload-Version: 1 oder 2 | — | Ja |
--secret-env <name> | Der Name der Umgebungsvariable, die Ihren Webhook-Signaturschlüssel enthält. Den Schlüssel selbst tippen Sie nie in die Befehlszeile | SPICY_WEBHOOK_SECRET | Nein |
--tolerance-seconds <seconds> | Wie weit der Zeitstempel von der Uhr Ihres Computers abweichen darf | 300 | Nein |
Ausgabe: bei Erfolg payload (der Inhalt des Callbacks), payloadVersion, taskId, deliveryId (Version 2) und timestamp. Stimmt etwas nicht überein, gibt der Befehl einen Fehler aus und beendet sich mit einem Status ungleich null. Kostenlos.
Bei der Registrierung wird automatisch ein Signaturschlüssel angelegt, sein Wert wird aber nie angezeigt. Um einen zu erhalten, den Sie kopieren können, öffnen Sie in der Konsole Webhooks und klicken auf Erzeugen (oder auf Erneuern, wenn bereits einer eingerichtet ist). Der neue Schlüssel wird nur ein einziges Mal angezeigt. Das Erneuern wirkt sofort und ohne Übergangszeit: Der alte Schlüssel signiert ab diesem Moment nicht mehr. Siehe Webhooks.
Häufige Rezepte
Ein Bild generieren
spicyapi models list --modality image --json
spicyapi models get MODEL_ID_FROM_CATALOG --json
spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --waitWählen Sie mit dem ersten Befehl eine ID aus, bauen Sie input.json aus den Einstellungen, die der zweite anzeigt, führen Sie dann den dritten aus und bestätigen Sie mit y. Die Anleitung unter Ihr erstes Ergebnis erklärt jeden Schritt.
Ein Bild in ein Video verwandeln
Ein Bild-zu-Video-Modell und seine Einstellungen finden
spicyapi models list --modality video --task image-to-video --json
spicyapi models get MODEL_ID_FROM_CATALOG --jsonSuchen Sie in inputSchema die Einstellung für das Startbild (meist image_url), die Einstellung für die Länge (meist duration_seconds) und alles, was unter required steht.
Ihr Bild hochladen
spicyapi files upload ./start-frame.jpgKopieren Sie den Wert uri, der mit spicy:// beginnt.
Die Eingabe schreiben
Legen Sie input.json wie unter Ihr erstes Ergebnis an, mit den Namen der Einstellungen dieses Modells und Ihrer eigenen uri:
{
"prompt": "Slow push-in, rain running down the window",
"image_url": "spicy://f/fil_01k3m8x9q2z4v7n5p6r8s0t1w3",
"duration_seconds": 5
}Den Preis prüfen, dann generieren
spicyapi tasks quote --model MODEL_ID_FROM_CATALOG --input-file input.json
spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --wait --wait-timeout-ms 1800000Videos werden meist pro Sekunde berechnet; die gewählte Länge verändert also den Preis. Videos können mehrere Minuten dauern, deshalb wartet dieses Beispiel bis zu 30 Minuten statt der standardmäßigen 10. Laden Sie die .mp4 wie unter Ihr erstes Ergebnis über die url herunter.
Das hochgeladene Bild ist einen Tag lang verwendbar. Danach laden Sie es erneut hoch.
Einen Task nach unterbrochenem Warten wieder aufnehmen
Ein Task läuft weiter, auch wenn das Terminal geschlossen wird, die Netzwerkverbindung abbricht, Ihr Computer in den Ruhezustand geht oder das Warten sein Zeitlimit erreicht. Wie Sie wieder an ihn herankommen, hängt davon ab, was Sie gesehen haben:
-
Sie haben
Accepted: job_…gesehen oder unter dem Fehler eine ZeileRecover:. Dann haben Sie die Task-ID. Warten Sie erneut oder sehen Sie einfach nach:spicyapi tasks wait job_01k3m8x9q2z4v7n5p6r8s0t1w3 --wait-timeout-ms 1800000 spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3 -
Sie haben nur die Zeile
Idempotency-Key:gesehen, zum Beispiel weil die Verbindung abbrach, während der Task erstellt wurde. Führen Sie denselben Befehl mit demselben Modell und derselben Eingabe erneut aus und ergänzen Sie diesen Idempotenzschlüssel:spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --idempotency-key 4f6755a5-0d72-4420-9f6b-9faf0e2b0241 --waitDie CLI zeigt den Preis und fragt erneut nach. Wurde der erste Versuch aber angenommen, gibt SpicyAPI genau diesen Task zurück, statt einen zweiten zu starten und zu berechnen. Das funktioniert 24 Stunden lang mit demselben API-Schlüssel. Ist der erste Versuch nie angekommen, wird der Task jetzt erstellt, und zwar genau einmal.
-
Sie haben keines von beiden. Listen Sie Ihre letzten Tasks auf und finden Sie ihn anhand von Zeitpunkt und Modell:
spicyapi --json tasks list --limit 10
Einen fehlgeschlagenen Task wiederholen
Finden Sie zuerst heraus, warum er fehlgeschlagen ist:
spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3Lesen Sie dann errorCode. Bei fehlgeschlagenen oder abgelaufenen Tasks wird die Reservierung normalerweise vollständig freigegeben. Einige Inhaltsablehnungen werden zum angenommenen Angebotspreis berechnet, sofern die Modellseite diese Ausnahme ausdrücklich nennt. Prüfen Sie den endgültigen Betrag anhand von settled und cost. tasks retry sendet dieselbe Eingabe noch einmal und hilft deshalb nur, wenn die Ursache vorübergehend war:
errorCode | Was zu tun ist |
|---|---|
rate_limited, upstream_unavailable, timeout, upstream_failed | Kurz warten, dann einmal wiederholen. Scheitert es erneut, nicht weiter wiederholen: Bei timeout versuchen Sie mit tasks create eine kürzere Dauer oder eine niedrigere Auflösung |
generation_failed | Nicht wiederholen. Ändern Sie den Prompt oder das Bild und verwenden Sie dann tasks create: Dieselbe Eingabe scheitert meist auf dieselbe Weise |
invalid_asset | Nicht wiederholen, denn eine Wiederholung verwendet die alte Datei. Laden Sie die Datei erneut hoch und verwenden Sie dann tasks create mit der neuen uri |
invalid_request, unsupported_combination | Nicht unverändert wiederholen. Ändern Sie die Einstellungen und verwenden Sie dann tasks create |
content_rejected | Nicht unverändert wiederholen. Das Modell hat diese Anfrage abgelehnt: Ändern Sie den Prompt oder wählen Sie ein anderes Modell, dann verwenden Sie tasks create |
Die vollständige Liste steht unter Fehler.
Ist eine Wiederholung sinnvoll, führen Sie sie aus. Sie erstellt einen neuen Task und berechnet ihn:
spicyapi tasks retry job_01k3m8x9q2z4v7n5p6r8s0t1w3 --waitIhren Verbrauch exportieren
Speichern Sie einen Monat Verbrauch des aktuellen Schlüssels in einer Datei:
spicyapi --json usage --from 2026-09-01 --to 2026-10-01 > usage-2026-09.jsonDie Datei enthält Summen pro Tag und pro Modell. Für eine Aufstellung Task für Task speichern Sie spicyapi --json tasks list --from 2026-09-01 --to 2026-09-08 --limit 100 auf dieselbe Weise und folgen nextCursor, solange hasMore gleich true ist. Zahlen für das gesamte Konto und Rechnungen finden Sie in der Konsole.
Die CLI aus einem Skript ausführen
In einem Skript kann niemand Continue? [y/N] beantworten; kostenpflichtige Befehle verweigern dort deshalb die Ausführung, solange Sie nicht --yes ergänzen. Wenn Sie das tun:
- holen Sie zuerst eine Kostenschätzung ein und prüfen Sie den Preis im Skript;
- geben Sie jeder Generierung einen eigenen, festen
--idempotency-key, etwaposter-2026-09-17-v1, damit ein zweiter Lauf des Skripts nicht doppelt berechnet wird; - ergänzen Sie
--jsonund lesen Siestateaus dem Ergebnis: Ein Befehl, der mit dem Status0endet, hat nicht zwingend einen erfolgreichen Task hervorgebracht; - legen Sie in der Konsole Ausgabenlimits für den Schlüssel fest.
spicyapi --json tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --idempotency-key poster-2026-09-17-v1 --yes --wait > result.jsonKosten, Bestätigung und Sicherheit
Welche Befehle Geld kosten. Nur tasks create und tasks retry. Preise sind in US-Dollar angegeben. Kostenschätzungen einholen, auflisten, prüfen, hochladen, herunterladen und löschen ist kostenlos.
Den Preis vorher sehen. tasks quote ermittelt den Preis einer Anfrage, ohne etwas zu starten. tasks create holt eine eigene Kostenschätzung ein und zeigt Estimated charge und maximum charge, bevor es fragt. Wird der Task angenommen, wird der geschätzte Betrag reserviert (held), und das ist zugleich das Höchste, was Ihnen berechnet werden kann. Ist der Task erfolgreich, zahlen Sie für das, was tatsächlich erzeugt wurde, nie mehr als diesen Betrag, und was übrig bleibt, geht zurück in Ihr Guthaben.
Die Bestätigung. Continue? [y/N] bedeutet: Die Antwort ist nein, solange Sie nicht y tippen. --yes antwortet für Sie; verwenden Sie es also erst, wenn Sie den Preis kennen. Läuft die CLI an einer Stelle, an der sie nicht fragen kann, etwa in einem Skript oder mit per Pipe übergebener Eingabe, und fehlt --yes, verweigert sie die Ausführung, statt ein Ja anzunehmen. tasks purge fragt auf dieselbe Weise, denn Löschen lässt sich nicht rückgängig machen. tasks retry fragt ebenfalls, zeigt vorher aber keinen Preis.
Der Idempotenzschlüssel, einfach erklärt. Er ist eine Kennzeichnung für eine Generierung, ähnlich einer Bestellnummer. Jeder Aufruf von tasks create und tasks retry gibt einen aus. Bricht Ihre Internetverbindung ab und Sie wissen nicht, ob die Generierung gestartet ist, führen Sie denselben Befehl mit --idempotency-key und dem ausgegebenen Wert erneut aus: Sie erhalten den ursprünglichen Task zurück, und es wird nichts doppelt berechnet. Die Kennzeichnung gilt 24 Stunden mit demselben API-Schlüssel. Verwenden Sie sie nicht für eine andere Generierung wieder: Derselbe Idempotenzschlüssel mit einer anderen Eingabe wird abgelehnt.
Kein Abbrechen. Ist ein Task angenommen, lässt er sich nicht abbrechen. Strg + C, das Schließen des Terminals oder das Sperren des Schlüssels beendet nur das Warten; der Task läuft zu Ende und wird normal berechnet.
Bei fehlgeschlagenen oder abgelaufenen Tasks wird die Reservierung normalerweise vollständig freigegeben. Einige Inhaltsablehnungen werden zum angenommenen Angebotspreis berechnet, sofern die Modellseite diese Ausnahme ausdrücklich nennt. Prüfen Sie den endgültigen Betrag anhand von settled und cost.
Laden Sie herunter, was Sie behalten möchten. Ergebnisdateien werden höchstens etwa 14 Tage aufbewahrt, oder kürzer, wenn Ihr Konto oder --retention das vorgibt, und danach endgültig gelöscht. Download-Links gelten etwa 20 Minuten, Sie können aber jederzeit einen neuen anfordern, solange die Datei existiert. Hochgeladene Dateien sind einen Tag lang verwendbar. Prompt-Text wird standardmäßig nach 30 Tagen gelöscht. Abrechnungsdatensätze bleiben erhalten. Siehe Datenaufbewahrung und Löschung.
Ausgabenlimits. Jeder Schlüssel kann ein Tageslimit, ein Monatslimit und ein Gesamtlimit haben, die Sie auf der Seite API-Schlüssel einstellen. Neue Schlüssel haben kein Limit, bis Sie eines setzen. Ein Task, der ein Limit überschreiten würde, wird schon vor dem Start abgelehnt.
Ihr Schlüssel. Die CLI liest den Schlüssel ausschließlich aus SPICY_API_KEY, gibt ihn nie aus und zeigt in Fehlerhinweisen höchstens seine ersten neun Zeichen (sk-spicy-).
Mehr dazu: Abrechnung, Idempotenz, Verbindliche Tasks und Wiederholen.
Fehlerbehebung
Suchen Sie die Meldung, die Sie sehen. Fehler von SpicyAPI enden mit (request req_…); nennen Sie diesen Wert, wenn Sie sich an den Support wenden, schicken Sie aber niemals Ihren Schlüssel mit.
Jeder Fehlercode ist unter Fehler erklärt, Schritte zur Wiederherstellung finden Sie unter Fehlerbehebung und Wiederherstellung.
Quellcode
Das Paket steht unter MIT-Lizenz und wird offen unter github.com/spicyapi-ai/spicy-cli entwickelt. Dort lesen Sie den Code hinter jedem Befehl dieser Seite, melden Verhalten, das von der Beschreibung abweicht, oder schlagen eine Änderung vor.
Nächste Schritte
Modellkatalog und Schemas
Wie der Live-Katalog und die Einstellungen jedes Modells funktionieren
Abrechnung
Preise, was reserviert wird, Ausgabenlimits und Rechnungen
Datenaufbewahrung und Löschung
Wie lange Dateien und Prompts aufbewahrt werden und wie Sie sie früher löschen
Fehler
Jeder Fehlercode und ob sich eine Wiederholung lohnt
TypeScript-SDK
Dieselben Aufgaben aus Ihrem eigenen JavaScript- oder TypeScript-Code erledigen
Python-SDK
Dieselben Aufgaben aus Ihrem eigenen Python-Code erledigen
Go-SDK
Dieselben Aufgaben aus Ihrem eigenen Go-Code erledigen
MCP-Server
Einen KI-Coding-Assistenten diese Schritte ausführen lassen, mit Bestätigung vor jeder Ausgabe
Agent Skill
Einem KI-Agenten den sicheren Arbeitsablauf mit SpicyAPI beibringen
Schnellstart
Derselbe Ablauf direkt über die HTTP-API
Agenten und Automatisierung
Welches offizielle Werkzeug Sie verwenden, dazu ein Leitfaden für den Produktivbetrieb mit KI-Agenten, Backend-Workern und wiederholbaren Medien-Pipelines.
MCP-Server
Verbinden Sie Claude, Cursor, VS Code und andere KI-Assistenten mit SpicyAPI und durchsuchen Sie dann im Chat Modelle, vergleichen Preise, generieren Medien und holen Ergebnisse ab – jeden kostenpflichtigen Schritt bestätigen Sie selbst.

