Hopp til innhold

Hvordan integrerer jeg med Altinn 3?

Av , gründer av Apier

Altinn 3 er et REST-API, men du kan ikke kalle det med en API-nøkkel alene. Hvert kall trenger et Maskinporten-token som viser hvilken virksomhet du er, og alt som gjøres på vegne av en kunde trenger i tillegg en delegering til Altinn systembruker fra den kunden, som viser at du har lov til å opptre for dem. Apier formidler ingen av leddene. Det Apier tilbyr, ligger ved siden av den kjeden: hvem som kan signere for selskapet og hva det må sende inn innen når, fra Brønnøysund og regelboken, bak én enkelt Authorization: Bearer-header og uten noe Maskinporten-token eller noen delegering. Selve Altinn 3-kallet er fortsatt ditt å bygge.

To baner. Den direkte veien går fra applikasjonen din gjennom Maskinporten for et access token, deretter gjennom en delegering til Altinn systembruker gitt per kunde, og først da til Altinn 3 REST-API. Ved siden av går en annen bane fra applikasjonen din gjennom Apier, med én Bearer-nøkkel og uten offentlig token, til Brønnøysund og regelboken. En stiplet merknad markerer de to leddene i midten som ikke er nødvendige for det Apier svarer på.Direkte integrasjonDin applikasjonMaskinportenaccess tokenAltinn systembrukerdelegering, per kundeAltinn 3 REST-APItrengs ikke for det Apier svarer påVed siden av: ApierDin applikasjonApierén Bearer-nøkkel, åpne registre, ingen offentlig tokenBrønnøysund + regelbok
De to leddene i midten, utstedelse av token og delegering per kunde, er der en Altinn 3-integrasjon bruker tiden sin, og de forblir dine. Det Apier svarer på trenger ingen av dem: signaturrett og plikter kommer fra åpne registre og regelboken.

Hva er den enkleste måten å kalle Altinn 3-API-er på?

Altinn 2 ble avviklet 19. juni 2026, så «Altinn 3» og «Altinn» betyr nå det samme. Det finnes ingen gammel vei å falle tilbake på, og heller ingen snarvei rundt autorisasjonsmodellen: Altinn bekreftet i mai 2026 at instansscopes for serviceowner er forbeholdt offentlige etater, så en kommersiell integratør går gjennom den kundedelegerte systembrukermodellen, eller ikke i det hele tatt.

Da står én ærlig vei inn i Altinn 3 igjen: bygg legitimasjonskjeden selv. En Maskinporten-klient, et virksomhetssertifikat, signerte bruksvilkår, en oppføring i systemregisteret og en delegeringsflyt du tar hver eneste kunde gjennom. Apier forkorter ikke den kjeden. Siden 21. oktober 2026 formidler Apier ikke noe Maskinporten-token og ingen systembrukerdelegering, og de Altinn-baserte endepunktene Apier tidligere tilbød svarer 410 CAPABILITY_WITHDRAWN.

Det Apier tilbyr, er laget før og rundt Altinn-kallet: selskapskontekst, plikter, frister og signaturrett, fra Brønnøysund og regelboken, med kilde og dato oppgitt på hver respons. Ingenting av det trenger Altinn-tilgang, og det er derfor én Bearer-nøkkel er nok. Validering og innsending av skjemaer tilbys ikke; MVA-linjen er satt på vent til Digdir eller Skatteetaten svarer skriftlig på om en systemleverandør kan tilby det.

Trenger jeg fortsatt Maskinporten og virksomhetssertifikat?

Det kommer an på hvem som holder legitimasjonen, og skillet er renere enn det først ser ut. Maskinporten er Norges OAuth2-tjeneste mellom maskiner: en klient autentiserer seg med en signert JWT-assertion, og nøkkelen bak den assertionen er forankret i et virksomhetssertifikat utstedt til en enhet registrert i Brønnøysund. En direkte integrasjon betyr at du skaffer sertifikatet, laster opp nøkkelen, signerer Digdirs bruksvilkår, registrerer systemet ditt i Altinn systemregister, og deretter roterer alt sammen etter en plan så lenge integrasjonen lever.

For selve Altinn 3-kallet, ja, alt dette er ditt: Apier holder ikke noe sertifikat og signerer ingen assertions på dine vegne. For det Apier svarer på, trengs ingenting av det, fordi Brønnøysund-dataene er åpne og regelboken er Apier sin egen, så å lese hvem som kan signere for et selskap krever én Bearer-nøkkel og ingen Maskinporten-klient. Delegeringen er som den alltid har vært: at kunden din gir det registrerte systemet ditt rett til å opptre for dem, er en beslutning bare den kunden kan ta, og ingen mengde infrastruktur fjerner den. Vil du ha hele mekanikken i OAuth2-utvekslingen, dekker Maskinporten-guiden for utviklere tokenflyten og fallgruvene fra ende til ende.

Hvordan tester jeg en Altinn 3-integrasjon uten produksjonstilgang?

Bruk den nøkkelløse sandkassen. Hvert selskapsendepunkt har et speil under /api/v1/sandbox/public/ som svarer med produksjonens responsform fra syntetiske norske selskapsdata, ikke krever noen API-nøkkel, og er deterministisk mellom kall: Samme forespørsel gir samme kropp, så du kan sjekke mot den i en testsuite. Feilveiene er også testbare: en ?simulate_error=-parameter injiserer tilfellene manglende delegering, ugyldig token, valideringsfeil og manglende scope, slik at feilhåndteringen din blir kjørt før den møter en ekte feil.

