Gå til innhold

Design

Hva krever API-first av designeren?

API-first flytter designerens leveranse fra skjermbildet til kontrakten: navn og beskrivelser, standardverdier, feilsvar, bekreftelser og hva systemet gjør med det det ikke forstår. Leseren er ofte en agent, og agenten følger teksten bokstavelig.

Av Kjell Rune Monsø6 min lesing
Et utskrevet ark med tett tekst og blyantrettelser i margen ligger på et eikebord, ved siden av en lukket skissebok med blyant, en kaffekopp, en laptop med skjermen vendt bort og en tom kontorstol foran en betongvegg.

API-first krever at designeren tegner kontrakten før skjermbildet. Kontrakten består av fem ting: navn og beskrivelser, standardverdier, feilsvar, bekreftelser og hva systemet gjør med det det ikke forstår. En agent som bruker produktet, ser aldri skjermbildet. Agenten ser bare kontrakten, og agenten følger kontrakten bokstavelig.

Apps AS bygger produkter der agenter er en like vanlig bruker som mennesker. Artikkelen bygger på hvordan CMS-et i Munin, Apps AS' egen kundeplattform, er satt opp for publiseringsagenten som skriver utkastene på apps.no, og på oppsettet for utgående samtaler i Threll.ai, lest 12. oktober 2026.

Hva betyr API-first?

API-first betyr at funksjonene i et produkt bygges som et programmeringsgrensesnitt først, og at skjermbildene bygges oppå det samme grensesnittet etterpå. Alt et menneske kan gjøre i skjermbildet, kan et annet program gjøre gjennom API-et.

Begrepet er eldre enn agentene. Det nye er hvem som kaller API-et. Før var kalleren en utvikler som leste dokumentasjonen og skrev koden én gang. Nå er kalleren ofte en agent som leser beskrivelsen ved hvert kall, velger handling ut fra teksten og ikke spør noen når teksten er uklar.

Hvorfor er API-et nå designerens ansvar?

API-et er designerens ansvar fordi API-et er det eneste grensesnittet agenten møter. Et API formet etter databasen virket så lenge kalleren visste hvordan systemet var bygget. En agent vet ikke det, og agenten fyller hullene med gjetning.

Kaleb Pomeroy i sikkerhetsselskapet SpecterOps beskrev i juli 2026 hvordan teamet bak verktøyet BloodHound bygget om en MCP-server, altså serveren som gir agenter verktøy etter standarden Model Context Protocol. Den første versjonen speilet API-et. Den ferdige versjonen hadde noen få enkle kall bygget rundt det agenten prøvde å få til, og verktøy ble lagt tilbake bare der agentene viste et hull i arbeidsflyten. Framgangsmåten er designarbeid: observere bruk, fjerne valg og legge tilbake det som manglet.

API-er har lov til å være formet etter implementasjonen, fordi den som kaller dem, allerede vet hva den gjør.
Kaleb Pomeroy, programvareutvikler i SpecterOps, 28. juli 2026. Oversatt fra engelsk: «APIs are allowed to be implementation-shaped because their callers already know what they are doing.»

Hvilke fem ting må designeren levere i et API-first-produkt?

Designeren må levere fem ting i et API-first-produkt. Hver av de fem har en motpart i skjermdesign som designeren allerede kan.

Det svarer til, på skjermDet designeren leverer i API-etEksempel fra Apps AS
HjelpetekstenNavn og beskrivelse på hver handling og hvert feltFeltbeskrivelsene i artikkelsamlingen i Munin
Forhåndsvalget i et skjemaStandardverdien når et felt utelatesStandardspråket i CMS-et for apps.no
FeilmeldingenEt feilsvar som sier hva kalleren gjør nåFeilkodene for tekstendringer i Munin
BekreftelsesdialogenTo operasjoner: forbered, så utførUtgående samtaler i Threll.ai
ValideringenHva systemet gjør med det det ikke kjennerUkjente blokktyper på artikkelsiden

Hvorfor er beskrivelsen av et felt designarbeid?

Beskrivelsen av et felt er designarbeid fordi beskrivelsen er det eneste agenten leser før den fyller ut feltet. Beskrivelsen gjør jobben en hjelpetekst, en plassholder og et eksempel gjør på en skjerm.

