spicyapiDokumentation
Konto und Abrechnung
Hauptinhalt

Abrechnung

SpicyAPIs nutzungsbasierte USD-Abrechnung: Preisabfragen, Reservierungen, endgültige Kosten, modellspezifische Ablehnungen, Aufladungen, Ausgabenlimits und Rechnungen.

Geldbeträge statt Credits

Preise werden in US-Dollar angegeben: „$0.008 je Bild“, „$0.042 je Ausgabesekunde“. Vorausbezahltes Guthaben, Aktionsguthaben und Kreditlinien lauten auf Dollar; ein Kreditlimit ist jedoch kein Geldguthaben.

Wir verzichten bewusst auf Credits. Ein Creditsystem legt eine Umrechnungsebene zwischen „X aufladen, Y Bonus erhalten“ und „Was ist ein Credit wert?“. Dadurch lassen sich die tatsächlichen Stückkosten schwerer berechnen. Der angezeigte Preis ist der Preis, den Sie bezahlen.

So funktioniert die Bezahlung

  1. Laden Sie zuerst Geld auf. Neue Konten haben $0 Guthaben; eine kostenlose Nutzungsstufe gibt es nicht. Ein Task vor der Aufladung wird mit 40201 abgelehnt und kostet nichts.
  2. Bei Annahme eines Tasks wird sein geschätzter Preis zurückgelegt. Das ist eine Reservierung. Das Geld gehört weiterhin Ihnen, kann aber nicht gleichzeitig einen anderen Task bezahlen.
  3. Bei erfolgreichem Task bezahlen Sie die tatsächliche Nutzung, höchstens den reservierten Betrag. Der Rest geht zurück in Ihr Guthaben.
  4. Fehlgeschlagene oder abgelaufene Tasks geben normalerweise die gesamte Reservierung frei. Bestimmte Inhaltsablehnungen werden nur dann zum angenommenen Angebotspreis berechnet, wenn die Modellseite diese Ausnahme ausdrücklich nennt. Prüfen Sie settled und cost für die endgültigen Kosten.
  5. Ausgabenlimits je API-Key verhindern, dass ein außer Kontrolle geratenes Skript Ihr Guthaben aufbraucht.

Die folgenden Abschnitte erläutern jeden Schritt im Detail.

Guthaben aufladen

Laden Sie unter Abrechnung in der Konsole Guthaben auf: per Karte, Kryptowährung oder manueller Überweisung, sofern diese Option angezeigt wird. Die automatische Aufladung verhindert, dass lange Aufträge bei niedrigem Guthaben stoppen. Bezahltes Guthaben verfällt nicht; Aktionsguthaben verfällt zum unter Abrechnung angezeigten Datum.

Den vollständigen Ablauf mit Zahlungsoptionen, Gutschrift und automatischer Aufladung beschreibt Kontoeinrichtung. Aufladungen werden grundsätzlich nicht als Geld zurückgezahlt; die Rückerstattungsrichtlinie nennt Ausnahmen wie doppelte Belastungen.

Drei Phasen

Jeder Task durchläuft dieselben drei Abrechnungsschritte. Sie müssen dafür nichts tun. Die Erklärung hilft Ihnen, Ihren Guthabenverlauf sicher zu verstehen.

hold
settlerelease
Bei Annahme wird der Betrag reserviert und genau einmal aufgelöst: nach tatsächlicher Nutzung abgerechnet oder vollständig freigegeben.

Reservierung

Bei der Erstellung reservieren wir Geld für die geschätzte Nutzung. Der Betrag entspricht genau estimatedCost aus createTask.

Die Reservierung bindet die Finanzierungsquellen dieses Tasks; sie ist keine endgültige Belastung. Reserviertes vorausbezahltes Guthaben, anwendbares Aktionsguthaben und genehmigter Kredit können nicht gleichzeitig einen anderen Task finanzieren. Der Betrag erscheint als held in GET /api/v1/chat/credit und als „Reserviert“ in der Konsole.

Reservierung und Taskdatensatz werden in einer Datenbanktransaktion gespeichert. Es gibt keinen Zwischenzustand, in dem ein Task ohne Reservierung existiert oder umgekehrt.

