Infraestrutura·9 min de leitura

O guia definitivo para integrar APIs REST no seu ERP

Integração de ERP quebra por motivos previsíveis. Este é o roteiro para não cair em nenhum deles.

Integração de API com ERP tem fama de projeto difícil, mas quase nunca falha pelo motivo que as pessoas esperam. Raramente é o protocolo, o formato do payload ou a autenticação — isso está documentado e resolve em uma tarde. O que derruba integração em produção é sempre a mesma lista curta de decisões que ninguém tomou de propósito.

Este guia é essa lista, na ordem em que ela costuma aparecer.

Antes de escrever código: onde a chamada mora

A primeira decisão define todas as outras, e é a que mais gente pula.

Uma chamada de API pode acontecer em três lugares, e eles têm consequências completamente diferentes:

No caminho do usuário — alguém digita um CNPJ no formulário de cadastro e espera os campos preencherem. A chamada é síncrona, o usuário está olhando, e cada milissegundo importa. Aqui, indisponibilidade da API precisa degradar com elegância: se a consulta falhar, o formulário continua funcionando com preenchimento manual. Uma integração que trava o cadastro quando o serviço externo cai é pior do que não ter integração.

Em segundo plano, por evento — um pedido foi criado e você quer enriquecer os dados do cliente. Ninguém está esperando. Aqui a chamada vai para uma fila, pode levar segundos, pode tentar de novo, e a falha não bloqueia nada.

Em lote, agendado — toda madrugada você revalida a situação cadastral da carteira inteira. Volume alto, tolerância a lentidão alta, mas exige atenção a limite de requisições.

A maioria dos problemas de integração vem de tratar um desses casos com o código do outro. Consulta em lote rodando de forma síncrona dentro de um request HTTP é a receita mais comum de timeout em produção.

O ERP raramente aceita chamada externa direta

Aqui vem o obstáculo prático. ERPs — especialmente os consolidados, com anos de customização — costumam viver em rede fechada, com linguagem própria, ciclo de release trimestral e um DBA que precisa aprovar cada alteração. Colocar um cliente HTTP dentro do ERP costuma ser mais caro politicamente do que tecnicamente.

O padrão que funciona é não colocar. Em vez disso, construa uma camada intermediária — um serviço pequeno, na sua stack preferida, que fala com a API externa e expõe para o ERP algo que ele já sabe consumir: uma tabela, uma view, um endpoint interno, um arquivo em diretório compartilhado.

Isso resolve três problemas de uma vez. O ERP não precisa de acesso à internet. A lógica de retry, cache e tratamento de erro fica em código que você consegue alterar sem passar por comitê. E quando a API mudar de versão, você mexe em um serviço, não no núcleo do sistema que a empresa inteira usa.

Cache não é otimização, é requisito

Muita gente trata cache como refinamento para depois. Em integração com dados cadastrais, ele é obrigatório desde o primeiro dia — e por um motivo que não é performance.

Dados de CNPJ mudam devagar. A base oficial é atualizada em ciclos de semanas. Consultar o mesmo CNPJ quarenta vezes no mesmo dia não traz nenhuma informação nova; só gasta quota, aumenta latência e cria dependência desnecessária de um serviço externo.

A regra prática: guarde a resposta com a data da consulta e trate como válida por um período compatível com o ciclo de atualização da fonte. Para dados cadastrais de empresa, algo entre sete e trinta dias é razoável. Guarde a resposta inteira, não só os campos que você usa hoje — o custo de armazenamento é irrelevante e o campo que você descartou é sempre o que alguém vai precisar no trimestre seguinte.

A exceção importante são as decisões em que o dado precisa ser o de agora, não o de duas semanas atrás: aprovar um limite de crédito, aceitar um fornecedor novo, assinar contrato. Nesses pontos vale furar o cache deliberadamente e fazer uma consulta em tempo real, e registrar no log que aquela decisão específica foi tomada com dado do momento. É a diferença entre uma auditoria tranquila e uma conversa difícil.

E guarde também as consultas que não retornaram nada. Um CNPJ inexistente continua inexistente na próxima tentativa; sem cache negativo, um dado ruim na base vira uma chamada perdida por dia, para sempre.

Timeout, retry e o erro clássico

Toda chamada externa precisa de timeout explícito. Sem ele, o cliente HTTP usa o padrão da biblioteca, que costuma ser generoso demais ou infinito — e uma única chamada travada segura uma conexão, que segura uma thread, que eventualmente derruba o pool inteiro.

