Como usar a API do GoHighLevel para criar integrações personalizadas
A API do GoHighLevel permite conectar a plataforma a sistemas externos, automatizar fluxos de dados e construir integrações sob medida para necessidades que os conectores nativos não cobrem. Este guia explica como começar, quais pontos de atenção considerar e como evitar os erros mais comuns.
O que é a API do GoHighLevel e quando usá-la
O GoHighLevel disponibiliza uma API REST pública que permite ler e escrever dados de contatos, oportunidades, pipelines, calendários, conversas e outros recursos da plataforma. A documentação oficial fica em developers.gohighlevel.com e é atualizada com frequência — vale sempre consultar diretamente o portal antes de iniciar qualquer projeto.
Usar a API faz sentido quando:
- Você precisa sincronizar o GoHighLevel com um sistema legado (ERP, banco de dados próprio, plataforma de e-commerce).
- As automações nativas ou os Zaps/webhooks disponíveis não cobrem a lógica de negócio necessária.
- Você quer construir um painel customizado consumindo dados da plataforma em tempo real.
A API não é a melhor escolha se a integração já existe de forma nativa ou via Zapier/Make com custo e complexidade menores. Avalie o custo de desenvolvimento antes de optar pela rota de código.
Autenticação: chaves de API e OAuth 2.0
O GoHighLevel suporta dois métodos de autenticação, e a escolha impacta diretamente a arquitetura da integração.
Chave de API (API Key)
Indicada para integrações internas, scripts de automação ou projetos de agência em que você controla a sub-conta. A chave é gerada dentro da plataforma e enviada no cabeçalho de cada requisição.
- Acesse Configurações na sub-conta desejada.
- No menu lateral, clique em Integrações e depois em API.
- Copie a chave exibida ou gere uma nova clicando em Criar Chave de API.
- Inclua a chave no cabeçalho HTTP de todas as requisições:
Authorization: Bearer SUA_CHAVE_AQUI.
Atenção: trate a chave de API como uma senha. Não a exponha em repositórios públicos nem em código front-end executado no navegador.
OAuth 2.0
Indicado para aplicações SaaS ou Marketplace Apps que precisam acessar múltiplas contas de clientes sem armazenar credenciais manualmente. O fluxo segue o padrão Authorization Code:
- Registre o aplicativo no Developer Portal do GoHighLevel.
- Defina o
redirect_urie os escopos necessários (ex.:contacts.readonly,opportunities.write). - Redirecione o usuário para a URL de autorização gerada pela plataforma.
- Após o consentimento, troque o
coderecebido por umaccess_tokene umrefresh_token. - Use o
access_tokennas requisições e renove-o antes do vencimento com orefresh_token.
A disponibilidade de certos escopos pode variar conforme o plano contratado — verifique na documentação oficial quais escopos estão liberados para o seu nível de acesso.
Fazendo sua primeira chamada à API
Com a autenticação configurada, uma boa primeira chamada é listar os contatos de uma sub-conta. Isso confirma que as credenciais estão corretas e que o endpoint está acessível.
- Abra uma ferramenta como Postman, Insomnia ou use
curlno terminal. - Configure o método como
GETe a URL:https://services.leadconnectorhq.com/contacts/?locationId=SEU_LOCATION_ID. - No cabeçalho, adicione:
Authorization: Bearer SUA_CHAVE_OU_ACCESS_TOKENVersion: 2021-07-28(verifique na documentação a versão mais recente recomendada)
- Envie a requisição e verifique se o corpo da resposta retorna a lista de contatos em formato JSON.
- Caso retorne erro
401, a autenticação está incorreta. Erro403indica falta de permissão no escopo. Erro422costuma indicar parâmetros mal formatados.
Com a primeira chamada funcionando, você pode avançar para endpoints de escrita, como POST /contacts para criar contatos ou PUT /opportunities/{id} para atualizar oportunidades.
Boas práticas para integrações robustas
Uma integração que funciona em testes pode falhar em produção se não considerar volume, erros e manutenção. Algumas práticas fundamentais:
- Respeite os limites de taxa (rate limits): a API impõe limites de requisições por segundo e por minuto. Implemente filas e retentativas com backoff exponencial para não ser bloqueado.
- Registre logs detalhados: grave o corpo da requisição, o código de resposta e o timestamp de cada chamada. Isso acelera o diagnóstico quando algo der errado.
- Use webhooks para eventos em tempo real: em vez de fazer polling constante à API, configure webhooks para receber notificações quando um contato for criado, uma oportunidade mudar de estágio ou uma conversa chegar. Isso reduz o consumo de cota e a latência.
- Versionamento: a plataforma pode deprecar endpoints. Monitore os changelogs do Developer Portal e defina um processo de atualização periódica da integração.
- Ambientes separados: se possível, use uma sub-conta de testes (sandbox) durante o desenvolvimento para não interferir em dados reais de clientes.
Erros comuns e como resolvê-los
Mesmo seguindo a documentação, alguns problemas aparecem com frequência. Veja os mais relatados e como abordá-los.
Erro 401 — Unauthorized A chave de API ou o token OAuth está ausente, expirado ou incorreto. Verifique se o cabeçalho Authorization está no formato Bearer TOKEN (com espaço, sem aspas extras) e se o token OAuth ainda é válido.
Erro 404 — Not Found O locationId (identificador da sub-conta) ou o ID do recurso está errado. Confirme os IDs diretamente na URL da sub-conta dentro da plataforma ou via endpoint GET /locations.
Erro 429 — Too Many Requests Você atingiu o rate limit. Implemente um mecanismo de espera antes de reenviar a requisição. O cabeçalho de resposta costuma indicar quando a janela de limite é renovada.
Campos obrigatórios faltando (422) Alguns endpoints exigem campos específicos que não são óbvios na documentação. Leia a seção de Request Body Schema com atenção e teste com payloads mínimos antes de adicionar campos opcionais.
Dados desatualizados após escrita Algumas operações de escrita têm latência de propagação. Se você escreve um dado e imediatamente lê o mesmo recurso, pode receber o valor anterior. Adicione um intervalo pequeno ou consuma o webhook de confirmação antes de fazer a leitura subsequente.
Webhooks não chegando Verifique se a URL de destino é pública, aceita POST e retorna status 200 rapidamente. Respostas lentas ou com erro fazem a plataforma parar de tentar reenviar após algumas tentativas.
A API do GoHighLevel é uma ferramenta poderosa para quem precisa de integrações além do que os conectores nativos oferecem, mas exige conhecimento técnico de HTTP, autenticação e boas práticas de desenvolvimento. Se o seu caso de uso é simples, avalie primeiro as opções nativas antes de investir em desenvolvimento customizado.
Ainda com dúvida?
Se este passo a passo não resolveu o seu caso, descreva o cenário exato. Cada dúvida recebida vira um novo tutorial nesta central.
Enviar minha dúvida