Abrechnung oder Freigabe

  • succeeded → Abrechnung nach tatsächlicher Nutzung, begrenzt auf die angenommene Reservierung. Ungenutzte Beträge gehen an ihre ursprünglichen Finanzierungsquellen zurück; darüber hinaus wird kein weiterer Betrag eingezogen.
  • failed / expired → normalerweise vollständige Freigabe. Eine Modellseite kann ausdrücklich darauf hinweisen, dass bestimmte Fehler mit content_rejected zum angenommenen Angebotspreis berechnet werden. Historische canceled-Datensätze geben die Reservierung ebenfalls vollständig frei; angenommene Tasks können derzeit jedoch nicht abgebrochen werden.

Nach Abschluss der Abrechnung meldet recordInfo den Wert settled: true; cost ist dann endgültig. Solange settled gleich false ist, kann sich cost noch ändern.

Nachlauf zur Bereinigung

Wird unser Prozess während der Ausführung beendet, findet ein Bereinigungsprozess Reservierungen zu bereits abgeschlossenen Tasks und führt die Abrechnung oder Freigabe anhand des gespeicherten Ergebnisses zu Ende.

Abrechnung und Freigabe verwenden denselben Deduplizierungsschlüssel. Der Abrechnungsablauf eines Tasks wird deshalb genau einmal abgeschlossen; Wiederholungen können ihn nicht doppelt verbuchen.

Prüfen Sie die Abrechnung, nicht nur den Taskzustand

Fehlgeschlagene oder abgelaufene Tasks geben normalerweise die gesamte Reservierung frei. Bestimmte Inhaltsablehnungen werden nur dann zum angenommenen Angebotspreis berechnet, wenn die Modellseite diese Ausnahme ausdrücklich nennt. Prüfen Sie settled und cost für die endgültigen Kosten. Eine berechnete Ablehnung bleibt state: "failed" mit errorCode: "content_rejected"; nach der Abrechnung ist settled gleich true und cost positiv. Andere Fehler und abgelaufene Tasks geben die gesamte Reservierung automatisch frei.

Guthaben prüfen

Am schnellsten geht es auf der Seite Abrechnung in der Konsole. Sie zeigt verfügbares Guthaben, aktuell reservierte Beträge und jede Guthabenbewegung. Aus Ihrem Code rufen Sie Folgendes auf:

GET /api/v1/chat/credit
curl
curl https://api.spicyapi.ai/api/v1/chat/credit \
  -H "Authorization: Bearer $SPICY_API_KEY"
JavaScript
const res = await fetch('https://api.spicyapi.ai/api/v1/chat/credit', {
  headers: { Authorization: `Bearer ${process.env.SPICY_API_KEY}` },
});
const body = await res.json();
if (body.code !== 200) throw new Error(`${body.code} ${body.msg}`);

const balance = body.data;
console.log(balance.funding ?? balance);
Python
import os, requests

res = requests.get(
    "https://api.spicyapi.ai/api/v1/chat/credit",
    headers={"Authorization": f"Bearer {os.environ['SPICY_API_KEY']}"},
)
body = res.json()
if body["code"] != 200:
    raise RuntimeError(f'{body["code"]} {body["msg"]}')

balance = body["data"]
print(balance.get("funding", balance))
{
  "code": 200,
  "msg": "success",
  "data": {
    "available": "128.42",
    "held": "0.36",
    "total": "128.78"
  }
}
FeldBedeutung
availableNettobetrag im Wallet; kann nach Nutzung eines genehmigten Kredits negativ sein und reicht allein nicht zur Prüfung der Anfragezulassung
heldDurch laufende Tasks gebundener Betrag
totalSumme der beiden Werte

Reichen die zum gewählten Modell und Zeitpunkt anwendbaren Finanzierungsquellen nicht für die Schätzung, liefert createTask den Code 40201. Kreditablauf, ausgeschöpfte Limits und ein Fehlbetrag nach Rückforderung einer Zahlung können die Zulassung ebenfalls beeinflussen. Ersetzen Sie die serverseitige Prüfung nicht durch einen clientseitigen Vorzeichentest für available.

Sie müssen das Guthaben nicht vor jeder Generierung prüfen: Die Annahme des Tasks prüft bereits verfügbares Guthaben und Ausgabenlimits.

In der API ist Geld eine Zeichenfolge ohne Dollarzeichen