Beskrivelsene i artikkelsamlingen på apps.no er skrevet som instrukser. Feltet for alternativ tekst sier at teksten skal beskrive det som faktisk er i bildet, og ikke gjenta tittelen. Kildelisten sier at ordet «Link:» ikke skal stå foran lenkene, fordi merket ellers blir gjentatt støy i hver linje. Begge setningene stopper en feil som er lett å gjøre, før den skjer.

Den samme regelen gjelder kanaler. Kundeagenten i Munin har én beskrivelse per kanal. På SMS skal svaret være under 160 tegn og uten markdown. Designspesifikasjonen for SMS-kanalen er altså to setninger tekst.

10 av 13
felt i artikkelsamlingen på apps.no har en beskrivelse skrevet til den som fyller dem ut, og alle sju blokktypene i brødteksten har sin egen. Kilde: Apps AS' CMS i Munin, lest 12. oktober 2026.

Hvorfor er en standardverdi et designvalg?

En standardverdi er et designvalg fordi standardverdien bestemmer hva som skjer når kalleren ikke tar stilling. Et menneske ser forhåndsvalget i skjemaet. En agent som utelater et felt, ser ingenting.

CMS-et apps.no publiserer fra, har engelsk (en-US) som standardspråk. En norsk artikkel som opprettes uten språk, blir lagret som engelsk uten feilmelding. Publiseringsagenten på apps.no har derfor en egen regel om å oppgi språket ved hver oppretting. Regelen er en lapp over et designvalg. En standardverdi som kan gi feil resultat uten varsel, burde vært et obligatorisk felt.

Hva skal et feilsvar fortelle en agent?

Et feilsvar skal fortelle agenten hva den gjør nå. En feilmelding til et menneske kan være vag, fordi mennesket ser skjermen og prøver igjen. En agent har bare teksten i svaret.

Munin skiller mellom feil som krever ulik neste handling. Når agenten vil bytte ut en tekstbit og teksten ikke finnes, svarer CMS-et cms_replacement_no_match. Når teksten finnes flere steder, svarer CMS-et cms_replacement_ambiguous. Den første feilen betyr at agenten må lese artikkelen på nytt. Den andre betyr at agenten må ta med mer tekst rundt det som skal byttes ut. Hver oppdatering sendes også med versjonsnummeret agenten leste, slik at en endring et menneske har gjort i mellomtiden, ikke blir overskrevet.

Bildeverktøyet i Munin er designet for en kaller som prøver igjen. En identisk forespørsel innen 15 minutter gir det første bildet tilbake i stedet for å lage et nytt. En agent som tror kallet hang, lager dermed ikke to bilder og to regninger.

Hvorfor må handlinger som ikke kan angres, deles i to?

Handlinger som ikke kan angres, må deles i to operasjoner fordi agenten ellers både bestemmer og utfører i samme kall. På en skjerm er bekreftelsesdialogen designerens verktøy. I et API er verktøyet en forberedende operasjon som returnerer en sammenfatning og et engangsbevis, og en utførende operasjon som krever beviset.

Threll.ai, taleagentene Apps AS utvikler, bruker den modellen for utgående samtaler. Agenten forbereder samtalen og får tilbake en sammenfatning med hvilken agent som ringer, fra hvilket nummer, til hvilket nummer og med hvilket manus. Samtalen ringes først når noen bekrefter med beviset. Hvilke handlinger som bør deles slik, er gjennomgått i Hvilke prosesser tåler automatisering?

Hva skal systemet gjøre med det det ikke forstår?

Systemet skal si fra når det får noe det ikke forstår. Et skjema kan gjøre et ugyldig valg umulig. Et API får det kalleren sender, og må bestemme hva som skjer med resten.

Artikkelsiden på apps.no viser sju blokktyper. En blokktype siden ikke kjenner, hoppes over uten feilmelding, og innholdet forsvinner fra siden. Valget gjør siden robust, og valget gjør feilen usynlig for agenten som skrev blokken. Den samme kontrakten har to regler til som er laget med vilje: en tallblokk uten forklaring vises ikke i det hele tatt, og et markdown-sitat i brødteksten vises som en faktaboks og ikke som et sitat. Reglene virker bare fordi de står i beskrivelsen agenten leser.

