Altinn API: Komplett guide for utviklere i 2026

Oppdatert 15. april 2026
Altinn API er nøkkelen til offentlige tjenester i Norge. Lær Maskinporten, Altinn 3 og komplett integrasjon med kodeeksempler i 2026 — start nå.

Altinn API lar utviklere integrere direkte mot Norges digitale førstelinje for offentlige tjenester — alt fra skjemainnsending til meldingshåndtering og autorisasjon. For en norsk utvikler er Altinn API ofte inngangen til automatisering av kommunikasjon med stat og kommune. I denne guiden får du en komplett oversikt over Altinn API i 2026, inkludert Maskinporten-autentisering, Altinn 3-plattformen og et praktisk kodeeksempel du kan kjøre i dag.

Hva er Altinn API?

Altinn API er et sett med REST-baserte tjenester som gir programmatisk tilgang til funksjonene i Altinn-plattformen — den nasjonale portalen for digital dialog mellom virksomheter, innbyggere og offentlige etater. Plattformen eies og driftes av Digitaliseringsdirektoratet (Digdir) på vegne av norske myndigheter.

Gjennom Altinn API kan du:

  • Sende inn og motta skjemaer på vegne av en virksomhet
  • Hente meldinger fra innboks til en organisasjon
  • Delegere og sjekke roller og rettigheter
  • Integrere egne tjenester i Altinn-portalen via Altinn Apps
  • Håndtere samtykkebaserte datatilganger

Altinn brukes av over 700 000 virksomheter i Norge og rundt 60 offentlige etater. Det gjør Altinn API til et av de viktigste offentlige API-ene du som norsk utvikler kan mestre.

Altinn-plattformens API-tjenester

Altinn API er ikke én monolitt, men en samling tjenester. Her er de viktigste byggeklossene i 2026.

Altinn 3 (app.altinn.no)

Altinn 3 er den moderne, skybaserte plattformen som gradvis erstatter Altinn 2. De fleste nye integrasjoner skal mot Altinn 3. Plattformen eksponerer REST-endepunkter under https://platform.altinn.no/ og bruker token-basert autentisering.

Maskinporten

Maskinporten er Norges sentrale OAuth 2.0-server for server-til-server-autentisering mot offentlige API-er. Altinn API krever Maskinporten for de fleste maskin-til-maskin-flyter. Du registrerer en klient hos Samarbeidsportalen, laster opp en offentlig nøkkel, og signerer JWT-er som byttes mot access tokens.

TT02 (testmiljøet)

TT02 er Altinns offisielle test- og staging-miljø. Alt du utvikler må testes mot TT02 før du får tilgang til produksjon. Base-URL er https://platform.tt02.altinn.no/ og du får et eget Maskinporten-test-miljø (test.maskinporten.no) som følger med.

Altinn Apps

Dersom du skal levere selve tjenesten som ligger i Altinn (f.eks. et skjema for en etat), utvikler du en Altinn App som kjører på plattformen og konsumerer Altinn API internt.

Slik kommer du i gang med Altinn API

Vi har integrert Altinn API for flere kunder, og den største hindringen er nesten alltid oppsettet — ikke selve kodingen. Følg disse stegene for å komme i gang med Altinn API på en ryddig måte.

  1. Registrer virksomheten din i Samarbeidsportalen. Du må ha et organisasjonsnummer og tilgang til Altinn-rollen «Hovedadministrator rettigheter». Gå til samarbeid.digdir.no og opprett en selvbetjent konto.
  2. Generer et nøkkelpar. Altinn API via Maskinporten krever et RSA- eller EC-nøkkelpar. Generer lokalt med OpenSSL og hold privatnøkkelen hemmelig.
  3. Opprett en Maskinporten-klient. Last opp den offentlige JWK-en, velg hvilke scopes du trenger (f.eks. altinn:serviceowner/instances.read), og noter client_id.
  4. Få tildelt scopes. Mange Altinn-scopes krever søknad. For tjenester på vegne av en tjenesteeier (etat) må etaten selv delegere scope til klienten.
  5. Test i TT02. Implementer JWT-grant-flyten, bytt den inn mot et access token fra Maskinporten-test, og kall Altinn API i testmiljø.
  6. Søk om produksjonstilgang. Når TT02 fungerer, melder du klienten inn til produksjon via Samarbeidsportalen.

Dette oppsettet tar typisk 1–3 uker, mest på grunn av scope-godkjenning. Planlegg deretter.

Eksempel — hente meldinger via Altinn API

Her er en minimal Node.js-implementasjon som viser autentiseringsflyten og et første kall mot Altinn API. Eksemplet henter instanser (skjemainnsendinger) for en tjenesteeier i TT02.

import jwt from 'jsonwebtoken';
import { readFileSync } from 'node:fs';

const privateKey = readFileSync('./maskinporten-private.pem', 'utf8');
const CLIENT_ID = 'din-client-id';
const TOKEN_URL = 'https://test.maskinporten.no/token';
const ALTINN_BASE = 'https://platform.tt02.altinn.no';

// 1. Bygg og signer JWT-grant
const now = Math.floor(Date.now() / 1000);
const assertion = jwt.sign(
  {
    aud: 'https://test.maskinporten.no/',
    iss: CLIENT_ID,
    scope: 'altinn:serviceowner/instances.read',
    iat: now,
    exp: now + 120,
    jti: crypto.randomUUID(),
  },
  privateKey,
  { algorithm: 'RS256', header: { kid: 'din-kid' } }
);