„$0.008“ ist die für Menschen lesbare Preisdarstellung dieser Seite. Die API liefert eine dezimale Zeichenfolge ohne Währungssymbol: estimatedCost, cost und alle drei Guthabenfelder sehen wie "0.008" aus, ohne $ und ohne Trennzeichen, immer in USD.

// Keep the exact decimal string for display
const usd = task.cost;

Zeichenfolgen statt JSON-Zahlen sind eine bewusste Wahl: In den meisten Sprachen wird eine JSON-Zahl zu float64, und 0.008 besitzt keine exakte binäre Darstellung. Für Ihre Buchhaltung lesen Sie den Wert als Dezimalzahl ein:

from decimal import Decimal
usd = Decimal(task["cost"])   # not float()

Ausgabenlimits

Ein Ausgabenlimit begrenzt den Betrag, den Sie ausgeben können. Bis zu sechs Limits gelten für einen Task. Das zuerst erreichte Limit lehnt den Task mit 40202 ab, bevor etwas erstellt oder reserviert wird:

LimitWer es festlegtmsg bei Erreichen
Gesamtlimit des KeysSie auf der API-Key-Seite; Obergrenze über die gesamte Lebensdauer dieses KeysThis key has reached its total spend cap
Monatslimit des KeysSie auf der API-Key-Seite; Budget für diesen KalendermonatThis key has reached its monthly budget
Tageslimit des KeysSie auf der API-Key-Seite; neue Keys haben kein Limit, solange Sie keines festlegenThis key has reached its daily spend cap
Tageslimit des TeamsTeaminhaber, Administratoren und Budgetverantwortliche auf der Teamseite; gilt nur für Keys eines TeamsWorkspace daily budget has been reached
Monatslimit des TeamsWie obenWorkspace monthly budget has been reached
Tageslimit der PlattformWir; unser eigener Schutzschalter, den Sie nicht erhöhen könnenPlatform quota for today is exhausted, please try again later

Tageslimits werden um 00:00 UTC zurückgesetzt. Monatslimits folgen dem UTC-Kalendermonat und werden am 1. zurückgesetzt. Ein Gesamtlimit wird nie zurückgesetzt. Ist das Plattformlimit erreicht, versuchen Sie es nach 00:00 UTC erneut oder kontaktieren Sie den Support, wenn dies wiederholt passiert.

Eine noch nicht abgerechnete Reservierung zählt gegen jedes Limit, also Gesamt-, Monats- und Tageslimit, bis der Task abgerechnet ist, unabhängig von Tag oder Monat. Das Geld ist noch nicht ausgegeben, kann aber auch nicht doppelt ausgegeben werden. Teamlimits erläutert Konsole und Teams.

Ein leeres Limitfeld bedeutet nicht überall dasselbe

  • Key erstellen oder bearbeiten: Ein leeres Limit bedeutet kein Limit, ebenso wie 0. Neue Keys haben kein Limit, solange Sie keines setzen. Wenn Sie ein bestehendes Limit leeren, entfernen Sie es. Soll es bleiben, lassen Sie einen Zahlenwert im Feld stehen.
  • Ausgabenlimits des Teams: Ein leeres Feld behält den aktuellen Wert; 0 bedeutet kein Limit.

Limits dienen Ihrem Schutz. Eine fehlerhafte Schleife kann innerhalb weniger Stunden hohe Beträge verbrauchen. Solche Vorfälle sind in dieser Branche alltäglich und betreffen fast immer Konten ohne gesetztes Limit.

Das Buchungsjournal

Die Seite Abrechnung listet jede Guthabenbewegung mit verständlichen Bezeichnungen wie Aufladung, Reserviert, Berechnet und Zurückgegeben. Beim Download über CSV exportieren enthält die Spalte kind einen dieser stabilen Codes:

