Costruisci un portale per rivenditori API AI: provisioning dei tenant, misurazione dell'utilizzo, fatturazione e operazioni di Telegram
Un'architettura di riferimento pratica per agenzie, consulenti e costruttori SaaS che racchiude l'accesso API AI per i clienti: record del tenant, chiavi con ambito cliente, limiti di spesa, registri di utilizzo, sincronizzazione della fatturazione e operazioni di Telegram.
Se offri l'accesso all'IA ai clienti, non consegnare loro le chiavi del provider upstream. Crea un livello di rivenditore che emetta chiavi con ambito cliente, applichi i limiti del tenant prima di ogni richiesta, registri l'utilizzo nel tuo registro e sincronizzi i totali fatturabili con il tuo sistema di fatturazione.
Questa guida descrive un modello operativo pratico per un'API AI per agenzie, consulenti e sviluppatori SaaS. Non è un caso di studio del cliente. Si tratta di un'architettura di riferimento che puoi adattare se utilizzi un'API partner, un gateway interno o un proxy personalizzato per più fornitori di modelli.
L'architettura del portale rivenditori
Un portale per rivenditori sicuro separa quattro responsabilità:
- Amministrazione dei partner: la tua app interna per la creazione di clienti, piani, chiavi, limiti e flussi di lavoro di supporto.
- Richiedi applicazione: il percorso del gateway che autentica le chiavi del cliente, controlla le policy, instrada le richieste e blocca il traffico che supera i limiti.
- Contabilità dell'utilizzo: un registro durevole che registra l'utilizzo a livello di richiesta e gli input sui prezzi.
- Fatturazione e operazioni: sincronizzazione pianificata delle fatture, avvisi, avvisi di rotazione delle chiavi ed escalation del supporto.
Un flusso tipico è simile al seguente:
App di amministrazione partner
→API partner
→ record cliente/area di lavoro
→ chiavi API con ambito cliente
→ piano, modello, budget e limiti di tariffa
→ richiesta gateway
→ registro consumi
→ sincronizzazione della fatturazione
→ Bot di notifica di Telegram
Fatto: OpenAI consiglia di non condividere le chiavi API basate sull'utente per la collaborazione e di utilizzare invece chiavi basate su progetto, membri assegnati e chiavi distinte con limiti di frequenza isolati e controlli di spesa. I termini dei servizi di OpenAI vietano inoltre l'acquisto, la vendita o il trasferimento di chiavi API a o da terze parti. Questi fatti supportano un progetto di rivenditore in cui le credenziali upstream rimangono lato server e i clienti ricevono le tue chiavi downstream.
Raccomandazione: rilascia una chiave downstream per cliente, progetto o ambiente. Non riutilizzare una chiave cliente su più client finali. Non esporre le credenziali del fornitore upstream nella documentazione, nel codice del browser, nelle app mobili, nei log o nei messaggi di supporto del client.
Modello dati tenant
Il modello tenant dovrebbe rendere esplicito l'isolamento. Come minimo, memorizza questi campi:
part_id
cliente_id
workspace_id
api_key_id
plan_id
stato_fatturazione
limite_di_spesa
tasso_limit
modelli_permessi
telegram_chat_id
utilizzo_ledger_id
creato_a
aggiornato_at
revocato_at
In un portale più grande, aggiungi campi per saldo prepagato, valuta, regione fiscale, ID cliente fattura, livello di supporto, stato di abuso e sostituzioni temporanee.
Esempio di record cliente
{ "partner_id": "partner_123", "customer_id": "cust_acme", "workspace_id": "ws_prod", "plan_id": "crescita_api", "billing_status": "attivo", "limite_di_spesa": { "periodo": "mese", "hard_cap_usd": 500, "soglie_avviso": [0,5, 0,8, 0,95] }, "limite_tariffa": { "richieste_per_minuto": 120, "tokens_per_day": 2000000 }, "allowed_models": ["chat veloce", "ragionamento-standard"], "telegram_chat_id": "-1001234567890", "usage_ledger_id": "ledger_cust_acme" }
Consiglio: tratta customer_id, workspace_id e api_key_id come concetti separati. Un cliente può avere più aree di lavoro e ciascuna area di lavoro potrebbe richiedere chiavi di produzione, gestione temporanea e sviluppo separate. Ciò semplifica notevolmente la revoca, il debug e l'attribuzione dell'utilizzo.
Sequenza di onboarding per un nuovo cliente
Un flusso di onboarding affidabile è noioso per definizione. Dovrebbe produrre ogni volta gli stessi record e lasciare una traccia di controllo.
- Crea il cliente: memorizza il nome legale, il contatto per la fatturazione, il contatto tecnico e il proprietario interno.
- Crea uno spazio di lavoro: separa la produzione dai test se il cliente integrerà in modo programmatico.
- Assegna un piano: definisci i modelli inclusi, il markup, la cadenza di fatturazione e le aspettative di supporto.
- Imposta limiti: configura limiti di spesa, limiti di richiesta, limiti di token e policy di burst.
- Crea chiavi API: rilascia chiavi con ambito per gli ambienti del cliente.
- Invia istruzioni di integrazione: fornisci URL di base, formato di autenticazione, elenco di modelli, limiti e canale di supporto.
- Abilita avvisi: collega Telegram o un altro canale operativo per avvisi di saldo insufficiente, chiavi, interruzioni e fatturazione.
- Esegui una richiesta di prova: verifica l'autenticazione, la registrazione dell'utilizzo, l'accesso al modello e la mappatura delle fatture.
Raccomandazione: rendi idempotente l'onboarding. Se la tua app di amministrazione ritenta un'operazione di "creazione cliente", non dovrebbe creare record di fatturazione duplicati o chiavi API duplicate. Utilizza ID esterni e chiavi di idempotenza per il provisioning delle chiamate.
Controllo del budget al momento della richiesta
L'applicazione più importante avviene prima che la richiesta raggiunga un modello a monte. Il tuo gateway non dovrebbe scoprire che un cliente ha superato il budget solo dopo che il fornitore ti ha già addebitato.
Utilizza questa sequenza di verifica preliminare:
- Autentica la chiave API downstream.
- Risolvi
partner_id,customer_ideworkspace_id. - Verifica se la chiave è attiva e non revocata.
- Controlla lo stato della fatturazione: attivo, in prova, prepagato, in pausa, scaduto o sospeso.
- Controlla il limite di spesa rigido per il periodo di fatturazione corrente.
- Controlla i limiti di velocità, come richieste al minuto e token al giorno.
- Verifica se il modello richiesto è consentito per il piano del cliente.
- Stima il costo massimo possibile in base al modello, ai token massimi e ai parametri della richiesta.
- Instrada la richiesta solo se la policy viene accettata.
se chiave.revocata:
rifiuta(401, "Chiave API revocata")
se customer.billing_status in ["paused", "suspended", "in ritardo"]:
rifiuta(402, "Lo stato di fatturazione non consente l'utilizzo")
se request_model non è in customer.allowed_models:
rifiuto(403, "Modello non abilitato per questo spazio di lavoro")
se spesa_periodo_corrente + costo_max_stimato > cliente.hard_cap:
rifiuta(402, "Limite di spesa superato")
se rate_limit_exceeded(customer_id, request_model):
rifiutare(429, "Limite di velocità superato")
route_request()
Fatto: OWASP API Security Top 10 2023 individua l'autorizzazione degli oggetti non funzionanti, l'autenticazione non funzionante e il consumo illimitato di risorse come i principali rischi API. Questi vengono associati direttamente ai portali dei rivenditori: un tenant non deve leggere i dati di un altro tenant, le chiavi non devono essere aggirabili e un cliente non deve essere in grado di creare una spesa illimitata per il fornitore.
Compromesso: limiti rigorosi proteggono il tuo margine, ma possono interrompere picchi legittimi. Un buon compromesso è un flusso di lavoro con sostituzione temporanea con data di scadenza, approvatore, motivo e voce del registro di controllo.
Registro di utilizzo come fonte di verità
Per il controllo degli accessi in tempo reale, tieni il tuo registro di utilizzo. Gli strumenti di fatturazione esterna sono eccellenti per la fatturazione, ma in genere non sono il luogo adatto per prendere decisioni di autorizzazione o rifiuto a livello di millisecondi.
Un evento di utilizzo dovrebbe acquisire dettagli sufficienti per riconciliare le fatture del fornitore, spiegare le fatture dei clienti ed eseguire il debug delle controversie:
{ "request_id": "req_01J...", "idempotenza_key": "idem_abc123", "partner_id": "partner_123", "customer_id": "cust_acme", "workspace_id": "ws_prod", "api_key_id": "key_live_789", "modello": "standard di ragionamento", "input_tokens": 1850, "output_tokens": 420, "cached_tokens": 1200, "costo_fornitore": 0,0142, "prezzo_rivenditore": 0,0230, "valuta": "USD", "timestamp": "2026-08-02T10:15:30Z", "status": "riuscito" }
Registra anche le richieste non riuscite, ma distingui gli errori fatturabili da quelli che non lo sono. Timeout dei fornitori, errori di convalida, cancellazioni di clienti, nuovi tentativi e blocchi di sicurezza possono avere risultati contabili diversi a seconda di quando si verificano.
Raccomandazione: scrivi un evento del registro in sospeso quando la richiesta viene accettata, quindi finalizzalo quando l'utilizzo e il costo del token sono noti. Ciò ti consente di prenotare il budget prima di instradarlo e quindi correggere l'importo finale dopo il completamento.
Modello di riconciliazione
- Archivia gli eventi a livello di richiesta nel registro interno.
- Utilizzo aggregato per cliente, modello e periodo di fatturazione.
- Confronta i totali interni con le fatture del fornitore a monte o le esportazioni di utilizzo.
- Investigare sulle differenze sostanziali prima di emettere fatture.
- Sincronizza l'utilizzo fatturabile riepilogativo nel sistema di fatturazione.
Compromesso: la sincronizzazione dell'utilizzo riepilogativo riduce il volume e la complessità degli eventi di fatturazione, ma può rendere le fatture dei clienti meno dettagliate. Se i clienti necessitano di report a livello di modello o di progetto, conserva tali dimensioni nella sincronizzazione della fatturazione o nella dashboard del cliente.
Sincronizzazione della fatturazione con contatori basati sull'utilizzo
I sistemi di fatturazione basati sull'utilizzo generalmente seguono uno schema: definiscono prodotti e prezzi, acquisiscono eventi di utilizzo, li aggregano in un periodo di fatturazione, generano fatture e monitorano gli errori. Stripe Billing, ad esempio, supporta gli eventi del contatore con un nome evento, un identificatore del cliente, un valore numerico, un timestamp opzionale, un identificatore di idempotenza opzionale e dimensioni opzionali.
Per la fatturazione API AI, le scelte comuni dei contatori sono:
- Totale token: utile quando il prezzo è strettamente legato ai token di input e output.
- Conteggio richieste: utile per piani semplici o chiamate API a basso token.
- Unità specifiche per modello: utile quando i modelli premium hanno margini diversi.
- Postazioni o spazi di lavoro attivi: utili per piani di utilizzo ibridi SaaS plus.
Fatto: i misuratori di stripe supportano formule di aggregazione come somma, conteggio e ultimo. Questi si associano ai totali dei token, ai conteggi delle richieste e ai valori simili allo stato come posti o limiti attivi.
Una sincronizzazione della fatturazione giornaliera potrebbe creare eventi di misurazione come questi:
{ "event_name": "ai_tokens_used", "cliente": "stripe_customer_456", "valore": 2270000, "timestamp": "2026-08-02T23:59:00Z", "idempotency_key": "cust_acme_2026-08-02_tokens", "dimensioni": { "piano": "crescita_api", "model_family": "standard" } }
Raccomandazione: mantieni la contabilità interna più granulare rispetto alla fattura. Puoi fatturare i totali giornalieri dei token conservando comunque i record a livello di richiesta per supporto, revisione delle frodi, ottimizzazione dei limiti di tariffa e analisi dei margini.
Operazioni di Telegram senza rendere Telegram il sistema di registrazione
Telegram è utile per flussi di lavoro rapidi degli operatori: i team di supporto notano già i messaggi, i bot possono inviare avvisi e i clienti possono ricevere istruzioni per l'onboarding senza accedere a una dashboard. Ma Telegram non dovrebbe essere l'unica traccia di controllo per le decisioni su fatturazione, sicurezza o supporto.
I buoni flussi di lavoro di Telegram includono:
- Avvisi di saldo basso o spesa elevata al 50%, 80% e 95% del limite.
- Messaggi di onboarding dei nuovi clienti con collegamenti alla documentazione e nomi di chiavi mascherate.
- Avvisi sulla rotazione della chiave API prima e dopo la rotazione.
- Avvisi di interruzione del provider o di modello degradato.
- Riassegnamento del supporto umano quando un cliente riscontra ripetuti errori 401, 402, 403 o 429.
Fatto: le chiamate API Bot di Telegram vengono effettuate tramite HTTPS agli endpoint del token bot e i webhook di Telegram possono includere un'intestazione del token segreta per aiutare a verificare l'origine del webhook.
Raccomandazione: archivia gli ID chat di Telegram come metadati del tenant, ma non esporli ai clienti. Registra ogni azione amministrativa attivata dal bot nel tuo registro di controllo interno con attore, timestamp, cliente, vecchio valore, nuovo valore e motivo.
Elenco di controllo per la sicurezza e l'isolamento
Prima di vendere l'accesso, testa l'isolamento del tenant come se un cliente stesse cercando attivamente di oltrepassare i confini.
- Il cliente A non può visualizzare le chiavi API del cliente B.
- Il cliente A non può visualizzare l'utilizzo, le fatture, i limiti, gli ID chat di Telegram o lo stato della fatturazione del cliente B.
- Una chiave revocata fallisce immediatamente su tutti i percorsi di richiesta.
- Un cliente con fatturazione in pausa non può continuare a spendere tramite sessioni memorizzate nella cache o vecchie chiavi.
- Un cliente non può richiedere modelli al di fuori del piano assegnato.
- I limiti tariffari si applicano in base al cliente e all'area di lavoro, non solo all'indirizzo IP globale.
- I gestori webhook verificano le firme o le intestazioni segrete ove supportato.
- Tutti i provisioning, le modifiche dei limiti, le rotazioni delle chiavi e le sostituzioni della fatturazione creano voci del log di controllo.
- La logica dei nuovi tentativi utilizza chiavi di idempotenza in modo che le richieste duplicate non fatturino due volte i clienti.
- Gli strumenti di supporto mascherano i segreti e limitano chi può rivelare o ruotare le chiavi.
Previsione: i portali dei rivenditori competeranno sempre più sulla governance e sulla chiarezza della fatturazione, non solo sull'accesso a molti modelli. I clienti si aspetteranno l'utilizzo per progetto, fatture chiare, rotazione rapida delle chiavi e controlli della spesa sostenuta come funzionalità standard.
Compromessi chiave da decidere in anticipo
Prepagato o postpagato
I saldi prepagati riducono il rischio di credito e rendono semplici le interruzioni definitive, ma i clienti potrebbero non gradire le interruzioni. La fatturazione posticipata è più semplice per i clienti consolidati, ma richiede controlli del credito, flussi di lavoro di sollecito e un rilevamento più efficace delle anomalie.
Un prezzo misto rispetto a prezzi specifici per modello
Un prezzo misto è più facile da spiegare. I prezzi specifici per modello proteggono i margini e incoraggiano una selezione efficiente del modello. Se offri molti modelli, pubblica un semplice catalogo di modelli rivolto al cliente e nascondi le complessità non necessarie specifiche del fornitore.
Misurazione in tempo reale rispetto a fatturazione ritardata
La misurazione in tempo reale consente limiti di spesa e saldi prepagati. Richiede inoltre scritture durevoli, gestione delle riproduzioni e riconciliazione. La fatturazione ritardata è più semplice, ma ti espone a spese incontrollate prima che i limiti entrino in vigore.
Supporto prioritario per Telegram e supporto prioritario per dashboard
Telegram è veloce e familiare a molti operatori. Un dashboard è migliore per la verificabilità, le esportazioni, le autorizzazioni e il self-service del cliente. Usa Telegram per notifiche e approvazioni, ma archivia il record canonico nel tuo sistema.
Piano di implementazione attuabile
- Inizia con l'isolamento del tenant: implementa i record relativi a cliente, area di lavoro, chiave, piano e limite prima di aggiungere funzionalità di fatturazione avanzate.
- Crea un'applicazione preliminare: blocca le chiavi revocate, la fatturazione sospesa, i modelli non consentiti e il traffico con limite eccessivo prima del routing.
- Crea il registro di utilizzo: registra ID di richiesta, conteggi di token, costi, prezzi di rivenditore, stati, timestamp e chiavi di idempotenza.
- Aggiungi riconciliazione: confronta l'utilizzo interno con i totali del fornitore a monte prima della fatturazione.
- Sincronizza i riepiloghi di fatturazione: invia aggregati giornalieri o orari alla tua piattaforma di fatturazione con mappature dei clienti stabili e chiavi di idempotenza.
- Avvisi di Wire Telegram: iniziano con messaggi di saldo basso, interruzione, rotazione delle chiavi e escalation del supporto.
- Esegui test di isolamento: verifica che nessun cliente possa accedere alle chiavi, all'utilizzo, ai limiti, alle fatture o ai metadati della chat di un altro cliente.
Un portale per rivenditori non è solo un involucro attorno a un'API AI. Si tratta di un livello operativo per l'autenticazione, la politica del tenant, l'analisi dell'utilizzo, la fatturazione e il supporto. Crea innanzitutto il registro e i limiti, mantieni le chiavi upstream sul lato server e rendi ogni chiave rivolta al cliente revocabile, con ambito e attribuibile.