Last modified: Sep 14, 2026

Scopes for the system user API

Overview of which Maskinporten scopes each endpoint in the system user API requires

Scopes you need

As an end user system vendor you need three scopes to use the system user API. They are granted to your Maskinporten client when you fill in the registration form for end user system vendors and tick the box for system user.

ScopeWhat you use it for
altinn:authentication/systemregister.writeManaging your systems in the system register, and listing the system users attached to one of your systems
altinn:authentication/systemuser.request.writeCreating, changing and deleting system user requests, and looking up a system user
altinn:authentication/systemuser.request.readRetrieving the status of the requests you have sent

If your system also performs client delegation through the API, you additionally need altinn:clientdelegations.read and altinn:clientdelegations.write. See Client delegation.

The scopes above apply to the system user API only. Service owners decide which scopes their own services require, and those scopes must be granted to you separately by the service owner.

altinn:authentication/systemregister.write

MethodEndpoint
POSTauthentication/api/v1/systemregister/vendor
GETauthentication/api/v1/systemregister/vendor
GETauthentication/api/v1/systemregister/vendor/{systemId}
PUTauthentication/api/v1/systemregister/vendor/{systemId}
PUTauthentication/api/v1/systemregister/vendor/{systemId}/rights
PUTauthentication/api/v1/systemregister/vendor/{systemId}/accesspackages
DELETEauthentication/api/v1/systemregister/vendor/{systemId}
GETauthentication/api/v1/systemregister/vendor/{systemId}/changelog
GETauthentication/api/v1/systemuser/vendor/bysystem/{systemId}

Note the last endpoint: listing the system users belonging to one of your systems requires systemregister.write, not one of the systemuser scopes.

altinn:authentication/systemuser.request.write

MethodEndpoint
POSTauthentication/api/v1/systemuser/request/vendor
POSTauthentication/api/v1/systemuser/request/vendor/agent
DELETEauthentication/api/v1/systemuser/request/vendor/{requestId}
POSTauthentication/api/v1/systemuser/changerequest/vendor
DELETEauthentication/api/v1/systemuser/changerequest/vendor/{requestId}
GETauthentication/api/v1/systemuser/vendor/byquery

The vendor/byquery lookup is a GET call, but still requires the write scope.

altinn:authentication/systemuser.request.read

MethodEndpoint
GETauthentication/api/v1/systemuser/request/vendor/{requestId}
GETauthentication/api/v1/systemuser/request/vendor/agent/{requestId}
GETauthentication/api/v1/systemuser/request/vendor/byexternalref/{systemId}/{orgNo}/{externalRef}
GETauthentication/api/v1/systemuser/request/vendor/agent/byexternalref/{systemId}/{orgNo}/{externalRef}
GETauthentication/api/v1/systemuser/request/vendor/bysystem/{systemId}
GETauthentication/api/v1/systemuser/request/vendor/agent/bysystem/{systemId}
GETauthentication/api/v1/systemuser/changerequest/vendor/{requestId}
GETauthentication/api/v1/systemuser/changerequest/vendor/byexternalref/{systemId}/{orgNo}/{externalRef}
GETauthentication/api/v1/systemuser/changerequest/vendor/bysystem/{systemId}

Setting up the client

All the endpoints above require a Maskinporten token, sent as a Bearer token. See Setting up Maskinporten client for how to create the client and add the scopes.

If the token lacks the correct scope, the API returns 403 Forbidden.