ArtBedeutung
topupBezahltes Geld, das Ihrem Guthaben hinzugefügt wurde
bonusZusätzlicher Betrag aus einer Aufladeaktion, getrennt von Ihrer Zahlung verbucht
trialGuthaben aus einer Testaktion, getrennt von Aufladungen und Boni
holdBei Taskannahme reservierter Schätzbetrag; keine Belastung
settleEndgültige Taskkosten, einschließlich nach Modellbedingungen berechneter Inhaltsablehnung; ungenutzte Reservierung wird zurückgegeben
refundVollständig zurückgegebene Reservierung nach Taskfehler oder Zeitüberschreitung
adjustManuelle Korrektur unseres Teams; enthält immer die Identität des Bearbeiters und einen Grund
chargebackNach einer Zahlungsreklamation zurückgenommenes Guthaben
forfeitBei Kontoschließung aufgegebenes Restguthaben
grant_expireNach Ablauf entferntes ungenutztes Aktionsguthaben
grant_revokeZurückgezogenes ungenutztes Aktionsguthaben

Das Journal wird nur ergänzt. Gespeicherte Einträge werden nie umgeschrieben. Eine freigegebene Reservierung ist ein neuer Eintrag und keine Löschung des ursprünglichen. So lässt sich jedes Guthaben vom Anfang an neu berechnen und die Frage „Warum stimmen die Zahlen nicht?“ mit einem nachweisbaren Ergebnis beantworten.

Bonusguthaben wird getrennt von Ihrer Zahlung verbucht, weil eine Zahlungsrückerstattung auf Ihre Karte nur den bezahlten Betrag umfasst. Ein Bonus hat keinen Geldwert. Das ist unabhängig von den oben genannten refund-Einträgen, die die Reservierung eines fehlgeschlagenen Tasks in Ihr Guthaben zurückführen.

Diese Guthabenbewegungen bleiben 10 Jahre gespeichert, getrennt von Taskinhalten. Sie stehen deshalb für Abgleich und Streitfälle zur Verfügung, lange nachdem Prompts und Ergebnisse gelöscht wurden. Siehe Datenaufbewahrung.

Rechnungen und Nutzungsabrechnungen

Unter Abrechnung → Rechnungen können Sie selbst zwei Dokumentarten erstellen und als PDF herunterladen:

DokumentInhaltZahlungsbeleg?
ZahlungsrechnungEine bereits bezahlte Aufladung über den belasteten BetragJa; dieses Dokument verwenden Sie für eine Kostenerstattung
NutzungsabrechnungTatsächliche Ausgaben eines abgeschlossenen MonatsNein; das Geld wurde schon bei der Aufladung bezahlt. Beide einzureichen würde denselben Betrag doppelt geltend machen

Tragen Sie Ihre Angaben einmal oben unter Abrechnung → Rechnungen ein. Name, entweder Firmenname oder eigener Name, erste Adresszeile, Stadt und Land sind Pflichtfelder. Eine Steuernummer wie USt-IdNr. oder GST-Nummer ist optional. Angaben werden genau wie eingegeben aufgedruckt. Sie liefern diese Angaben; wir prüfen sie nicht, auch die Steuernummer nicht. Druckbar sind nur lateinische, griechische und kyrillische Zeichen. Schreiben Sie einen japanischen oder koreanischen Firmennamen daher in seiner eingetragenen romanisierten Form. Bereits ausgestellte Dokumente behalten die zum Erstellungszeitpunkt verwendeten Angaben; spätere Änderungen gelten nur für neue Dokumente.

  • Für jede bezahlte Aufladung und jeden abgeschlossenen Monat kann ein Dokument einmal ausgestellt werden. Existiert es bereits, laden Sie es herunter, statt ein weiteres auszustellen.
  • Korrigieren Sie falsche Angaben mit Neu ausstellen: Das alte Dokument wird als ungültig markiert; ein Ersatz mit neuer Nummer deckt denselben Vorgang ab. Ohne Ersatz stornieren verwenden Sie nur, wenn ein Dokument die falsche Aufladung oder den falschen Monat betrifft.
  • Kontoauszüge weiter unten auf derselben Seite sind etwas anderes: feste monatliche Momentaufnahmen aller Guthabenbewegungen für Ihre eigene Buchführung. Sie sind weder Quittung noch Steuerdokument.

Die Steuer wird mit null ausgewiesen: Wir sind ein US-Anbieter und erheben oder führen keine Umsatzsteuer, GST oder Verkaufssteuer für Sie ab. Jedes Dokument enthält einen Reverse-Charge-Hinweis. Eventuell an Ihrem Standort geschuldete Steuern müssen Sie daher selbst berücksichtigen. Eine ausgestellte Rechnung wird nie bearbeitet, sondern mit dokumentiertem Grund storniert und neu ausgestellt; auch der Ersatz wird erfasst.

Abrechnungseinheiten

Jedes Modell hat genau eine Abrechnungseinheit.

EinheitBedeutungWelches input-Feld die Menge liefert
per_imageJe generiertem BildDas vom Modell angegebene Feld; Standardwert ist 1
per_secondJe Ausgabesekunde. Einige Endpunkte runden die Länge auf feste Blöcke auf; siehe Längenabrechnung in ganzen BlöckenLesen Sie das aktuelle quantityField und Schema. Das übliche Dauerfeld ist duration_seconds. Eine fehlende Dauer wählt nicht zwangsläufig die kürzeste Stufe.
per_requestJe Aufruf, unabhängig von Parametern—
per_1k_tokensJe Token. Die API-Einheit heißt per_1k_tokens; Website und price.perMillionTokens im Katalog zeigen dieselben Preise je Million Tokens. Eingabe, Cacheeingabe, Cacheschreiben und Ausgabe können jeweils eigene Preise haben—

Sie müssen den Feldnamen nicht erraten: quantityField am Katalogendpunkt nennt ihn je Modell. Eine leere Zeichenfolge bedeutet eine Einheit je Aufruf.

Ein Modell kann verschiedene Preise für verschiedene Stufen haben. Auflösung, Dauer, Audiooptionen und Referenzmedien können je nach Schema den Angebotspreis beeinflussen. pricing[].variant kennzeichnet eine Stufe der Preiskarte; im Anfragebody gibt es kein Feld variant. Diese Bezeichnung lässt sich nicht immer als resolution senden. Ebenso lässt sich nicht jedes Modell als Einstiegspreis × Dauer berechnen. Senden Sie die vollständige Eingabe an jobs/quote, um die genaue Schätzung und Kostenobergrenze zu erhalten.

Lesen Sie Menge und Preis immer aus dem Livekatalog

Kodieren Sie kein Mengenfeld für eine gesamte Modellkategorie fest. Ein leeres quantityField bedeutet eine Abrechnungseinheit je Aufruf; andernfalls lesen Sie die geschätzte Menge aus dem genannten Eingabefeld. Modellstufen, Standardwerte und Abrechnungsverhalten können sich mit dem Katalog ändern. Die Kosten sind auf den bei Taskannahme reservierten Betrag begrenzt: Ungenutzte Beträge werden freigegeben; darüber hinaus wird kein weiterer Betrag eingezogen.

Längenabrechnung in ganzen Blöcken

Die meisten per_second-Modelle berechnen die exakt erzeugte Länge. Einige rechnen dagegen in festen Blöcken ab: Vor der Preisberechnung wird die gemessene Länge auf den nächsten ganzen Block aufgerundet. Bei 8-Sekunden-Blöcken kosten ein 6- und ein 8-Sekunden-Clip gleich viel; ein 9-Sekunden-Clip kostet zwei Blöcke. Das gilt nicht für jedes Modell mit Sekundenabrechnung, sondern nur für Endpunkte, die dies ausdrücklich angeben. Jeder dieser Endpunkte erläutert es auf seiner Modellseite.

Gemeinsam ist ihnen außerdem der Grund, warum die Rundung im Angebotspreis sichtbar wird: Sie übernehmen die Länge aus einem von Ihnen bereitgestellten Video, statt aus einem von Ihnen gewählten duration_seconds-Wert. Die Ergebnislänge ist also erst bekannt, nachdem der Clip gelesen wurde. Ihr quantityField ist leer. Der Angebotspreis vor der Einreichung entspricht deshalb dem höchsten möglichen Betrag für den längsten akzeptierten Clip:

{
  "estimatedCost": "0.96",
  "maxCharge": "0.96",
  "quantity": "32",
  "unit": "per_second"
}

Die Beträge dienen als Beispiel. quantity ist hier eine Obergrenze in Sekunden und kein Messwert. Der Angebotspreis wird reserviert; die endgültigen Kosten werden aus der gerundeten Dauer berechnet und überschreiten die Reservierung nie. Der Rest wird bei der Abrechnung freigegeben, wie in den drei Phasen oben.

