Com as credenciais em mãos, o próximo passo é trocá-las por um access_token — a chave que acompanha todas as chamadas da API. Este artigo mostra como gerar o token, como usá-lo e o que fazer quando ele expira.
Neste artigo
- Antes de começar
- Como funciona
- Gerar o token no Postman
- Gerar o token pelo seu sistema
- Quando o token expira
- Boas práticas
- Problemas comuns
Antes de começar
- As seis credenciais da sua instância, reunidas em Comece por aqui: credenciais para integrar com a API da Engage.
- Um usuário de serviço com perfil de administrador — o login dedicado à integração, normalmente no formato
integracao+customer_id(exemplo:integracaomeucliente). - A coleção do Postman importada, se quiser testar sem escrever código. Ela está anexada ao artigo de credenciais.
Como funciona
A autenticação tem três etapas, sempre nesta ordem:
- Sua integração envia as credenciais para
POST /auth. - A API devolve um
access_tokene o tempo de validade dele, em segundos. - Em todas as chamadas seguintes, o token vai no cabeçalho
Authorization. Quando ele expira, a integração pede um novo.
Gerar o token no Postman
- Selecione o Environment Engage - APIs (preencher) e confira que
customerId,clientId,clientSecret,adminUsereadminPassestão preenchidos. - Confirme que
baseUrlaponta para homologação. - Abra a pasta 02 - Autenticação, request Obter access_token (grant_type=password), e clique em Send.

Request de autenticação no Postman: corpo no formato x-www-form-urlencoded, com os valores vindos das variáveis do Environment
Sucesso
A resposta traz o access_token, e o próprio request já o guarda na variável accessToken. Todas as outras pastas da coleção usam essa variável — você não copia token na mão.
Gerar o token pelo seu sistema
1Envie as credenciais
POST https://sandbox.engage.bz/api/v1/auth
Content-Type: application/x-www-form-urlencoded
grant_type=password&customer_id={customer_id}&client_id={client_id}&client_secret={client_secret}&username={username}&password={password}| Campo | Obrigatório | Valor | Observação |
|---|---|---|---|
grant_type | Sim | password | Sempre password para login com usuário e senha |
customer_id | Sim | o seu customer_id | A instância precisa existir e estar ativa |
client_id | Sim | o seu client_id | Aplicação registrada na instância |
client_secret | Sim | o seu client_secret | Envie sempre, mesmo que a chamada funcione sem ele |
username | Sim | login do usuário de serviço | Exemplo: integracaomeucliente |
password | Sim | senha do usuário de serviço | — |
device | Não | computer | Aceita computer, app ou mobile. Padrão: computer |
language_id | Não | pt-BR | Idioma das mensagens de erro: pt-BR, en-US, es-ES ou fr-FR |
Atenção
O corpo precisa ser application/x-www-form-urlencoded. Este endpoint não aceita JSON — se o corpo for enviado como JSON, os campos chegam vazios e o erro aparece como customer_id ou grant_type inválido.
2Guarde o token e a validade
Resposta de sucesso (valores ilustrativos):
{
"access_token": "{access_token}",
"token_type": "bearer",
"expires_in": 86400,
"refresh_token": "{refresh_token}",
"client_id": "meusistema",
"customer_id": "meucliente",
"user_id": "12345",
"device": "computer"
}Sua integração precisa de dois campos: access_token, o token em si, e expires_in, por quantos segundos ele vale.
3Envie o token em todas as chamadas
Authorization: Bearer {access_token}A palavra Bearer vem antes do token, separada por um espaço.
Quando o token expira
O access_token tem prazo de validade. Depois dele, qualquer endpoint passa a responder HTTP 401 — nenhum avisa antes.
- Leia sempre o
expires_inda resposta. O tempo de vida é definido no cadastro de cada aplicação e muda de uma instância para outra. - Renove com folga, antes do fim do prazo.
- Trate o 401 como "renove e tente uma vez", não como erro definitivo. Se a nova tentativa também falhar, aí sim é um problema a investigar.
Cuidado
Não fixe o tempo de expiração no seu código. A documentação antiga afirmava 25 minutos como regra fixa — o número está errado e o valor varia por aplicação. O único valor confiável é o expires_in.
Dica
Gerar um token novo derruba o anterior, e o refresh_token nem sempre vem na resposta. Como lidar com renovação e sessão simultânea está em "Passo 2.1 — access_token, refresh_token e customer_token: qual é qual".
Boas práticas
- Use um usuário de serviço, nunca o login de uma pessoa. Usuários comuns passam pelas políticas de troca de senha no primeiro acesso e de expiração de senha, que bloqueiam a autenticação sem aviso.
- Envie sempre o
client_secret. Em algumas instâncias a chamada funciona sem ele — a integração passa em homologação e falha em produção. - Só existem dois
grant_typepara integração:password, para gerar o token, erefresh_token, para renová-lo. - Credenciais nunca vão na URL nem em log. Elas viajam no corpo da requisição.
- Evite repetição automática em loop. Muitas tentativas com senha errada travam o usuário por alguns minutos.
Problemas comuns
| O que aparece | Causa provável | O que fazer |
|---|---|---|
invalid_grant | grant_type ausente ou escrito errado | Envie grant_type=password |
invalid_customer_id | customer_id vazio, inexistente ou instância inativa — ou corpo enviado como JSON | Confira o valor e envie o corpo como x-www-form-urlencoded |
invalid_parameters | Valor inválido em device, language_id, client_id ou client_secret | Revise os valores aceitos na tabela da Etapa 1 |
invalid_client_secret | Segredo ausente ou incorreto | Use o client_secret gerado no registro da aplicação |
invalid_credentials | Login inexistente, usuário inativo ou senha errada | Confira o login do usuário de serviço |
user_is_blocked | Usuário bloqueado na plataforma | Desbloqueie em Usuários, na área administrativa |
max_attempts_reached | Excesso de tentativas com senha errada | Aguarde alguns minutos ou redefina a senha no Admin |
change_password_on_first_access ou password_is_expired | Usuário comum, sujeito à política de senha | Troque para o usuário de serviço |
schedule_lock | A instância limita o acesso por horário | Ajuste a configuração ou o horário da rotina |
license_expired | Licença da instância vencida | Fale com o time comercial ou com o Suporte |
your_ip_is_not_allowed | IP de origem fora da lista permitida | Peça a liberação do IP ao Suporte |
| HTTP 401 em outro endpoint | Token expirado, derrubado por um login mais recente, ou de outra instância | Gere um novo token e confira se a rota usa o mesmo customer_id |
| HTTP 403 | Token válido, mas o usuário não tem permissão para o recurso | Confira o perfil de administrador do usuário de serviço |
A pasta 98 - Erros comuns da coleção traz o catálogo completo de erros e uma chamada de diagnóstico que separa "o token expirou" de "falta permissão".
Próximo passo
Com o token gerado, você já pode atualizar usuários — veja Integração de usuários.
Precisa de ajuda?
Escreva para meajuda@engage.bz informando o customer_id, o ambiente e a mensagem de erro completa. Nunca envie senhas ou o client_secret por e-mail.
Este artigo foi útil?
Que bom!
Obrigado pelo seu feedback
Desculpe! Não conseguimos ajudar você
Obrigado pelo seu feedback
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo