Fatturazione
Scopri la fatturazione a consumo in USD di SpicyAPI: preventivi, importi riservati, addebiti finali, rifiuti, ricariche, limiti di spesa e fatture.
Dollari, non crediti
I prezzi sono espressi in dollari statunitensi: «$0.008 per immagine», «$0.042 per secondo di output». Fondi prepagati, contributi promozionali e linee di credito sono denominati in dollari, ma un limite di credito non è un saldo in denaro.
La scelta di evitare i crediti è intenzionale. Un sistema a crediti introduce una conversione tra «ricarica X, ricevi Y di bonus» e «quanto vale un credito», rendendo difficile calcolare il costo unitario reale. Il prezzo che vedi è quello che paghi.
Come funziona il pagamento, in breve
- Prima aggiungi fondi. Un nuovo account parte con un saldo di $0 e non è previsto un piano gratuito. Un'attività inviata prima della ricarica viene rifiutata con
40201e non costa nulla. - Quando un'attività viene accettata, il suo costo stimato viene accantonato. È un importo riservato. Il denaro resta tuo, ma non può finanziare contemporaneamente un'altra attività.
- Se l'attività riesce, paghi l'utilizzo effettivo, senza mai superare l'importo riservato. L'eventuale differenza torna disponibile nel saldo.
- Le attività fallite o scadute normalmente liberano tutto l'importo riservato. Alcuni rifiuti di contenuto vengono addebitati al preventivo accettato soltanto quando la pagina del modello dichiara espressamente questa eccezione. Controlla
settledecostper conoscere l'addebito finale. - I limiti di spesa impostati su ciascuna chiave API impediscono a uno script fuori controllo di esaurire il saldo.
Il resto della pagina spiega in dettaglio ogni passaggio.
Aggiungere fondi
Aggiungi fondi in Fatturazione nella console: con carta, criptovalute o trasferimento manuale, quando questa opzione è disponibile. Puoi anche attivare la ricarica automatica per evitare che le attività lunghe si fermino quando il saldo si riduce. Il saldo acquistato non scade; il credito promozionale scade alla data indicata in Fatturazione.
Per una guida passo passo alle opzioni di pagamento, ai tempi di accredito e alla ricarica automatica, consulta Configurazione dell'account. Le ricariche generalmente non sono rimborsabili in denaro; la politica sui rimborsi elenca le eccezioni, come un addebito duplicato.
Tre fasi
Ogni attività attraversa gli stessi tre passaggi di fatturazione. Non richiedono alcuna azione da parte tua: li descriviamo per aiutarti a leggere con sicurezza la cronologia del saldo.
holdsettlereleaseRiserva dei fondi
Alla creazione riserviamo i fondi necessari per l'utilizzo stimato. L'importo corrisponde esattamente a estimatedCost, restituito da createTask.
La riserva accantona le fonti di finanziamento utilizzate dall'attività; non è un addebito finale. Fondi prepagati riservati, contributi idonei o credito approvato non possono finanziare contemporaneamente un'altra attività. L'importo compare come held in GET /api/v1/chat/credit e come «In sospeso» nella console.
La riserva e la riga dell'attività vengono scritte in un'unica transazione del database. Non esiste uno stato intermedio in cui un'attività sia presente senza una riserva, o viceversa.
Addebito finale o rilascio
succeeded→ l'addebito finale si basa sull'utilizzo effettivo ed è limitato alla riserva accettata. I fondi non utilizzati vengono restituiti alle fonti originarie; non viene riscosso successivamente alcun importo oltre la riserva.failed/expired→ normalmente la riserva viene liberata interamente. La pagina di un modello può dichiarare espressamente che determinati erroricontent_rejectedsono addebitati al preventivo accettato. Anche i record storicicanceledprevedono il rilascio completo, ma al momento le attività accettate non possono essere annullate.
Una volta completato il regolamento, recordInfo riporta settled: true e cost è definitivo. Finché settled è false, cost può ancora cambiare.
Processo di recupero
Se un nostro processo si interrompe durante l'esecuzione, un processo di recupero individua le riserve associate ad attività già in uno stato terminale e completa l'addebito o il rilascio secondo l'esito registrato.
Addebito e rilascio condividono una sola chiave di deduplicazione, quindi il ciclo di fatturazione di un'attività si conclude esattamente una volta: i tentativi ripetuti non possono registrarlo due volte.
Leggi il regolamento, non soltanto lo stato dell'attività
Le attività fallite o scadute normalmente liberano tutto l'importo riservato. Alcuni rifiuti di contenuto vengono addebitati al preventivo accettato soltanto quando la pagina del modello dichiara espressamente questa eccezione. Controlla settled e cost per conoscere l'addebito finale. Un rifiuto addebitato mantiene state: "failed" con errorCode: "content_rejected"; dopo il regolamento, settled è true e cost è positivo. Gli altri errori e le attività scadute liberano automaticamente l'intera riserva.
Controllare il saldo
Il modo più rapido è la pagina Fatturazione della console: mostra il saldo disponibile, l'importo attualmente riservato e ogni movimento. Da codice, chiama:
GET /api/v1/chat/creditcurl https://api.spicyapi.ai/api/v1/chat/credit \
-H "Authorization: Bearer $SPICY_API_KEY"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);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"
}
}| Campo | Significato |
|---|---|
available | Importo netto del portafoglio; può essere negativo dopo l'utilizzo di credito approvato e, da solo, non determina l'accettazione di una richiesta |
held | Importo bloccato dalle attività in corso |
total | Somma dei due importi |
Quando i fondi idonei per il modello selezionato e per quel momento non coprono la stima, createTask restituisce 40201. Anche la scadenza del credito, l'esaurimento dei limiti e una carenza derivante dal recupero di un pagamento possono influire sull'accettazione. Non sostituire i controlli del server con un controllo sul client del segno di available.
Non è necessario verificare il saldo prima di ogni generazione: l'accettazione delle attività applica già i controlli sul saldo disponibile e sui limiti di spesa.
Nelle risposte API, gli importi sono stringhe senza il simbolo del dollaro
«$0.008» è il modo in cui questa pagina presenta i prezzi ai lettori. L'API restituisce una stringa decimale senza simbolo di valuta: estimatedCost, cost e tutti e tre i campi del saldo hanno un formato come "0.008": niente $, nessun separatore, sempre USD.
// Keep the exact decimal string for display
const usd = task.cost;La scelta di stringhe al posto dei numeri JSON è intenzionale: nella maggior parte dei linguaggi un numero JSON viene rappresentato come float64, e 0.008 non ha una rappresentazione binaria esatta. Se l'importo deve entrare nella tua contabilità, interpretalo come numero decimale:
from decimal import Decimal
usd = Decimal(task["cost"]) # not float()Limiti di spesa
Un limite di spesa è un tetto all'importo che può essere utilizzato. A un'attività si applicano fino a sei limiti; il primo raggiunto fa rifiutare l'attività con 40202, prima che venga creata o che siano riservati fondi:
| Limite | Chi lo imposta | msg al raggiungimento |
|---|---|---|
| Limite totale della chiave | Tu, nella pagina delle chiavi API. È il tetto per l'intera vita della chiave | This key has reached its total spend cap |
| Limite mensile della chiave | Tu, nella pagina delle chiavi API. È il budget per il mese di calendario corrente | This key has reached its monthly budget |
| Limite giornaliero della chiave | Tu, nella pagina delle chiavi API. Le nuove chiavi non hanno un limite, salvo che tu ne imposti uno | This key has reached its daily spend cap |
| Limite giornaliero del team | Proprietari, amministratori e responsabili del budget del team, nella pagina Team. Si applica soltanto alle chiavi appartenenti a un team | Workspace daily budget has been reached |
| Limite mensile del team | Come sopra | Workspace monthly budget has been reached |
| Limite giornaliero della piattaforma | Noi. È il nostro meccanismo di protezione; non puoi aumentarlo | Platform quota for today is exhausted, please try again later |
I limiti giornalieri ripartono alle 00:00 UTC; quelli mensili seguono il mese di calendario UTC e ripartono il giorno 1. Il limite totale non si azzera mai. Se viene raggiunto il limite della piattaforma, riprova dopo le 00:00 UTC oppure contatta l'assistenza se il problema si ripete.
Una riserva non ancora regolata conta ai fini di tutti i limiti, totali, mensili e giornalieri, fino al regolamento dell'attività, indipendentemente dal giorno o dal mese in cui ricade: il denaro non è ancora stato speso, ma non può essere speso due volte. I limiti dei team sono descritti in Console e team.
Un campo del limite vuoto non ha lo stesso significato ovunque
- Creazione o modifica di una chiave: un limite vuoto significa nessun limite, così come
0. Le nuove chiavi non hanno un limite, salvo che tu ne imposti uno. Svuotare il limite di una chiave esistente lo rimuove; per mantenerlo, lascia un numero nel campo. - Limiti di spesa del team: un campo vuoto mantiene il valore corrente;
0significa nessun limite.
I limiti servono a proteggerti. Un ciclo fuori controllo che consuma un importo elevato in poche ore è un incidente comune in questo settore, e si verifica quasi sempre su un account senza limiti impostati.
Registro dei movimenti
La pagina Fatturazione della console elenca tutti i movimenti del saldo con etichette chiare come Ricarica, In sospeso, Addebitato e Restituito. Quando scarichi l'elenco con Esporta CSV, la colonna kind contiene uno di questi codici stabili:
| Tipo | Significato |
|---|---|
topup | Denaro pagato da te e aggiunto al saldo |
bonus | Importo aggiuntivo di un'offerta di ricarica, registrato separatamente dal denaro pagato |
trial | Credito di una campagna di prova, separato da ricariche e bonus |
hold | Importo stimato riservato quando un'attività viene accettata; non è un addebito |
settle | Addebito finale dell'attività, incluso un rifiuto di contenuto addebitato secondo le condizioni del modello; l'eventuale parte non utilizzata della riserva viene restituita |
refund | Intera riserva restituita perché l'attività è fallita o ha superato il tempo massimo |
adjust | Correzione manuale del nostro team; include sempre l'identità dell'operatore e una motivazione |
chargeback | Saldo recuperato a seguito di una contestazione del pagamento |
forfeit | Saldo residuo a cui hai rinunciato chiudendo l'account |
grant_expire | Fondi promozionali non utilizzati rimossi dopo la scadenza |
grant_revoke | Fondi promozionali non utilizzati revocati |
Il registro è solo incrementale. Le voci già scritte non vengono mai riscritte: la restituzione di una riserva è una nuova voce, non la cancellazione dell'originale. È quindi possibile ricalcolare qualsiasi saldo dall'inizio, rendendo «i conti non tornano» una domanda a cui si può rispondere con prove verificabili.
Il credito bonus viene registrato separatamente dal denaro pagato perché un rimborso del pagamento, cioè denaro restituito alla tua carta, copre soltanto l'importo che hai pagato; il bonus non ha valore monetario. Questo è distinto dalle voci refund sopra descritte, che restituiscono al saldo la riserva di un'attività fallita.
Questi movimenti vengono conservati per 10 anni, separatamente dal contenuto delle attività, così restano disponibili per riconciliazioni e contestazioni anche molto dopo la cancellazione dei prompt e dei risultati. Consulta Conservazione dei dati.
Fatture e riepiloghi di utilizzo
Puoi emettere autonomamente due documenti da Fatturazione → Fatture nella console, entrambi scaricabili in PDF:
| Documento | Che cosa comprende | È un documento di pagamento? |
|---|---|---|
| Fattura di pagamento | Una ricarica che hai già pagato, per l'importo addebitato | Sì. È il documento da presentare per un rimborso spese |
| Riepilogo di utilizzo | La spesa effettiva in un mese concluso | No. Quel denaro era già stato pagato al momento della ricarica, quindi presentare entrambi significherebbe richiedere due volte il rimborso della stessa somma |
Inserisci una sola volta i tuoi dati nella parte superiore di Fatturazione → Fatture. Sono obbligatori nome o ragione sociale, prima riga dell'indirizzo, città e paese; il codice fiscale o numero di registrazione tributaria, come VAT o GST, è facoltativo. I dati vengono stampati esattamente come li inserisci: li fornisci tu e noi non ne verifichiamo nessuno, incluso il numero fiscale. Possono essere stampati soltanto caratteri latini, greci e cirillici, quindi per un'azienda giapponese o coreana usa la forma romanizzata registrata del nome. Un documento già emesso mantiene i dati validi al momento della creazione; le modifiche successive si applicano soltanto ai nuovi documenti.
- Ogni ricarica pagata e ogni mese concluso possono essere documentati una volta. Se il documento esiste già, scaricalo invece di emetterne un altro.
- Per correggere dati errati, scegli Riemetti: il vecchio documento viene contrassegnato come annullato e una sostituzione con un nuovo numero copre la stessa voce. Usa Annulla senza sostituire soltanto quando un documento riguarda la ricarica o il mese sbagliati.
- Gli estratti conto, più in basso nella stessa pagina, sono un'altra cosa: una fotografia mensile fissa di tutti i movimenti del saldo, per la tua contabilità. Non sono ricevute né documenti fiscali.
L'imposta è indicata come zero: siamo un fornitore statunitense, non riscuotiamo né versiamo VAT, GST o imposte sulle vendite per tuo conto, e ogni documento include una nota di inversione contabile. Resta quindi a tuo carico contabilizzare le eventuali imposte dovute nel tuo paese. Una fattura emessa non viene mai modificata: viene annullata e riemessa, registrando la motivazione e il documento sostitutivo.
Unità di fatturazione
Ogni modello ha esattamente una unità di fatturazione.
| Unità | Significato | Campo input che fornisce la quantità |
|---|---|---|
per_image | Per immagine generata | Il campo dichiarato dal modello; il valore predefinito è 1 |
per_second | Per secondo di output. Alcuni endpoint arrotondano la durata a un blocco intero superiore; consulta Durata fatturata a blocchi interi | Leggi il quantityField e lo schema correnti; il campo standard per la durata è duration_seconds. Non presumere che omettere la durata selezioni il livello più breve. |
per_request | Per chiamata, indipendentemente dai parametri | — |
per_1k_tokens | Per token. L'unità API è per_1k_tokens; il sito e price.perMillionTokens nel catalogo mostrano gli stessi prezzi per milione di token. Input, input in cache, scritture in cache e output possono avere prezzi distinti | — |
Non devi indovinare il nome: quantityField sull'endpoint del catalogo lo indica per ogni modello; una stringa vuota significa un'unità per chiamata.
Un modello può avere prezzi diversi per livelli differenti. Risoluzione, durata, opzioni audio e contenuti di riferimento possono influire sul preventivo, a seconda dello schema. pricing[].variant identifica un livello del listino; nel corpo della richiesta non esiste un campo variant. Non presumere che quell'etichetta possa sempre essere inviata come resolution, né calcolare ogni modello moltiplicando il prezzo iniziale per la durata. Invia l'input completo a jobs/quote per ottenere la stima esatta e il limite massimo dell'addebito.
Leggi sempre quantità e prezzo dal catalogo corrente
Non fissare nel codice un campo quantità valido per un'intera categoria di modelli. Un quantityField vuoto indica un'unità di fatturazione per chiamata; altrimenti leggi la quantità stimata dal campo di input indicato. Livelli, valori predefiniti e comportamento di fatturazione dei modelli possono cambiare insieme al catalogo. L'addebito è limitato all'importo riservato quando l'attività è stata accettata: i fondi inutilizzati vengono liberati e non viene riscosso successivamente alcun importo oltre la riserva.
Durata fatturata a blocchi interi
La maggior parte dei modelli per_second fattura la durata esatta prodotta. Alcuni usano invece blocchi fissi: la durata misurata viene arrotondata per eccesso al blocco intero successivo prima di calcolare il prezzo. Con un blocco di 8 secondi, una clip di 6 secondi e una di 8 costano uguale, mentre una clip di 9 secondi costa due blocchi. Non è il comportamento di tutti i modelli fatturati al secondo: si applica soltanto agli endpoint che lo dichiarano, ciascuno nella propria pagina.
Questi endpoint hanno un'altra caratteristica comune, che rende l'arrotondamento visibile nel preventivo: ricavano la durata da un video fornito da te, invece che da un valore duration_seconds scelto da te. Nessuno sa quindi quanto durerà il risultato prima di leggere la clip. Il loro quantityField è vuoto, perciò l'importo preventivato prima dell'invio rappresenta il caso massimo: la clip più lunga accettata dall'endpoint:
{
"estimatedCost": "0.96",
"maxCharge": "0.96",
"quantity": "32",
"unit": "per_second"
}Gli importi sono illustrativi; quantity è qui un tetto in secondi, non una misurazione. L'importo preventivato è quello riservato; l'addebito finale viene calcolato sulla durata arrotondata e non supera mai la riserva. La differenza viene liberata al regolamento dell'attività, come nelle tre fasi descritte sopra.
Vedrai una riserva superiore all'addebito finale
È il comportamento previsto di questi endpoint, non un sovrapprezzo. Tra l'accettazione e il regolamento, il saldo mostra il tetto riservato perché, finché la clip non viene letta, nessuno conosce la durata del risultato. Al regolamento paghi la durata reale arrotondata per eccesso al blocco, e la differenza torna automaticamente disponibile. Il registro contiene entrambi i movimenti, quindi hold e settle possono sempre essere confrontati.
Ne derivano due aspetti da considerare nella pianificazione:
- Calcola il budget sul preventivo, non sulla tua clip. Fino al regolamento dell'attività, il denaro accantonato corrisponde al tetto e conta ai fini dei limiti di spesa come qualsiasi altra riserva.
- Anche una clip breve costa un blocco intero. Ridurre la durata da 9 a 8 secondi può dimezzare il prezzo di un endpoint con blocchi da 8 secondi; ridurla da 8 a 5 non cambia nulla.
Unità e prezzi esatti sono nella pagina dei prezzi e nella pagina di ciascun modello.
Sconti e promozioni per i clienti
Le offerte possono applicarsi a tutti o a un solo account, su tutti i modelli o soltanto su quelli selezionati. Le offerte continuative restano valide fino alla disattivazione; quelle a tempo si applicano soltanto tra l'inizio e la fine effettivi. I prezzi riservati a un account si applicano quando quell'account accede o richiede un preventivo con la propria chiave API, e non vengono mai pubblicati come prezzo di un altro cliente.
Le offerte non si cumulano. Si applica automaticamente il prezzo più basso a cui hai diritto. Su un addebito standard di $10, un'offerta pubblica del 10% e uno sconto dell'account del 20% producono un prezzo di $8, non un prezzo composto di $7.20. Quando un'offerta termina o viene disattivata, i nuovi preventivi usano la migliore offerta ancora valida per te oppure il prezzo standard se non ne resta nessuna.
Le offerte in homepage, nel catalogo e nelle pagine dei modelli aiutano a confrontare le opzioni. Ottieni la stima effettiva da jobs/quote con la tua identità, il modello e gli input completi. Un conto alla rovescia non riserva un prezzo: aggiorna il preventivo quando cambia un'offerta, un input o un prezzo. Le attività accettate mantengono il prezzo fissato anche se l'offerta termina durante l'esecuzione, e l'addebito finale non può superare l'importo riservato all'accettazione.
Le offerte si applicano automaticamente ai costi di utilizzo dell'API, non all'importo della ricarica, e non prevedono cashback sulle ricariche. Gli esempi di budget giornaliero o mensile proiettano il prezzo corrente; un'offerta a tempo può terminare prima del periodo del budget, quindi controlla anche la sua scadenza.
Fondi promozionali e linee di credito
GET /api/v1/chat/credit mantiene available, held e total e può includere un dettaglio funding. Le risposte meno recenti possono omettere funding; un dato mancante non significa zero. Usa client.getBalance() nell'SDK oppure spicyapi balance --json nella CLI.
funding.prepaidAvailableUsdcontiene i fondi disponibili prepagati o preesistenti senza restrizioni;grantAvailableUsdsomma i contributi attualmente attivi. Ogni voce ingrantsriporta importi assegnati, disponibili, riservati e spesi, stato, inizio, scadenza emodelSlugs. Un elenco di modelli vuoto significa tutti i modelli; altrimenti il contributo finanzia soltanto quelli elencati. L'elenco contiene fino a 100 contributi, dando priorità a quelli con saldo residuo o riservato e poi ordinandoli dal più recente.grantsHasMoresegnala ulteriori record. Non sostituire il totale dell'account con il subtotale dell'elenco visibile.funding.creditdescrive una linea approvata con pagamento differito.limitUsdè il tetto,availableUsdè il credito idoneo non utilizzato,usedUsdè il capitale già contabilizzato e ancora da rimborsare,heldUsdè riservato per le attività accettate edexpiresAtè la scadenza. Il limite di credito non è una ricarica, un contributo o un saldo in denaro. Scadenza, disattivazione o superamento del limite restringono le nuove richieste; il debito esistente resta dovuto.- I fondi promozionali non possono essere prelevati. Gli sconti determinano il prezzo della richiesta; contributi e credito determinano come viene finanziato quel prezzo. Un contributo non riduce il listino del modello. Si applicano il suo ambito di modelli e la sua validità, e gli importi inutilizzati possono scadere o essere revocati. Attività fallite e riserve inutilizzate restituiscono i fondi alla fonte originaria; questo non riattiva un contributo scaduto o revocato.
- Un
funding.cashShortfallUsdpositivo indica una carenza derivante dal recupero di un pagamento esterno. Contributi e credito non possono coprirla; le nuove chiamate restano bloccate finché non viene coperta. Unavailablenegativo può invece riflettere l'utilizzo di credito approvato. Non dedurre un rifiuto dal suo segno e non sommarlo direttamente al limite di credito. Il server verifica fonti di finanziamento, idoneità del modello, validità e limiti di spesa per accettare una richiesta.
Gli importi restano stringhe decimali esatte in USD e le date usano RFC3339. Indica il fuso orario quando mostri le date. La pagina di fatturazione della console mostra il dettaglio di fondi e contributi; le modifiche diventano effettive soltanto dopo l'approvazione manuale di un amministratore. Per informazioni su contributi o linee di credito, apri una conversazione in Assistenza nella console oppure scrivi a support@spicyapi.ai. L'API pubblica non offre operazioni di scrittura per aumentare autonomamente la tua disponibilità o assegnare contributi.
Utilizzo della chiave API corrente
Per un grafico della spesa giornaliera e per modello dell'intero account o di un team, usa Fatturazione → Utilizzo nella console. L'endpoint API seguente riporta soltanto i dati della chiave che lo chiama:
curl 'https://api.spicyapi.ai/api/v1/usage?from=2026-09-01&to=2026-09-06' \
-H "Authorization: Bearer $SPICY_API_KEY"Le date usano UTC e l'intervallo [from,to), quindi questo esempio include il periodo dal 1 al 5 settembre. Ometti le date per ottenere gli ultimi sette giorni, incluso oggi; l'intervallo massimo è di 92 giorni. I risultati appartengono soltanto alla chiave API corrente. Non esiste un parametro per un'altra chiave o per un report dell'intero account; usa chat/credit per il saldo del portafoglio.
data.totalCalls conta tutte le attività; data.totalSpend include soltanto gli addebiti regolati. days e models raggruppano le stesse attività per data di creazione e modello, con stringhe decimali esatte in USD. Le riserve in attesa sono escluse e un regolamento tardivo può aggiornare date precedenti. La cronologia delle attività nascosta resta inclusa; le date senza chiamate sono omesse. Non sommare i due raggruppamenti.
Usa client.getUsage({ from, to }) nell'SDK oppure spicyapi usage --from 2026-09-01 --to 2026-09-06 nella CLI. Questo endpoint ha un proprio limite di frequenza, più restrittivo: consulta Limiti di frequenza.
n8n
Usa i modelli di immagini, video, audio e chat di SpicyAPI nei workflow di n8n. Installa il community node, importa i template HTTP Request, oppure punta la credenziale OpenAI di n8n a SpicyAPI per i nodi AI Agent.
Console e team
Che cosa fa ogni pagina della console di SpicyAPI e quando usarla, e come i team condividono chiavi API e limiti di spesa mentre paga il proprietario del team.