Die Reservierung kann größer als die endgültigen Kosten sein

Das ist bei diesen Endpunkten vorgesehen und keine Überberechnung. Zwischen Annahme und Abrechnung zeigt Ihr Guthaben die reservierte Obergrenze, weil die Ergebnislänge vor dem Lesen des Clips unbekannt ist. Bei der Abrechnung bezahlen Sie die tatsächliche, auf den Block aufgerundete Länge. Die Differenz geht automatisch zurück in Ihr Guthaben. Das Journal erfasst beide Bewegungen, sodass Sie hold und settle jederzeit gegeneinander prüfen können.

Daraus ergeben sich zwei Punkte für Ihre Planung:

  • Planen Sie Ihr Budget nach dem Angebotspreis, nicht nach Ihrem Clip. Bis zur Abrechnung wird die Obergrenze reserviert und zählt wie jede andere Reservierung gegen die Ausgabenlimits.
  • Auch ein kurzer Clip kostet einen ganzen Block. Kürzen von 9 auf 8 Sekunden kann den Preis eines Endpunkts mit 8-Sekunden-Blöcken halbieren. Kürzen von 8 auf 5 Sekunden ändert dagegen nichts.

Die genauen Einheiten und Preise finden Sie auf der Preisseite und der jeweiligen Modellseite.

Kundenrabatte und Aktionen

Angebote können für alle oder für ein bestimmtes Konto gelten, für alle oder ausgewählte Modelle. Dauerhafte Angebote laufen bis zur Deaktivierung; zeitlich begrenzte gelten nur zwischen tatsächlichem Beginn und Ende. Kontospezifische Preise gelten bei Anmeldung dieses Kontos oder bei Preisabfragen mit seinem API-Key und werden nie als Preis anderer Kunden veröffentlicht.

Angebote werden nicht kombiniert. Der niedrigste anwendbare Preis gilt automatisch. Bei regulären $10 ergeben eine öffentliche Aktion mit 10 % und ein Kontorabatt mit 20 % einen Preis von $8, nicht einen kombinierten Preis von $7.20. Endet ein Angebot oder wird es deaktiviert, nutzen neue Preisabfragen das beste verbleibende anwendbare Angebot oder den regulären Preis.

Angebote auf Startseite, Katalog und Modellseiten helfen beim Vergleich. Die tatsächliche Schätzung erhalten Sie von jobs/quote mit Ihrer Identität, dem Modell und vollständigen Eingaben. Ein Countdown reserviert keinen Preis: Aktualisieren Sie das Angebot nach Änderungen an Aktion, Eingabe oder Preis. Angenommene Tasks behalten ihren eingefrorenen Preis, auch wenn die Aktion während der Ausführung endet. Die endgültigen Kosten können den bei Annahme reservierten Betrag nicht überschreiten.

Angebote gelten automatisch für API-Nutzungskosten, nicht für den Aufladebetrag; sie gewähren kein Cashback auf Aufladungen. Beispiele für Tages- oder Monatsbudgets rechnen den aktuellen Preis hoch. Eine zeitlich begrenzte Aktion kann vor dem Budgetzeitraum enden. Prüfen Sie deshalb auch ihr Enddatum.

Aktionsguthaben und Kreditlinien