Én egenskap betyr mer enn bekvemmelighet her: sandkassen kaller aldri et offentlig system. En innsending i sandkassen er en lokal tilstandsendring, ikke en innsending som holdes tilbake. Ingenting når Altinn, Maskinporten eller Skatteetaten fra den flaten. Sandkassen beviser altså at klienten din er riktig, og ingenting om en reell innsending, som er nøyaktig den garantien som gjør den trygg å peke en autonom agent mot. Start på sandkassen for en ferdig forespørsel, eller på hurtigstarten for gjennomgangen av første kall.

Hva hvert ledd i en Altinn 3-integrasjon koster deg når du bygger direkte, og hva Apier svarer på ved siden av uten å berøre Altinn.
IntegrasjonsleddDirekte mot Altinn 3Det Apier svarer på i stedet
AutentiseringDin egen Maskinporten-klient, signerte JWT-assertions og et virksomhetssertifikat du skaffer og fornyer.Trengs ikke. Apier leser åpne registre og sin egen regelbok bak én Bearer-nøkkel; ingen offentlig token holdes på dine vegne.
Fullmakt per kundeEn oppføring i systemregisteret pluss en delegering fra hver kunde, sporet og kontrollert av deg.Formidles ikke. Apier svarer på hvem som kan signere for selskapet fra Brønnøysund (signaturrett og prokura), så du vet hvem som kan gi delegeringen; selve tildelingen skjer i Altinn.
ResponsformHvert register svarer i sitt eget skjema; du normaliserer på tvers av Brønnøysund, Altinn og Skatteetaten.Ett normalisert skjema på tvers av Brønnøysund og regelboken, med en _meta-konvolutt som bærer regelversjon og dataferskhet.
FeilhåndteringFeil fra kildesystemet kommer i kildesystemets eget format; du oversetter hver enkelt til noe kalleren kan handle på.Strukturert error_code pluss en forklaring med rettesteg, identisk i form på tvers av alle endepunkter.
TestmiljøTilgang til testmiljøer følger de samme oppstartskravene som produksjon.Nøkkelløs sandkasse fra første minutt, med deterministiske testdata og eksplisitt feilinjeksjon.

Gjør det første kallet

Sandkasseforespørselen under trenger ingenting i det hele tatt: ingen nøkkel, intet sertifikat, ingen delegering. TypeScript-utdraget er produksjonsekvivalenten: samme stiform, én header lagt til.

# Nøkkelløs sandkasse: ingen nøkkel, sertifikat eller delegering.
curl -s https://www.apier.no/api/v1/sandbox/public/company/999999999/context
// Produksjonsoppslag. Én header, ingen offentlig token noe sted.
// Bytt ut {org} med et ekte organisasjonsnummer; 999999999 finnes bare i sandkassen.
const res = await fetch(
  "https://www.apier.no/api/v1/company/{org}/context",
  { headers: { Authorization: `Bearer ${process.env.APIER_API_KEY}` } },
);

if (!res.ok) {
  const { error_code, explanation } = await res.json();
  throw new Error(`${error_code}: ${explanation.summary}`);
}

const { data, _meta } = await res.json();
console.log(data.name, data.status, _meta.rulebook_version);

Ofte stilte spørsmål

Er Altinn 3 bare et REST-API jeg kan kalle med en API-nøkkel?
Nei. Altinn 3 er et REST-API, men det utsteder ikke API-nøkler. Hvert kall bærer et Maskinporten-token som identifiserer virksomheten din, og alt du gjør på vegne av en kunde krever i tillegg at kunden har delegert tilgang til det registrerte systemet ditt. HTTP-kallet er den enkle delen; legitimasjonskjeden bak er arbeidet.
Trenger jeg min egen Maskinporten-klient for å integrere med Altinn 3?
Ja, hvis du kaller Altinn 3 i det hele tatt. En direkte integrasjon betyr din egen Maskinporten-klient, et virksomhetssertifikat utstedt til en enhet registrert i Brønnøysund, signerte bruksvilkår hos Digdir, en oppføring for systemet ditt i Altinn systemregister, og en delegering fra hver eneste kunde. Apier formidler ingen av delene: det Apier svarer på kommer fra åpne registre og regelboken, som ikke krever noe Maskinporten-token, så kjeden finnes bare for selve Altinn 3-kallet, og det er ditt.
Kan jeg bruke Altinns API-er for tjenesteeiere i stedet for systembruker?
Nei, og det kan ingen annen privat integratør heller. Altinn bekreftet i mai 2026 at instansscopes for serviceowner er forbeholdt offentlige etater. Enhver kommersiell integrasjon går gjennom den kundedelegerte systembrukermodellen, der hver kunde uttrykkelig gir rettigheter til det registrerte systemet ditt.
Kan jeg teste en Altinn 3-integrasjon før jeg har produksjonstilgang?
Ja. Den offentlige sandkassen til Apier er nøkkelløs og svarer med de samme responsformene som produksjon, fra syntetiske testdata, så du kan bygge og teste klienten før noe sertifikat eller noen delegering finnes. Sandkassen kaller aldri et offentlig system, som også er grunnen til at et sandkassekall beviser at kodeveien din virker, og ingenting om et reelt Altinn 3-kall.
Kan Apier kalle Altinn 3 for meg?
Nei. Apier har ingen systembruker for kundene dine, formidler ikke noe Maskinporten-token og sender ikke inn skjemaer; de Altinn-baserte endepunktene Apier tidligere tilbød ble trukket tilbake 21. oktober 2026 og svarer 410 CAPABILITY_WITHDRAWN. Det som er i drift, er delen som ikke trenger Altinn-tilgang i det hele tatt: selskapskontekst, plikter, frister og signaturrett fra Brønnøysund og regelboken, bak én Bearer-nøkkel, hvert svar med kilde og dato.