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.
- 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.
- Generer et nøkkelpar. Altinn API via Maskinporten krever et RSA- eller EC-nøkkelpar. Generer lokalt med OpenSSL og hold privatnøkkelen hemmelig.
- Opprett en Maskinporten-klient. Last opp den offentlige JWK-en, velg hvilke scopes du trenger (f.eks.
altinn:serviceowner/instances.read), og noterclient_id. - Få tildelt scopes. Mange Altinn-scopes krever søknad. For tjenester på vegne av en tjenesteeier (etat) må etaten selv delegere scope til klienten.
- Test i TT02. Implementer JWT-grant-flyten, bytt den inn mot et access token fra Maskinporten-test, og kall Altinn API i testmiljø.
- 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.
| API | Dekker | Autentisering | Typisk bruk |
|---|---|---|---|
| Altinn API | Skjemaer, meldinger, roller | Maskinporten (OAuth 2.0) | Sende/motta skjema på vegne av virksomhet |
| Brønnøysund API | Foretaksdata, regnskap, roller | Åpen (de fleste endepunkter) | Berike kundeskjema, KYC, due diligence |
| Kartverket Matrikkel API | Eiendom, bygg, adresser | Maskinporten | Eiendomsovervåking, verdivurdering |
| Folkeregisteret API | Personopplysninger | Maskinporten + samtykke | Verifisere 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_clientfra Maskinporten. Du bruker sannsynligvis feilkidi JWT-headeren, eller den offentlige nøkkelen er ikke aktivert. Dobbeltsjekk atkidmatcher 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 dittclient_id.- 401 fra Altinn API selv om tokenet er gyldig. Du kaller produksjon med et TT02-token, eller omvendt. Sjekk
issi token og base-URL i kallet. - Klokke-skew. JWT har
iati fremtiden ellerexpsom 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.