// 2. Bytt JWT mot access token
const tokenRes = await fetch(TOKEN_URL, {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
    assertion,
  }),
});
const { access_token } = await tokenRes.json();

// 3. Kall Altinn API
const res = await fetch(`${ALTINN_BASE}/storage/api/v1/instances?org=ttd`, {
  headers: { Authorization: `Bearer ${access_token}` },
});
const data = await res.json();
console.log(data);Code language: JavaScript (javascript)

Kjører du dette med en gyldig test-klient, får du tilbake en liste over instanser for testtjenesten ttd. Dette er selve «hello world» for Altinn API — og grunnmuren for enhver dypere integrasjon.

Altinn API vs andre offentlige API-er

Det norske offentlig-API-landskapet består av flere nøkkelplattformer. Altinn API dekker kommunikasjon og skjemaer, mens andre API-er dekker data. Sammenligningen under hjelper deg å velge riktig kilde.

APIDekkerAutentiseringTypisk bruk
Altinn APISkjemaer, meldinger, rollerMaskinporten (OAuth 2.0)Sende/motta skjema på vegne av virksomhet
Brønnøysund APIForetaksdata, regnskap, rollerÅpen (de fleste endepunkter)Berike kundeskjema, KYC, due diligence
Kartverket Matrikkel APIEiendom, bygg, adresserMaskinportenEiendomsovervåking, verdivurdering
Folkeregisteret APIPersonopplysningerMaskinporten + samtykkeVerifisere identitet, oppdatert adresse

Vil du se hvordan vi har brukt disse i praksis? Se case-studiene våre på Brønnøysundregistrene API i WordPress og Matrikkel API-integrasjon for veilag. Altinn API plasserer seg som kommunikasjonslaget over disse dataplattformene.

Vanlige feil med Altinn API og hvordan løse dem

Når vi setter opp Altinn API for kunder, ser vi de samme feilene om og om igjen. Her er de vanligste — og hva som faktisk fikser dem.

  • invalid_client fra Maskinporten. Du bruker sannsynligvis feil kid i JWT-headeren, eller den offentlige nøkkelen er ikke aktivert. Dobbeltsjekk at kid matcher nøyaktig det som er registrert i Samarbeidsportalen.
  • invalid_scope. Scope er ikke delegert til klienten din. For tjenesteeier-scopes må etaten eksplisitt delegere til ditt client_id.
  • 401 fra Altinn API selv om tokenet er gyldig. Du kaller produksjon med et TT02-token, eller omvendt. Sjekk iss i token og base-URL i kallet.
  • Klokke-skew. JWT har iat i fremtiden eller exp som allerede er utløpt. Synkroniser serverklokken med NTP.
  • Glemt å laste ned CA-sertifikater. Noen stacks i Docker-containere mangler norske rot-sertifikater, og TLS-håndtrykket feiler mot Altinn API. Oppdater ca-certificates-pakken.

Én praktisk tommelfingerregel: 90 % av feil ved integrasjon mot Altinn API oppstår i autentiseringslaget, ikke i selve API-kallet. Logg hele JWT-grant-responsen i testmiljø til flyten er stabil.

FAQ om Altinn API

Hva koster det å bruke Altinn API?

Altinn API er gratis å bruke for norske virksomheter. Du betaler kun for egen utviklingstid og drift. Maskinporten har heller ikke transaksjonskostnader.

Må jeg bruke Maskinporten for å kalle Altinn API?

For maskin-til-maskin-integrasjon ja, i praksis alltid. Noen brukerinnloggede flyter bruker ID-porten i stedet, men serverintegrasjoner går gjennom Maskinporten.

Hvor lang tid tar det å få tilgang til Altinn API?

Selve klientregistreringen er umiddelbar. Scope-godkjenning fra tjenesteeier tar typisk 1–3 uker avhengig av etat og scope-type.

Kan jeg bruke Altinn API fra frontend direkte?

Nei. Altinn API krever signering med privat nøkkel, som aldri skal eksponeres i frontend. All integrasjon går via din backend eller en serverless-funksjon.

Hva er forskjellen på Altinn 2 og Altinn 3 API?

Altinn 2 er eldre SOAP-basert og fases ut. Altinn 3 er REST-basert, moderne og anbefalt for alle nye integrasjoner av Altinn API.

Trenger du hjelp med Altinn API?

Altinn API er kraftig, men oppsettet med Maskinporten, scopes og TT02 kan være ugjennomtrengelig første gang. Hos Nettsmed har vi integrert Altinn API, Brønnøysund API og Kartverket API for kunder på tvers av bransjer — fra regnskap til eiendom. Trenger du en partner som kan bygge en skreddersydd integrasjon mot Altinn API, ta gjerne kontakt med oss for en uforpliktende prat. Vi setter deg i gang med Altinn API raskt og riktig.

Flere artikler

Skrevet 22. april 2026
Hva er Claude AI og hvorfor bør norske bedrifter bry seg? Få en enkel forklaring på Anthropic sin AI, priser, bruksområder og hvordan du kommer i gang....
Skrevet 17. april 2026
Trenger du hjelp til å bygge nettbutikk i 2026? Se realistiske priser, hva en partner leverer, og 5 valg som avgjør om nettbutikken lykkes. Få tilbud....
Skrevet 9. april 2026
Claude Code for bedrifter lar deg automatisere tilbud, kundeoppfølging og innhold med AI-skills. Se 5 konkrete eksempler fra norske bedrifter....