Defina o timeout a partir do contexto: se o usuário está esperando, poucos segundos; se é processamento em fila, mais folga.

Para retry, três regras que evitam a maior parte dos incidentes:

Só repita o que faz sentido repetir. Erros de rede, timeout e respostas 5xx são candidatos. Um 400 significa que sua requisição está errada — repetir vai dar 400 de novo. Um 401 significa credencial inválida; repetir só acelera o bloqueio. Um 429 significa que você passou do limite, e aí a resposta correta é esperar, não insistir.

Espere de forma crescente. Retry imediato em rajada é como a maioria das integrações transforma uma instabilidade momentânea do fornecedor em uma indisponibilidade prolongada. Dobre o intervalo a cada tentativa e adicione uma variação aleatória, para que mil clientes não voltem todos no mesmo instante.

Tenha um teto. Três tentativas e desista, registrando a falha de forma recuperável. Retry infinito não é resiliência; é uma fila que cresce até estourar.

Idempotência, no lugar certo

Consulta é naturalmente idempotente — perguntar duas vezes pelo mesmo CNPJ não causa dano. O cuidado com idempotência aparece do seu lado da integração, no que você faz com a resposta.

Se o retorno da consulta dispara a criação de um registro no ERP, e o retry acontece depois de a primeira chamada ter sido processada mas antes de a confirmação chegar, você cria o registro duas vezes. A proteção é ter uma chave de negócio única — o próprio CNPJ, normalmente — e escrever com "insere ou atualiza" em vez de "insere".

Parece óbvio escrito assim. Ainda assim é a origem de boa parte dos cadastros duplicados que times de dados passam meses limpando.

Log do que você vai precisar às três da manhã

O log de integração tem um público específico: a pessoa que vai investigar por que um cliente reclamou que o cadastro veio errado, seis semanas depois de ter acontecido.

Registre, para cada chamada: o identificador consultado, o horário, o código de status, o tempo de resposta e um identificador de correlação que amarre a chamada ao request de origem. Em caso de erro, registre o corpo da resposta.

Não registre a chave de API. Nunca. É a forma mais comum de vazamento de credencial: alguém loga o cabeçalho inteiro para depurar, esquece de tirar, e a chave passa a viver em texto puro num sistema de log com acesso amplo.

E cuidado com dados pessoais. Log de integração costuma ficar fora do inventário de tratamento de dados da empresa — e é exatamente o tipo de coisa que aparece numa auditoria de LGPD. Registre o CNPJ consultado; pense duas vezes antes de registrar a resposta inteira com nomes de sócios.

O monitoramento que vale a pena

Um alerta que dispara toda semana por ruído é ignorado em duas semanas. Comece com três métricas e resista à tentação de adicionar mais antes de precisar:

Taxa de erro por status, separando 4xx de 5xx — a diferença entre "estou chamando errado" e "o fornecedor está com problema". Latência no percentil 95, porque a média esconde a cauda que os usuários realmente sentem. E taxa de acerto do cache: se ela cair de repente, algo mudou no padrão de uso e a sua conta vai refletir isso antes de você perceber.

Um roteiro de implantação

Do que costuma dar certo, em ordem:

Comece pelo caso de uso mais estreito que já entrega valor — normalmente o preenchimento automático de um formulário de cadastro. É visível, mede fácil e não põe processo crítico em risco.

Rode em modo sombra antes de confiar. Faça a chamada, registre o resultado, mas não use ainda. Uma semana disso mostra a taxa real de erro e de resposta vazia com dados de produção, sem consequência.

Só depois ligue de verdade, e mantenha o caminho manual funcionando. Integração que remove a alternativa manual antes de provar estabilidade cria um ponto único de falha com cara de melhoria.

Amplie para os outros casos de uso reaproveitando a mesma camada intermediária. O segundo caso deve custar uma fração do primeiro — se não custar, a camada foi mal desenhada e vale corrigir antes do terceiro.


Se o dado que você precisa integrar é cadastro de empresa brasileira, a Next API resolve CNPJ, CNAE, CEP e geolocalização por REST, com base sincronizada para volume e consulta em tempo real para as decisões que não podem errar. E se a integração fizer parte de um projeto maior, a Sharpfy também constrói sob medida — inclusive a camada intermediária descrita aqui.