GET /api/v1/chat/credit behält available, held und total bei und kann eine Aufschlüsselung unter funding enthalten. Ältere Antworten können funding auslassen; fehlende Daten bedeuten nicht null. Nutzen Sie client.getBalance() im SDK oder spicyapi balance --json in der CLI.

  • funding.prepaidAvailableUsd enthält vorausbezahlte oder ältere uneingeschränkt verfügbare Mittel; grantAvailableUsd summiert aktuell aktive Guthabenzuteilungen. Jeder Eintrag in grants nennt zugeteilte, verfügbare, reservierte und ausgegebene Beträge, Status, Beginn, Ablauf und modelSlugs. Eine leere Modellliste bedeutet alle Modelle; sonst gilt das Guthaben nur für die aufgeführten Modelle. Die Liste enthält bis zu 100 Zuteilungen, zuerst solche mit verbleibenden oder reservierten Beträgen und anschließend die neuesten zuerst. grantsHasMore zeigt weitere Datensätze an. Ersetzen Sie die Kontosumme nicht durch die Zwischensumme der sichtbaren Liste.
  • funding.credit beschreibt eine genehmigte Kreditlinie zur späteren Zahlung. limitUsd ist die Obergrenze, availableUsd der ungenutzte anwendbare Kredit, usedUsd der abgerechnete ausstehende Kreditbetrag, heldUsd die Reservierung für angenommene Tasks und expiresAt das Ablaufdatum. Das Kreditlimit ist weder Aufladung noch Aktions- oder Geldguthaben. Ablauf, Deaktivierung oder Überschreitung des Limits schränken neue Anfragen ein; bestehende Schulden bleiben zahlbar.
  • Aktionsguthaben kann nicht ausgezahlt werden. Rabatte bestimmen den Anfragepreis; Guthabenzuteilungen und Kredit bestimmen dessen Finanzierung. Eine Zuteilung senkt nicht den Preis der Modellpreiskarte. Ihr Modellumfang und ihre Gültigkeit gelten; ungenutzte Beträge können verfallen oder zurückgezogen werden. Fehlgeschlagene Tasks und ungenutzte Reservierungen geben Mittel an ihre ursprüngliche Quelle zurück. Dadurch wird eine abgelaufene oder widerrufene Zuteilung nicht wieder aktiviert.
  • Ein positiver Wert funding.cashShortfallUsd ist ein Fehlbetrag nach externer Zahlungsrückforderung. Aktionsguthaben und Kredit können ihn nicht decken; neue Aufrufe bleiben gesperrt, bis er ausgeglichen ist. Ein negatives available kann dagegen auf genehmigte Kreditnutzung zurückgehen. Leiten Sie aus dem Vorzeichen keine Ablehnung ab und addieren Sie den Wert nicht direkt zum Kreditlimit. Der Server prüft Finanzierungsquellen, Modellberechtigung, Gültigkeit und Ausgabenlimits.

Beträge bleiben exakte dezimale USD-Zeichenfolgen; Datumswerte verwenden RFC3339. Geben Sie bei der Anzeige die Zeitzone an. Die Abrechnungsseite zeigt Finanzierungs- und Zuteilungsdetails; Änderungen gelten erst nach manueller Genehmigung eines Administrators. Fragen zu Aktionsguthaben oder Kreditlinien stellen Sie unter Support in der Konsole oder per E-Mail an support@spicyapi.ai. Die öffentliche API bietet keine Schreibzugriffe, um Ihre eigenen Kontingente zu erhöhen oder Guthaben zuzuteilen.

Nutzung des aktuellen API-Keys

Ein Diagramm der Ausgaben je Tag und Modell für Ihr gesamtes Konto oder Team finden Sie unter Abrechnung → Nutzung. Der folgende API-Endpunkt berichtet ausschließlich über den aufrufenden Key:

curl 'https://api.spicyapi.ai/api/v1/usage?from=2026-09-01&to=2026-09-06' \
  -H "Authorization: Bearer $SPICY_API_KEY"

Datumswerte verwenden UTC [from,to); dieses Beispiel umfasst deshalb den 1.–5. September. Ohne Datumsangaben erhalten Sie die letzten sieben Tage einschließlich heute; der maximale Zeitraum beträgt 92 Tage. Ergebnisse gehören ausschließlich zum aktuellen API-Key. Es gibt keinen Parameter für einen anderen Key oder einen kontoweiten Bericht. Für das Walletguthaben verwenden Sie chat/credit.

data.totalCalls zählt alle Tasks; data.totalSpend enthält nur abgerechnete Kosten. days und models gruppieren dieselben Tasks nach Erstellungsdatum und Modell, mit exakten dezimalen USD-Zeichenfolgen. Offene Reservierungen sind ausgeschlossen; späte Abrechnungen können frühere Datumswerte aktualisieren. Ausgeblendete Taskverläufe bleiben enthalten; Tage ohne Aufrufe werden ausgelassen. Addieren Sie die beiden Gruppierungen nicht.

Verwenden Sie client.getUsage({ from, to }) im SDK oder spicyapi usage --from 2026-09-01 --to 2026-09-06 in der CLI. Dieser Endpunkt hat ein eigenes, strengeres Ratenlimit; siehe Ratenbegrenzungen.

Auf dieser Seite