Passer au contenu principal

Pour continuer à utiliser l'API Axeptio à partir du 10 juillet 2026

Le 10 juillet 2026, Axeptio change son système d'authentification. Voici comment mettre à jour votre intégration API avant la date limite.

Écrit par Alexandre Dias Da Silva

À partir du 10 juillet 2026, les tokens générés par l'ancien système d'authentification seront invalidés et il ne sera plus possible de générer un token d'accès à l'API Axeptio via username et password. Les endpoints d'authentification actuels seront dépréciés. Tout appel à l'API Axeptio présentant un token généré par l'ancien système sera rejeté — que ce soit depuis du code, un script, ou un outil comme Postman. Si c'est votre cas, mettez à jour votre méthode d'authentification en suivant les étapes ci-dessous.

Qui est concerné ?

Cet article vous concerne si vous appelez l'API Axeptio directement — depuis du code, un script, vos intégrations, un outil comme Postman, ou tout autre client HTTP.

Si vous utilisez uniquement l'administration Axeptio et n'appelez pas l'API directement, aucune action n'est requise de votre part.

Pourquoi ce changement ?

Axeptio migre son système d'authentification vers Frontegg. Cette migration pose les fondations techniques nécessaires aux nouvelles fonctionnalités à venir : MFA, Social login, SSO et logs d'audit. Elle permet également d'offrir une gestion des accès API plus robuste et plus fine.

Ce qui se passe si vous ne migrez pas

À partir du 10 juillet 2026, tout appel à l'API Axeptio utilisant l'ancien système d'authentification sera rejeté. Vos bandeaux de consentement déjà publiés ne sont pas affectés — seules les intégrations programmatiques cessent de fonctionner.

Ce qui change

Le endpoint pour obtenir un Bearer token change, ainsi que les credentials associés, mais la façon de transmettre le token dans vos requêtes reste la même — un header Authorization: Bearer. Ce qui change en pratique : vous obtenez désormais un token de courte durée auprès de Frontegg en échange d'un Client ID et d'un Secret, plutôt qu'un token longue durée via votre username et votre password.

Avant

Après

Endpoint

POST /auth/local/signin

Credentials

username + password

clientId + secret

Durée de vie

Longue durée

1 heure — à rafraîchir automatiquement

Transmission

Authorization: Bearer

Authorization: Bearer (inchangé)

Présentation globale du flow

  1. Générer un accès API dans l'administration Axeptio. Vous obtenez un Client ID et un Secret qui identifient votre intégration.

  2. Demander un token à Frontegg en présentant votre Client ID et votre Secret. Vous recevez en retour un access_token, valide pendant 1 heure.

  3. Appeler l'API Axeptio en incluant ce token dans le header Authorization: Bearer de chaque requête.

  4. Rafraîchir le token avant son expiration via le endpoint dédié, sans avoir à ressaisir le Client ID et le Secret.

1. Générer un accès API dans l'administration Axeptio

  1. Connectez-vous à l'administration Axeptio.

  2. Dans la barre de navigation, cliquez sur Compte.

  3. Cliquez sur Configurer le token — une fenêtre s'ouvre.

  4. Dans le menu, sélectionnez Jetons personnels.

  5. Cliquez sur Générer le jeton, donnez un nom à votre jeton et choisissez une durée d'expiration. Nous vous recommandons d'éviter l'option Jamais : un token qui n'expire pas reste valide indéfiniment en cas de fuite. Si vous ne savez pas quoi choisir, optez pour 90 jours pour une intégration en production, ou 7 jours pour un usage ponctuel ou un test.

  6. Copiez l'Identifiant du client et la Clé secrète qui s'affichent — ils ne seront plus visibles après cette étape.

Conservez l'identifiant du client et la clé secrète en lieu sûr — ils ne peuvent pas être récupérés après génération. Ne les écrivez jamais en dur dans votre code : stockez-les dans des variables d'environnement.

Vous pouvez générer autant de tokens que nécessaire — la description vous permet de les identifier. C'est utile si vous avez plusieurs environnements (développement, production) ou plusieurs intégrations : chaque token est indépendant, ce qui vous permet de révoquer l'accès d'une intégration spécifique sans affecter les autres.

2. Demander un token à Frontegg

Appelez le endpoint Frontegg avec votre Client ID et votre Secret. Vous recevez en retour un access_token, valide pendant 1 heure, et un refresh_token pour le renouveler.

curl -X POST https://login.axept.io/identity/resources/auth/v2/api-token \
-H "Content-Type: application/json" \
-d '{ "clientId": "<CLIENT_ID>", "secret": "<SECRET>" }'

Réponse :

{
"access_token": "eyJ...",
"refresh_token": "dGhp...",
"expires_in": 3600
}

3. Appeler l'API Axeptio

Incluez l'access_token dans le header Authorization de chaque requête.

curl https://api.axept.io/v1/<ENDPOINT> \
-H "Authorization: Bearer <ACCESS_TOKEN>"

4. Rafraîchir le token avant expiration

Le token expire après 1 heure. Avant chaque appel, vérifiez s'il est encore valide et rafraîchissez-le si nécessaire — sans avoir à ressaisir le Client ID et le Secret.

curl -X POST https://login.axept.io/identity/resources/auth/v2/api-token/token/refresh \
-H "Content-Type: application/json" \
-d '{ "refreshToken": "<REFRESH_TOKEN>" }'

Exemples de code complets

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();
}

// Utilisation avec rafraîchissement automatique
let token = await getAccessToken(CLIENT_ID, SECRET);

let expiresAt = Date.now() + token.expires_in * 1000;

async function apiCall(path: string) {
// Rafraîchit 60 s avant expiration pour éviter les rejets en cas de latence réseau
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()

# Utilisation avec rafraîchissement automatique
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 de marge pour éviter les rejets en cas de latence réseau
token = refresh_access_token(token["refresh_token"])
expires_at = time.time() + token["expires_in"]
return call_axeptio_api(token["access_token"], path)

Référence

La liste complète des endpoints disponibles est documentée dans le Swagger Axeptio.

Besoin d'aide ?

Si vos appels échouent après la migration, si vos credentials ne sont pas visibles dans l'administration Axeptio, ou pour toute autre question, n'hésitez pas à contacter notre équipe support.

Avez-vous trouvé la réponse à votre question ?