Bygg en AI API-forhandlerportal: leietakerprovisjonering, bruksmåling, fakturering og telegramoperasjoner
En praktisk referansearkitektur for byråer, konsulenter og SaaS-byggere som pakker AI API-tilgang for kunder: leietakerposter, kundedefinerte nøkler, forbruksgrenser, bruksreskontro, faktureringssynkronisering og Telegram-operasjoner.
Hvis du pakker AI-tilgang for klienter, ikke gi dem oppstrømsleverandørnøklene. Bygg et forhandlerlag som utsteder nøkler med kundeomfang, håndhever leietakergrenser før hver forespørsel, registrerer bruk i din egen hovedbok og synkroniserer fakturerbare totaler til faktureringssystemet ditt.
Denne veiledningen beskriver en praktisk driftsmodell for et AI API for byråer, konsulenter og SaaS-byggere. Det er ikke en kundecasestudie. Det er en referansearkitektur du kan tilpasse enten du bruker en Partner API, en intern gateway eller en tilpasset proxy foran flere modellleverandører.
Forhandlerportalarkitekturen
En sikker forhandlerportal skiller fire ansvarsområder:
- Partneradministrasjon: din interne app for å lage kunder, planer, nøkler, grenser og støttearbeidsflyter.
- Forespørselshåndhevelse: gatewaybanen som autentiserer kundenøkler, sjekker retningslinjer, ruter forespørsler og blokkerer overbegrenset trafikk.
- Bruksregnskap: en holdbar hovedbok som registrerer bruk og prisinndata på forespørselsnivå.
- Fakturering og drift: planlagt fakturasynkronisering, varsler, varsler om nøkkelrotasjon og støtteeskalering.
En typisk flyt ser slik ut:
Partner Admin App
→ Partner API
→ kunde-/arbeidsområdeoppføringer
→ kundedefinerte API-nøkler
→ plan-, modell-, budsjett- og takstgrenser
→ be om gateway
→ bruksreskontro
→ faktureringssynkronisering
→ Telegramvarslingsbot
Fakta: OpenAI anbefaler ikke å dele brukerbaserte API-nøkler for samarbeid og i stedet bruke prosjektbaserte nøkler, tildelte medlemmer og distinkte nøkler med isolerte satsgrenser og forbrukskontroller. OpenAIs tjenestevilkår forbyr også kjøp, salg eller overføring av API-nøkler til eller fra en tredjepart. Disse fakta støtter et forhandlerdesign der oppstrømslegitimasjonen forblir serversiden og kundene mottar dine egne nedstrømsnøkler.
Anbefaling: utsted én nedstrømsnøkkel per kunde, prosjekt eller miljø. Ikke bruk én kundenøkkel på nytt på tvers av flere sluttkunder. Ikke utsett oppstrømsleverandørlegitimasjon i dokumentasjon, nettleserkode, mobilapper, logger eller klientstøttemeldinger.
Leietakerdatamodell
Leietakermodellen bør gjøre isolasjon eksplisitt. Lagre minimum disse feltene:
partner_id
kunde_id
workspace_id
api_key_id
plan_id
faktureringsstatus
spend_limit
rate_limit
tillatte_modeller
telegram_chat_id
usage_ledger_id
opprettet_at
oppdatert_kl
revoked_at
I en større portal legger du til felt for forhåndsbetalt saldo, valuta, avgiftsregion, fakturakunde-ID, støttenivå, misbruksstatus og midlertidige overstyringer.
Eksempel på kundeoppføring
{
"partner_id": "partner_123",
"customer_id": "cust_acme",
"workspace_id": "ws_prod",
"plan_id": "vekst_api",
"billing_status": "aktiv",
"spend_limit": {
"period": "måned",
"hard_cap_usd": 500,
"alert_thresholds": [0.5, 0.8, 0.95]
},
"rate_limit": {
"requests_per_minute": 120,
"tokens_per_day": 2000000
},
"allowed_models": ["rask-chat", "reasoning-standard"],
"telegram_chat_id": "-1001234567890",
"usage_ledger_id": "ledger_cust_acme"
}
Anbefaling: behandle customer_id, workspace_id og api_key_id som separate konsepter. En kunde kan ha flere arbeidsområder, og hvert arbeidsområde kan trenge separate produksjons-, iscenesettelses- og utviklingsnøkler. Dette gjør tilbakekalling, feilsøking og bruksattribusjon mye enklere.
Onboarding-sekvens for en ny kunde
En pålitelig onboarding-flyt er kjedelig av design. Den skal produsere de samme postene hver gang og legge igjen et revisjonsspor.
- Opprett kunden: lagre juridisk navn, faktureringskontakt, teknisk kontakt og intern eier.
- Opprett et arbeidsområde: separer produksjon fra testing om kunden vil integrere programmatisk.
- Tilordne en plan: definer inkluderte modeller, markering, faktureringskadens og støtteforventninger.
- Angi grenser: konfigurer forbruksgrenser, forespørselsgrenser, tokengrenser og burst-policy.
- Opprett API-nøkler: utsted nøkler med omfang for kundens miljøer.
- Send integreringsinstruksjoner: oppgi basis-URL, autentiseringsformat, modellliste, grenser og støttekanal.
- Aktiver varsler: koble til Telegram eller en annen operasjonskanal for lavbalanse, nøkkel-, utfalls- og faktureringsmeldinger.
- Kjør en testforespørsel: bekreft autentisering, bruksregistrering, modelltilgang og fakturatilordning.
Anbefaling: gjør onboarding idempotent. Hvis admin-appen din prøver en «opprett kunde»-operasjon på nytt, skal den ikke opprette dupliserte faktureringsposter eller dupliserte API-nøkler. Bruk eksterne ID-er og idempotensnøkler for klargjøring av samtaler.
Forespørsel-tidsbudsjettkontroll
Den viktigste håndhevelsen skjer før forespørselen når en oppstrømsmodell. Gatewayen din bør ikke oppdage at en kunde overskrider budsjettet først etter at leverandøren allerede har belastet deg.
Bruk denne forhåndskontrollsekvensen:
- Autentiser nedstrøms API-nøkkel.
- Løs
partner_id,customer_idogworkspace_id. - Sjekk om nøkkelen er aktiv og ikke tilbakekalt.
- Sjekk faktureringsstatus: aktiv, prøve, forhåndsbetalt, satt på pause, forfalt eller suspendert.
- Sjekk den faste kostnadsgrensen for gjeldende faktureringsperiode.
- Sjekk hastighetsgrenser, for eksempel forespørsler per minutt og tokens per dag.
- Sjekk om den forespurte modellen er tillatt for kundens plan.
- Estimer maksimal mulig kostnad fra modell, maks. tokens og forespørselsparametere.
- Router forespørselen bare hvis retningslinjene blir godkjent.
if key.revoked:
reject(401, "API-nøkkel opphevet")
if customer.billing_status i ["paused", "suspended", "forfalle"]:
reject(402, "Faktureringsstatus tillater ikke bruk")
if requested_model ikke i customer.allowed_models:
reject(403, "Modell ikke aktivert for dette arbeidsområdet")
if current_period_spend + estimated_max_cost > customer.hard_cap:
reject(402, "Forbruksgrense overskredet")
if rate_limit_exceeded(customer_id, requested_model):
reject(429, "Satsgrense overskredet")
route_request()
Fakta: OWASP API Security Topp 10 2023 kaller autorisasjon av ødelagte objekter, ødelagt autentisering og ubegrenset ressursforbruk som store API-risikoer. Disse kartlegges direkte til forhandlerportaler: én leietaker må ikke lese en annen leietakers data, nøkler må ikke kunne omgås, og én kunde må ikke kunne opprette ubegrenset leverandørforbruk.
Avveining: strenge kapsler beskytter marginen din, men de kan forstyrre legitime topper. Et godt kompromiss er en midlertidig overstyringsarbeidsflyt med utløpstid, godkjenner, årsak og revisjonsloggoppføring.
Bruksbok som kilde til sannhet
For sanntidstilgangskontroll, hold din egen bruksreskontro. Eksterne faktureringsverktøy er utmerket for fakturering, men de er vanligvis ikke det rette stedet for å ta beslutninger på millisekundnivå.
En brukshendelse bør fange opp nok detaljer til å avstemme leverandørfakturaer, forklare kunderegninger og feilsøke tvister:
{
"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": "begrunnelse-standard",
"input_tokens": 1850,
"output_tokens": 420,
"cached_tokens": 1200,
"leverandørkostnad": 0,0142,
"reseller_price": 0,0230,
"currency": "USD",
"timestamp": "2026-08-02T10:15:30Z",
"status": "vellykket"
}
Ta opp mislykkede forespørsler også, men skille feil som kan faktureres fra feil som ikke er det. Tidsavbrudd for leverandør, valideringsfeil, kundekanselleringer, gjenforsøk og sikkerhetsblokkeringer kan ha forskjellige regnskapsresultater avhengig av når de oppstår.
Anbefaling: skriv en ventende finanshendelse når forespørselen er akseptert, og fullfør den når tokenbruk og kostnad er kjent. Dette lar deg reservere budsjett før ruting og deretter korrigere det endelige beløpet etter fullføring.
Avstemmingsmønster
- Lagre hendelser på forespørselsnivå i den interne hovedboken.
- Samlet bruk etter kunde, modell og faktureringsperiode.
- Sammenlign interne totaler med oppstrømsleverandørfakturaer eller brukseksporter.
- Undersøk vesentlige forskjeller før du utsteder fakturaer.
- Synkroniser oppsummert fakturerbar bruk med faktureringssystemet.
Avveining: Synkronisering av oppsummert bruk reduserer faktureringshendelsesvolum og kompleksitet, men det kan gjøre kundefakturaer mindre detaljerte. Hvis kunder trenger rapportering på modellnivå eller prosjektnivå, bevar disse dimensjonene i faktureringssynkroniseringen eller kundedashbordet.
Faktureringssynkronisering med bruksbaserte målere
Bruksbaserte faktureringssystemer følger vanligvis et mønster: definer produkter og priser, innta brukshendelser, aggregere dem over en faktureringsperiode, generere fakturaer og overvåke feil. Stripe Billing, for eksempel, støtter målerhendelser med hendelsesnavn, kundeidentifikator, numerisk verdi, valgfritt tidsstempel, valgfri idempotensidentifikator og valgfrie dimensjoner.
For AI API-fakturering er vanlige målervalg:
- Token totalt: nyttig når priser er nært knyttet til input- og output-tokens.
- Antall forespørsler: nyttig for enkle planer eller lav-token API-kall.
- Modellspesifikke enheter: nyttig når premiummodeller har forskjellige marginer.
- Seter eller aktive arbeidsområder: nyttig for hybrid SaaS-plus-bruksplaner.
Fakta: Stripemålere støtter aggregeringsformler som sum, antall og siste. Disse kartlegges til token-totaler, antall forespørsler og tilstandslignende verdier som seter eller aktive grenser.
En daglig faktureringssynkronisering kan skape målerhendelser som dette:
{
"event_name": "ai_tokens_used",
"customer": "stripe_customer_456",
"verdi": 2270000,
"timestamp": "2026-08-02T23:59:00Z",
"idempotency_key": "cust_acme_2026-08-02_tokens",
"dimensjoner": {
"plan": "vekst_api",
"model_family": "standard"
}
}
Anbefaling: hold den interne hovedboken mer detaljert enn fakturaen. Du kan fakturere daglige tokentotaler mens du fortsatt beholder forespørselsnivåposter for støtte, svindelgjennomgang, justering av rategrense og marginanalyse.
Telegramoperasjoner uten å gjøre Telegram til registreringssystemet
Telegram er nyttig for raske arbeidsflyter for operatører: støtteteam legger allerede merke til meldinger, roboter kan sende varsler, og kunder kan motta instruksjoner om bord uten å logge på et dashbord. Men Telegram bør ikke være det eneste revisjonssporet for beslutninger om fakturering, sikkerhet eller støtte.
Gode Telegram-arbeidsflyter inkluderer:
- Lavbalanse eller høye forbruksvarsler på 50 %, 80 % og 95 % av et tak.
- Introduksjonsmeldinger for nye kunder med dokumentasjonslenker og maskerte nøkkelnavn.
- Meldinger om API-nøkkelrotasjon før og etter rotasjon.
- Varsler om leverandørbrudd eller forringet modell.
- Eskalering av menneskelig støtte når en kunde treffer gjentatte 401-, 402-, 403- eller 429-feil.
Fakta: Telegram Bot API-kall gjøres over HTTPS til bot-token-endepunkter, og Telegram-webhooks kan inkludere en hemmelig token-header for å verifisere webhook-opprinnelsen.
Anbefaling: lagre Telegram-chat-ID-er som leietakers metadata, men ikke eksponer dem på tvers av kunder. Logg hver bot-utløste administrative handling i din interne revisjonslogg med aktør, tidsstempel, kunde, gammel verdi, ny verdi og årsak.
Sikkerhets- og isolasjonssjekkliste
Før du selger tilgang, test leietakerisolering som om en kunde aktivt prøver å krysse grenser.
- Kunde A kan ikke se API-nøkler til Kunde B.
- Kunde A kan ikke se kunde B-bruk, fakturaer, grenser, Telegram-chat-IDer eller faktureringsstatus.
- En tilbakekalt nøkkel mislykkes umiddelbart på alle forespørselsbaner.
- En kunde som er satt på pause, kan ikke fortsette å betale gjennom bufrede økter eller gamle nøkler.
- En kunde kan ikke be om modeller utenfor den tildelte planen.
- Prisgrenser gjelder etter kunde og arbeidsområde, ikke bare etter global IP-adresse.
- Webhook-behandlere bekrefter signaturer eller hemmelige overskrifter der de støttes.
- All klargjøring, grenseendringer, nøkkelrotasjoner og faktureringsoverstyringer oppretter revisjonsloggoppføringer.
- Prøv logikk på nytt bruker idempotensnøkler, slik at dupliserte forespørsler ikke dobbeltfakturerer kunder.
- Støtteverktøy maskerer hemmeligheter og begrenser hvem som kan avsløre eller rotere nøkler.
Prediksjon: forhandlerportaler vil i økende grad konkurrere på styring og faktureringsklarhet, ikke bare på tilgang til mange modeller. Kunder vil forvente bruk per prosjekt, tydelige fakturaer, rask nøkkelrotasjon og harde forbrukskontroller som standardfunksjoner.
Viktige avveininger å avgjøre tidlig
Forskuddsbetalt versus etterskuddsbetalt
Forskuddsbetalte saldoer reduserer kredittrisikoen og gjør vanskelige avskjæringer enkle, men kunder kan mislike avbrudd. Etterskuddsbetalt fakturering er jevnere for etablerte kunder, men det krever kredittsjekk, purrearbeidsflyter og sterkere oppdagelse av avvik.
Én blandet pris kontra modellspesifikk pris
En blandet pris er lettere å forklare. Modellspesifikke priser beskytter marginer og oppmuntrer til effektivt modellvalg. Hvis du tilbyr mange modeller, publiser en enkel kundevendt modellkatalog og skjul unødvendig leverandørspesifikk kompleksitet.
Sanntidsmåling kontra forsinket fakturering
Sanntidsmåling muliggjør forbrukstak og forhåndsbetalte saldoer. Det krever også varig skriving, replay-håndtering og avstemming. Forsinket fakturering er enklere, men det utsetter deg for løpende utgifter før grensene trer i kraft.
Telegram-først-støtte versus dashboard-først-støtte
Telegram er raskt og kjent for mange operatører. Et dashbord er bedre for reviderbarhet, eksport, tillatelser og selvbetjening av kunden. Bruk Telegram for varsler og godkjenninger, men lagre den kanoniske posten i systemet ditt.
Handlingsplan for utrulling
- Start med leietakerisolering: implementer kunde-, arbeidsområde-, nøkkel-, plan- og grenseposter før du legger til avanserte faktureringsfunksjoner.
- Bygg håndhevelse av forhåndskontroll: blokker tilbakekalte nøkler, suspendert fakturering, ikke-tillatte modeller og overbegrens trafikk før ruting.
- Opprett bruksreskontro: Registrer forespørsels-IDer, tokenantall, kostnader, forhandlerpriser, statuser, tidsstempler og idempotensnøkler.
- Legg til avstemming: sammenlign intern bruk med oppstrømsleverandørtotaler før fakturering.
- Synkroniser faktureringssammendrag: send daglige eller timebaserte aggregater til faktureringsplattformen din med stabile kundetilordninger og idempotensnøkler.
- Telegram-varsler med overføring: start med meldinger om lav balanse, utfall, nøkkelrotasjon og støtte-eskalering.
- Kjør isolasjonstester: bekreft at ingen kunder har tilgang til en annen kundes nøkler, bruk, grenser, fakturaer eller chat-metadata.
En forhandlerportal er ikke bare en innpakning rundt et AI API. Det er et driftslag for autentisering, leietakerpolicy, bruksanalyse, fakturering og støtte. Bygg hovedboken og grensene først, behold oppstrømsnøkler på serversiden, og gjør hver kundevendt nøkkel tilbakekallbar, omfangsrik og tilskrivbar.