Vanaf 10 juli 2026 worden tokens gegenereerd door het oude authenticatiesysteem ongeldig en is het niet langer mogelijk een API-toegangstoken voor Axeptio via gebruikersnaam en wachtwoord te genereren. De huidige authenticatie-endpoints worden afgeschaft. Elke aanroep naar de Axeptio API met een token gegenereerd door het oude systeem zal worden geweigerd — of het nu vanuit code, een script of een hulpprogramma zoals Postman is. Als dit op u van toepassing is, werkt u uw authenticatiemethode bij door de onderstaande stappen te volgen.
Voor wie is dit relevant?
Dit artikel is relevant voor u als u rechtstreeks de Axeptio API aanroept — vanuit code, een script, uw integraties, een hulpprogramma zoals Postman of een ander HTTP-client.
Als u alleen het Axeptio-beheerdersportaal gebruikt en de API niet rechtstreeks aanroept, hoeft u niets te ondernemen.
Waarom deze wijziging?
Axeptio migreert zijn authenticatiesysteem naar Frontegg. Deze migratie legt de technische grondslagen voor nieuwe functies: MFA, Social login, SSO en auditlogs. Het maakt ook robuustere en fijnmazig beheerde API-toegang mogelijk.
Wat gebeurt er als u niet migreert
Vanaf 10 juli 2026 zal elke aanroep naar de Axeptio API met het oude authenticatiesysteem worden geweigerd. Uw reeds gepubliceerde toestemmingsbanners worden niet beïnvloed — alleen programmatische integraties zullen niet meer werken.
Wat verandert
Het endpoint om een Bearer-token te verkrijgen verandert, evenals de bijbehorende referenties, maar de manier waarop u het token in uw aanvragen verzendt blijft hetzelfde — een Authorization: Bearer header. Wat in de praktijk verandert: u verkrijgt nu een token met korte geldigheidsduur van Frontegg in ruil voor een Client ID en Secret, in plaats van een token met lange geldigheidsduur via uw gebruikersnaam en wachtwoord.
Voordien | Daarna | |
Endpoint | POST /auth/local/signin | |
Referenties | username + password | clientId + secret |
Geldigheid | Lange duur | 1 uur — automatisch vernieuwen |
Verzending | Authorization: Bearer | Authorization: Bearer (ongewijzigd) |
Overzicht van de flow
Genereer een API-toegang in het Axeptio-beheerdersportaal. U ontvangt een Client ID en Secret die uw integratie identificeren.
Vraag een token aan bij Frontegg met behulp van uw Client ID en Secret. U ontvangt in ruil een
access_token, geldig gedurende 1 uur.Roep de Axeptio API aan door dit token op te nemen in de
Authorization: Bearerheader van elke aanvraag.Vernieuw het token voordat het vervalt via het daarvoor bestemde endpoint, zonder opnieuw de Client ID en Secret in te voeren.
1. Genereer een API-toegang in het Axeptio-beheerdersportaal
Log in bij het Axeptio-beheerdersportaal.
Ga naar Instellingen → API-toegang.
Kopieer uw Client ID en uw Secret.
Bewaar uw secret op een veilige plaats — het kan niet worden opgehaald na generatie. Zet het nooit hardcoded in uw code: bewaar het in een omgevingsvariabele.
2. Vraag een token aan bij Frontegg
Roep het Frontegg-endpoint aan met uw Client ID en Secret. U ontvangt in ruil een access_token, geldig gedurende 1 uur, en een refresh_token om het te vernieuwen.
curl -X POST https://login.axept.io/identity/resources/auth/v2/api-token \
-H "Content-Type: application/json" \
-d '{ "clientId": "<CLIENT_ID>", "secret": "<SECRET>" }'
Antwoord:
{
"access_token": "eyJ...",
"refresh_token": "dGhp...",
"expires_in": 3600
}
3. Roep de Axeptio API aan
Voeg de access_token op in de Authorization header van elke aanvraag.
curl https://api.axept.io/v1/<ENDPOINT> \
-H "Authorization: Bearer <ACCESS_TOKEN>"
4. Vernieuw het token voordat het vervalt
Het token vervalt na 1 uur. Controleer voor elke aanroep of het nog geldig is en vernieuw het indien nodig — zonder opnieuw de Client ID en Secret in te voeren.
curl -X POST https://login.axept.io/identity/resources/auth/v2/api-token/token/refresh \
-H "Content-Type: application/json" \
-d '{ "refreshToken": "<REFRESH_TOKEN>" }'
Volledige codevoorbeelden
TypeScript / Node.js
const FRONTEGG_URL = process.env.FRONTEGG_URL;
interface FronteggTokenResponse {
access_token: string;
refresh_token: string;
expires_in: number;
}
async function getAccessToken(clientId: string, secret: string): Promise<FronteggTokenResponse> {
const res = await fetch(`${FRONTEGG_URL}/identity/resources/auth/v2/api-token`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ clientId, secret }),
});
if (!res.ok) throw new Error(`Token fetch failed: ${res.status}`);
return res.json();
}
async function refreshAccessToken(refreshToken: string): Promise<FronteggTokenResponse> {
const res = await fetch(`${FRONTEGG_URL}/identity/resources/auth/v2/api-token/token/refresh`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ refreshToken }),
});
if (!res.ok) throw new Error(`Token refresh failed: ${res.status}`);
return res.json();
}
async function callAxeptioApi(accessToken: string, path: string) {
const res = await fetch(`https://api.axept.io/v1${path}`, {
headers: { Authorization: `Bearer ${accessToken}` },
});
if (!res.ok) throw new Error(`API call failed: ${res.status}`);
return res.json();
}
// Gebruik met automatisch vernieuwen
let token = await getAccessToken(CLIENT_ID, SECRET);
let expiresAt = Date.now() + token.expires_in * 1000;
async function apiCall(path: string) {
// Vernieuwt 60 s voor verloop om afwijzingen door netwerkvertraging te voorkomen
if (Date.now() > expiresAt - 60_000) {
token = await refreshAccessToken(token.refresh_token);
expiresAt = Date.now() + token.expires_in * 1000;
}
return callAxeptioApi(token.access_token, path);
}
Python
import time
import requests
FRONTEGG_URL = "https://login.axept.io"
AXEPTIO_API = "https://api.axept.io/v1"
def get_access_token(client_id: str, secret: str) -> dict:
res = requests.post(
f"{FRONTEGG_URL}/identity/resources/auth/v2/api-token",
json={"clientId": client_id, "secret": secret},
)
res.raise_for_status()
return res.json()
def refresh_access_token(refresh_token: str) -> dict:
res = requests.post(
f"{FRONTEGG_URL}/identity/resources/auth/v2/api-token/token/refresh",
json={"refreshToken": refresh_token},
)
res.raise_for_status()
return res.json()
def call_axeptio_api(access_token: str, path: str) -> dict:
res = requests.get(
f"{AXEPTIO_API}{path}",
headers={"Authorization": f"Bearer {access_token}"},
)
res.raise_for_status()
return res.json()
# Gebruik met automatisch vernieuwen
token = get_access_token(CLIENT_ID, SECRET)
expires_at = time.time() + token["expires_in"]
def api_call(path: str) -> dict:
global token, expires_at
if time.time() > expires_at - 60: # 60 s marge om afwijzingen door netwerkvertraging te voorkomen
token = refresh_access_token(token["refresh_token"])
expires_at = time.time() + token["expires_in"]
return call_axeptio_api(token["access_token"], path)
Referentie
De volledige lijst met beschikbare endpoints is gedocumenteerd in de Axeptio Swagger.
Hulp nodig?
Als uw aanroepen na de migratie mislukken, als uw referenties niet zichtbaar zijn in het Axeptio-beheerdersportaal, of voor andere vragen, aarzel niet om contact op te nemen met ons ondersteuningsteam.