Hva er igjen av skjermdesignet?

Skjermdesignet er igjen der et menneske skal godkjenne, følge med eller ta over. Den flaten brukes sjeldnere og betyr mer. Hvordan maskinflaten og menneskeflaten deler produktet mellom seg, står i Salesforce flyttet grensesnittet ut av produktet. Prisen må flytte etter. Hvordan API-first henger sammen med prismodellen, står i ankerartikkelen Arkitektur, design og pris er samme valg. Hvorfor tegningen er det billigste stedet å endre et teknologivalg, står i Design er der teknologivalget blir billig.

Send oss feltet som oftest blir fylt ut feil

Ta feltet i API-et deres som oftest blir fylt ut feil, og skriv ned beskrivelsen feltet har i dag. Send beskrivelsen og ett eksempel på en feil utfylling til hello@apps.no. Vi svarer med en ny beskrivelse, eller med at feltet heller burde vært obligatorisk.

Kilder

  • SpecterOps, Kaleb Pomeroy, Designing an MCP Server for AI Agents: Why Wrapping Your API Is the Wrong Abstraction, 28. juli 2026, lest 12. oktober 2026. specterops.io
  • Apps AS, feltdefinisjonene i artikkelsamlingen og språkoppsettet i CMS-et i Munin, lest 12. oktober 2026.
  • Apps AS, verktøybeskrivelsene for CMS og bildegenerering i Munin og for utgående samtaler i Threll.ai, lest 12. oktober 2026.
  • Apps AS, Munin, case-side. apps.no

Om denne artikkelen. Skrevet av Kjell Rune Monsø, medgrunnlegger og partner i Apps. Satellitt til pilaren Design, teknologi og forretning som én beslutning. Eksemplene er hentet fra Apps AS' egne systemer slik de var satt opp 12. oktober 2026: feltdefinisjonene og standardspråket i CMS-et for apps.no, verktøybeskrivelsene i Munin og oppsettet for utgående samtaler i Threll.ai. Tallet 10 av 13 er talt opp direkte fra feltdefinisjonene. Sitatet fra SpecterOps er oversatt av Apps AS. Artikkelen bruker ingen kundetall.

FAQ

Trenger vi en egen designer for API-et, eller kan utviklerne skrive beskrivelsene?
Utviklerne kan skrive beskrivelsene, men noen må eie dem som tekst og teste dem mot en agent. Den som skriver hjelpetekster og feilmeldinger i skjermbildene i dag, har ofte riktig kompetanse. Det viktigste er at beskrivelsene endres når agenten gjør feil, og at endringen eies av en navngitt person.
Hvordan tester vi om en feltbeskrivelse virker?
Gi en agent bare beskrivelsen og be den fylle ut feltet for ti ulike tilfeller. Les resultatene og tell hvor mange som er feil på samme måte. En feil som går igjen, er et tegn på at beskrivelsen er uklar. En feil som skjer én gang, er sjelden verdt en ny setning.
Må vi bygge en MCP-server for å være API-first?
Nei. API-first handler om at funksjonene finnes som et grensesnitt før skjermbildene. MCP er én måte å gjøre grensesnittet tilgjengelig for agenter på. Beskrivelser, standardverdier, feilsvar og bekreftelser må designes uansett hvilken protokoll agenten bruker.
Blir skjermdesignet mindre viktig når agenter gjør mer av arbeidet?
Skjermbildene blir færre, men de som er igjen, bærer mer ansvar. Flaten der et menneske godkjenner det en agent vil gjøre, må vise handlingen, argumentene og hva som ikke kan angres. En svak godkjenningsflate gjør mennesket ansvarlig for noe det ikke har sett.
Hva gjør vi med et eksisterende API som er formet etter databasen?
Start med å se hva agentene faktisk prøver å gjøre, og lag noen få handlinger rundt de oppgavene oppå det eksisterende API-et. Behold det gamle API-et for utviklere. Legg til flere handlinger bare der bruken viser at noe mangler.