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'AI API 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 partner API, 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 i criteri, 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 programmata delle fatture, avvisi, avvisi di rotazione delle chiavi ed escalation del supporto.
Un flusso tipico è simile al seguente:
Partner Admin App
→ Partner API
→ customer / workspace records
→ customer-scoped API keys
→ plan, model, budget, and rate limits
→ request gateway
→ usage ledger
→ billing sync
→ Telegram notification bot
Fatto: OpenAI consiglia di non condividere 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 e controlli di spesa isolati. 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 la progettazione del 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 originale nella documentazione, nel codice del browser, nelle app per dispositivi mobili, nei log o nei messaggi di assistenza del client.
Modello dati tenant
Il modello di tenant deve rendere esplicito l'isolamento. Come minimo, memorizza questi campi:
partner_id
customer_id
workspace_id
api_key_id
plan_id
billing_status
spend_limit
rate_limit
allowed_models
telegram_chat_id
usage_ledger_id
created_at
updated_at
revoked_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": "growth_api",
"billing_status": "active",
"spend_limit": {
"period": "month",
"hard_cap_usd": 500,
"alert_thresholds": [0.5, 0.8, 0.95]
},
"rate_limit": {
"requests_per_minute": 120,
"tokens_per_day": 2000000
},
"allowed_models": ["fast-chat", "reasoning-standard"],
"telegram_chat_id": "-1001234567890",
"usage_ledger_id": "ledger_cust_acme"
}
Raccomandazione: 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 criteri di burst.
- Crea API chiavi: 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: connetti 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 l'onboarding idempotente. Se l'app di amministrazione tenta nuovamente un'operazione di "crea 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.
- Verifica il limite di spesa rigido per il periodo di fatturazione corrente.
- Verifica i limiti di velocità, ad esempio 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, al numero massimo di token e ai parametri della richiesta.
- Instrada la richiesta solo se la policy viene accettata.
if key.revoked:
reject(401, "API key revoked")
if customer.billing_status in ["paused", "suspended", "overdue"]:
reject(402, "Billing status does not allow usage")
if requested_model not in customer.allowed_models:
reject(403, "Model not enabled for this workspace")
if current_period_spend + estimated_max_cost > customer.hard_cap:
reject(402, "Spend limit exceeded")
if rate_limit_exceeded(customer_id, requested_model):
reject(429, "Rate limit exceeded")
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 API rischi. 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 rigidi rigidi proteggono il tuo margine, ma possono interrompere picchi legittimi. Un buon compromesso è un flusso di lavoro di sostituzione temporanea con data di scadenza, approvatore, motivo e voce del log di controllo.
Il 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 di solito non sono il posto giusto 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 del cliente ed eseguire il debug delle controversie:
{
"request_id": "req_01J...",
"idempotency_key": "idem_abc123",
"partner_id": "partner_123",
"customer_id": "cust_acme",
"workspace_id": "ws_prod",
"api_key_id": "key_live_789",
"model": "reasoning-standard",
"input_tokens": 1850,
"output_tokens": 420,
"cached_tokens": 1200,
"provider_cost": 0.0142,
"reseller_price": 0.0230,
"currency": "USD",
"timestamp": "2026-08-02T10:15:30Z",
"status": "succeeded"
}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 riservare il budget prima di instradarlo e quindi correggere l'importo finale dopo il completamento.
Modello di riconciliazione
- Memorizza 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.
- Investiga 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, importano 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 facoltativo, un identificatore di idempotenza facoltativo e dimensioni facoltative.
Per la fatturazione AI API, le scelte comuni relative ai contatori sono:
- Totale token: utile quando il prezzo è strettamente legato ai token di input e output.
- Conteggio richieste: utile per piani semplici o API chiamate 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 stripe supportano formule di aggregazione come somma, conteggio e ultimo. Questi vengono associati ai totali dei token, ai conteggi delle richieste e ai valori simili allo stato come i posti o i limiti attivi.
Una sincronizzazione della fatturazione giornaliera potrebbe creare eventi di misurazione come questi:
{
"event_name": "ai_tokens_used",
"customer": "stripe_customer_456",
"value": 2270000,
"timestamp": "2026-08-02T23:59:00Z",
"idempotency_key": "cust_acme_2026-08-02_tokens",
"dimensions": {
"plan": "growth_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.
Telegram operazioni 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'unico audit trail per decisioni su fatturazione, sicurezza o supporto.
Buoni Telegram flussi di lavoro includono:
- Avvisi di saldo basso o di spesa elevata al 50%, 80% e 95% del limite.
- Messaggi di onboarding dei nuovi clienti con collegamenti alla documentazione e nomi di chiavi mascherate.
- API-avvisi di rotazione dei tasti prima e dopo la rotazione.
- Avvisi di interruzione del provider o di modello degradato.
- Riasssione dell'assistenza umana quando un cliente riscontra ripetuti errori 401, 402, 403 o 429.
Fatto: Telegram Le chiamate al bot API vengono effettuate su HTTPS agli endpoint del token bot e i Telegram webhook possono includere un'intestazione del token segreto per facilitare la verifica dell'origine del webhook.
Raccomandazione: memorizza Telegram ID chat come metadati del tenant, ma non esporli a tutti i clienti. Registra ogni azione amministrativa attivata dal bot nel 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 Telegram ID chat o lo stato della fatturazione del cliente B.
- Una chiave revocata fallisce immediatamente su tutti i percorsi delle richieste.
- 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 ai 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 fissa come funzionalità standard.
Compromessi chiave da decidere in anticipo
Prepagato e 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 abituali, ma richiede controlli del credito, flussi di lavoro di sollecito e un rilevamento più efficace delle anomalie.
Un prezzo misto rispetto ai prezzi specifici del 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 e 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 eccessive prima che i limiti entrino in vigore.
Telegram-primo supporto rispetto al supporto basato sulla dashboard
Telegram è veloce e familiare per molti operatori. Un dashboard è migliore per la verificabilità, le esportazioni, le autorizzazioni e il self-service del cliente. Utilizza 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 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 che supera i limiti 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 via cavo Telegram: iniziano con messaggi di saldo insufficiente, interruzione, rotazione delle chiavi e riassegnazione 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 rivenditori non è solo un involucro attorno a un'intelligenza artificiale API. 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 lato server e rendi ogni chiave rivolta al cliente revocabile, con ambito e attribuibile.