Passar para o conteúdo principal

Para continuar usando a API Axeptio a partir de 10 de julho de 2026

Em 10 de julho de 2026, a Axeptio muda seu sistema de autenticação. Veja como atualizar sua integração de API antes do prazo.

Escrito por Alexandre Dias Da Silva

A partir de 10 de julho de 2026, os tokens gerados pelo sistema de autenticação antigo serão invalidados e não será mais possível gerar um token de acesso à API Axeptio via nome de usuário e senha. Os endpoints de autenticação atuais serão descontinuados. Qualquer chamada à API Axeptio que apresente um token gerado pelo sistema antigo 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 é relevante para você se estiver chamando 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ê utiliza apenas a administração Axeptio e não chama 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 o Frontegg. Esta migração estabelece as bases técnicas necessárias para as novas funcionalidades que virão: MFA, login social, SSO e logs de auditoria. Também permite oferecer um gerenciamento de acesso à API mais robusto e granular.

O que acontece se você não migrar

A partir de 10 de julho de 2026, qualquer chamada à API Axeptio que utilize o sistema de autenticação antigo será rejeitada. Seus banners de consentimento já publicados não serã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 ID do Cliente e uma Secret, em vez de um token de longa duração via seu nome de usuário e senha.

Antes

Depois

Endpoint

POST /auth/local/signin

Credenciais

nome de usuário + senha

clientId + secret

Duração de vida

Longa duração

1 hora — a ser atualizado automaticamente

Transmissão

Authorization: Bearer

Authorization: Bearer (sem alteração)

Visão geral do fluxo

  1. Gerar um acesso à API na administração Axeptio. Você obtém um ID do Cliente e uma Secret que identificam sua integração.

  2. Solicitar um token do Frontegg apresentando seu ID do Cliente e sua Secret. Você recebe em retorno um access_token, válido por 1 hora.

  3. Chamar a API Axeptio incluindo este token no header Authorization: Bearer de cada requisição.

  4. Atualizar o token antes de sua expiração via o endpoint dedicado, sem precisar reintroduzir o ID do Cliente e a Secret.

1. Gerar um acesso à API na administração Axeptio

  1. Faça login na administração Axeptio.

  2. Na barra de navegação, clique em Conta.

  3. Clique em Configurar o token — uma janela abrirá.

  4. No menu, selecione Tokens pessoais.

  5. Clique em Gerar o token, dê um nome ao seu token e escolha uma duração de expiração. Recomendamos que você evite a opção Nunca: um token que não expira permanece válido indefinidamente em caso de vazamento. Se você não sabe o que escolher, opte por 90 dias para uma integração em produção, ou 7 dias para um uso pontual ou um teste.

  6. Copie o ID do Cliente e a Chave secreta que aparecem — eles não serão mais visíveis após esta etapa.

Guarde o ID do cliente e a chave secreta em um local seguro — eles não podem ser recuperados após a geração. Nunca os coloque em código: armazene-os em variáveis de ambiente.

Você pode gerar quantos tokens forem necessários — a descrição permite identificá-los. Isso é útil se você tem múltiplos ambientes (desenvolvimento, produção) ou múltiplas integrações: cada token é independente, permitindo que você revogue o acesso de uma integração específica sem afetar as outras.

2. Solicitar um token do Frontegg

Chame o endpoint Frontegg com seu ID do Cliente e sua 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 precisar reintroduzir o ID do Cliente e a 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 estiverem visíveis na administração Axeptio, ou para qualquer outra questão, não hesite em contatar nossa equipe de suporte.

Respondeu à sua pergunta?