A partir de 6 de julho de 2026, os tokens gerados pelo antigo sistema de autenticação serão invalidados e não será mais possível gerar um token de acesso à API Axeptio via username e password. Os endpoints de autenticação atuais serão descontinuados. Qualquer chamada à API Axeptio apresentando um token gerado pelo antigo sistema será rejeitada — seja a partir de código, um script ou uma ferramenta como Postman. Se este for o seu caso, atualize seu método de autenticação seguindo as etapas abaixo.
Quem é afetado?
Este artigo é para você se chamar a API Axeptio diretamente — a partir de código, um script, suas integrações, uma ferramenta como Postman ou qualquer outro cliente HTTP.
Se você usar apenas a administração Axeptio e não chamar a API diretamente, nenhuma ação é necessária da sua parte.
Por que essa mudança?
Axeptio está migrando seu sistema de autenticação para Frontegg. Esta migração estabelece as bases técnicas necessárias para os novos recursos em breve: MFA, Social login, SSO e logs de auditoria. Também permite oferecer uma gestão de acesso à API mais robusta e granular.
O que acontece se você não migrar
A partir de 6 de julho de 2026, qualquer chamada à API Axeptio usando o antigo sistema de autenticação será rejeitada. Seus banners de consentimento já publicados não são afetados — apenas as integrações programáticas deixarão de funcionar.
O que muda
O endpoint para obter um token Bearer muda, assim como as credenciais associadas, mas a forma de transmitir o token em suas requisições permanece a mesma — um header Authorization: Bearer. O que muda na prática: você agora obtém um token de curta duração do Frontegg em troca de um Client ID e um Secret, em vez de um token de longa duração via seu username e password.
Antes | Depois | |
Endpoint | POST /auth/local/signin | |
Credenciais | username + password | clientId + secret |
Duração de vida | Longa duração | 1 hora — a atualizar automaticamente |
Transmissão | Authorization: Bearer | Authorization: Bearer (inalterado) |
Visão geral do fluxo
Gerar um acesso à API na administração Axeptio. Você obtém um Client ID e um Secret que identificam sua integração.
Solicitar um token ao Frontegg apresentando seu Client ID e Secret. Você recebe em retorno um
access_token, válido por 1 hora.Chamar a API Axeptio incluindo este token no header
Authorization: Bearerde cada requisição.Atualizar o token antes de sua expiração via o endpoint dedicado, sem ter que reinserir o Client ID e o Secret.
1. Gerar um acesso à API na administração Axeptio
Esta seção estará disponível a partir de 6 de julho de 2026. Não é possível gerar suas credenciais antecipadamente.
Conecte-se à administração Axeptio.
Vá para Parâmetros → Acesso à API.
Copie seu Client ID e seu Secret.
Guarde seu secret em local seguro — ele não pode ser recuperado após a geração. Nunca o codifique diretamente em seu código: armazene-o em uma variável de ambiente.
2. Solicitar um token ao Frontegg
Chame o endpoint Frontegg com seu Client ID e Secret. Você recebe em retorno um access_token, válido por 1 hora, e um refresh_token para renová-lo.
curl -X POST https://login.axept.io/identity/resources/auth/v2/api-token \
-H "Content-Type: application/json" \
-d '{ "clientId": "<CLIENT_ID>", "secret": "<SECRET>" }'
Resposta:
{
"access_token": "eyJ...",
"refresh_token": "dGhp...",
"expires_in": 3600
}
3. Chamar a API Axeptio
Inclua o access_token no header Authorization de cada requisição.
curl https://api.axept.io/v1/<ENDPOINT> \
-H "Authorization: Bearer <ACCESS_TOKEN>"
4. Atualizar o token antes da expiração
O token expira após 1 hora. Antes de cada chamada, verifique se ainda é válido e atualize-o se necessário — sem ter que reinserir o Client ID e o 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>" }'
Exemplos de código completos
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();
}
// Utilização com atualização automática
let token = await getAccessToken(CLIENT_ID, SECRET);
let expiresAt = Date.now() + token.expires_in * 1000;
async function apiCall(path: string) {
// Atualiza 60 s antes da expiração para evitar rejeições em caso de latência de rede
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()
# Utilização com atualização automática
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 margem para evitar rejeições em caso de latência de rede
token = refresh_access_token(token["refresh_token"])
expires_at = time.time() + token["expires_in"]
return call_axeptio_api(token["access_token"], path)
Referência
A lista completa dos endpoints disponíveis está documentada no Swagger Axeptio.
Precisa de ajuda?
Se suas chamadas falharem após a migração, se suas credenciais não forem visíveis na administração Axeptio, ou para qualquer outra dúvida, não hesite em contatar nossa equipe de suporte.
