# Når det ikke finnes noe API, er nettleseren API-et

En KI-agent er bare så nyttig som systemene den får røre ved. En taleagent som kan føre en
perfekt samtale, men ikke faktisk bestille timen, er en demo, ikke et produkt. Den reelle
begrensningen på agentautomatisering er derfor sjelden modellen. Det er integrasjonen: kan
agenten lese og skrive til systemet virksomheten faktisk drives på?

For en stor andel av plattformene småbedrifter er avhengige av, er det vanlige svaret «nei».
En bookingplattform, et journalsystem for klinikker, en timeplanlegger for salonger: mange
eksponerer **ikke noe offentlig API i det hele tatt**, eller tilbyr et tynt et som mangler
operasjonene du trenger, eller gjemmer det ekte API-et bak et bedriftsabonnement kunden
aldri kommer til å kjøpe. Den vanlige integrasjonsoppskriften stopper der. Vår gjør det ikke.

## Den nye innfallsvinkelen

En plattform uten et API er ikke en plattform uten et grensesnitt. Den har et svært rikt,
svært godt utprøvd grensesnitt: **webapplikasjonen dens egne brukere logger inn på hver
dag**. Ansatte oppretter bookinger, flytter dem, henter opp en klients historikk, tar en
betaling. Hver eneste av disse handlingene er tilgjengelig gjennom nettleseren, fordi det er
den eneste måten plattformens egne kunder gjør dem på.

Så spørsmålet slutter å være «har denne plattformen et API?» og blir «kan et menneske gjøre
dette i en nettleser?» Hvis svaret er ja, kan en agent også gjøre det, ved å styre den samme
nettleseren med **Playwright**. Webgrensesnittet blir integrasjonsflaten. Nettleseren er
API-et.

## Hvordan dette ser ut i praksis

Vi kjører headless Chromium under Playwright, på serversiden, og behandler hver plattforms
grensesnitt som et sett operasjoner eksponert for agenten som verktøy. For en
bookingplattform betyr det de åpenbare verbene:

- **Autentisere** som virksomheten, på samme måte som de ansatte logger inn.
- **Lese** timeplanen, ledig kapasitet og klientregistre.
- **Opprette** en booking, **flytte** den, **avlyse** den, endre status på den.
- **Opprette** eller oppdatere et kunderegister.

Agenten verken vet eller bryr seg om at det ligger en nettleser under. Den kaller et verktøy
som `createBooking(...)` akkurat slik den ville kalt et REST-endepunkt; bak det verktøyet
navigerer Playwright plattformens sider, fyller ut de samme skjemaene en resepsjonist ville
fylt ut, venter på de samme bekreftelsene, og leverer strukturerte data tilbake til modellen.
Fra agentens side er det bare nok en evne. Fra plattformens side er det bare nok en innlogget
økt.

Slik har vi integrert timeplan- og klinikkplattformer over hele linjen, inkludert noen helt
uten brukbart offentlig API. Mønsteret er det samme hver gang; bare selektorene og
innloggingsflyten endrer seg.

## De vanskelige delene (og hvordan vi håndterer dem)

Nettleserautomatisering er lett å demonstrere og vanskelig å drifte i produksjon. Forskjellen
ligger utelukkende i de delene som ikke er den ideelle veien gjennom.

**Økter, ikke innlogginger.** Å logge inn er det trege, skjøre, til tider MFA-beskyttede
steget. Du vil ikke gjøre det på hver forespørsel. Så vi autentiserer én gang, lagrer den
resulterende nettleserkonteksten (informasjonskapsler og lagring), og **gjenbruker økten** på
tvers av mange operasjoner. En planlagt helsesjekk pinger hver integrasjons økt, oppdager når
en er utløpt, og re-autentiserer proaktivt, før en agent i det hele tatt treffer en utlogget
side. Agenten opplever en varm, alltid-innlogget forbindelse; den rotete re-autentiseringen
skjer i kulissene.

**Legitimasjon, kryptert og per kunde.** Å styre et grensesnitt betyr å holde ekte
innloggingslegitimasjon. Den krypteres i ro per virksomhet (vi bruker konvoluttkryptering via
en administrert KMS) og dekrypteres kun i minnet i det øyeblikket en økt må etableres.
Automatiseringslaget lagrer aldri legitimasjon i klartekst.

**API der det finnes, nettleser der det ikke gjør.** Dette er ikke et standpunkt mot API-er.
Der en plattform tilbyr et ekte endepunkt for en operasjon, bruker vi det: det er raskere,
billigere og mer stabilt enn å styre en side. Flere av integrasjonene våre er hybrider, som
kaller det offisielle API-et for operasjonene det dekker og faller tilbake på Playwright kun
for dem det ikke dekker. Nettleserautomatisering er **den universelle reserveløsningen**,
ikke førstevalget.

**Anti-bot og skalering.** Noen plattformer bekjemper automatisering aktivt. Herdede
headless-flagg håndterer det grunnleggende; for de vanskeligere tilfellene kan vi rute en økt
gjennom en administrert scraping-nettleser med residensiell utgang i stedet for lokal
Chromium. Verktøyet agenten ser er identisk uansett.

## De ærlige avveiningene

Denne metoden er kraftig, ikke gratis, og det er verdt å være tydelig på kostnadene:

- **Skjørhet.** Et grensesnitt er en udokumentert, uversjonert kontrakt. Når plattformen
  lanserer en redesign, ryker selektorene. Ekte API-er endrer seg langt sjeldnere. Tiltaket
  er overvåking og rask selektorvedlikehold, ikke å late som om det ikke skjer.
- **Forsinkelse og kostnad.** Å styre en nettleser er tyngre enn et HTTP-kall: mer tid, mer
  regnekraft. For høyvolumsveier vinner et ekte API klart, som er nettopp grunnen til at vi
  bruker et når det er der.
- **Vilkår for bruk.** Å automatisere en plattform på en kundes egne vegne, med kundens egen
  legitimasjon og samtykke, er en annen posisjon enn å skrape en tredjepart. Vi tar den
  grensen på alvor og integrerer kun på vegne av kontoinnehaveren.

Ingen av disse er grunner til å la være. De er grunner til å konstruere det skikkelig: økter,
kryptering, overvåking, og et ekte API der et slikt tilbys.

## Gevinsten

Å tenke nytt om integrasjon med nettleseren som utgangspunkt endrer hva «integrerbar» betyr.
Settet av systemer en KI-agent kan handle inne i er ikke lenger begrenset til de med en
utviklerportal og en API-nøkkel. Det utvides til **hvert system et menneske kan betjene**,
som vil si alle sammen.

På tvers av timeplan-, salong- og klinikkplattformene kundene våre faktisk drives på, har vi
med denne metoden **ennå ikke funnet en plattform vi ikke kan integrere mot med våre
KI-drevne agenter.** Hvis de ansatte dine kan gjøre det i en nettleser, kan agentene våre
gjøre det også, på dine vegne, døgnet rundt. API-et var aldri poenget. Evnen var det.
