API v2 do CRM: Mais facilidade para as suas integrações

Conectar o setor comercial às ferramentas certas é o segredo para vender mais e melhor. A API v2 do CRM ERPFlex foi desenvolvida exatamente para isso: permitir que seus formulários de site, automações de marketing, chatbots de atendimento ou painéis de BI conversem diretamente com o ERPFlex sem complicações.

Neste post, você aprenderá desde as configurações básicas de conexão até o detalhamento de cada requisição.

Configurações Gerais de Conectividade

  • Base URL Oficial: https://api.erpflex.com.br/api_v2
  • Formato dos Dados: JSON (envio e resposta)
  • Tipo de Autenticação: HTTP Basic Auth
  • Usuário: Usuário APU cadastrado no ERPFlex.
  • Senha: Senha do usuário APU.
  • Cabeçalho Obrigatório (POST e PUT): Content-Type: application/json

 

Padronização das Respostas da API

Para facilitar o desenvolvimento, a API v2 sempre responde com a mesma estrutura organizada de JSON:

Quando a requisição dá certo (Sucesso):

JSON

{
  “status”: true,
  “message”: “Operação realizada com sucesso.”,
  “total”: 1,
  “data”: [ … ]
}

Quando acontece algum problema (Erro):

JSON

{
  “status”: false,
  “message”: “Descrição amigável do motivo do erro”,
  “total”: 0,
  “data”: []
}

 

Passo a Passo Recomendado para Integrar

Fluxo sugerido para testes:
  1. GET /funil: anotar CRM_FUNNEL_ID
  2. GET /etapas?funnel=ID:  anotar “id” da etapa (UUID para CRM_OP_STEP)
  3. GET /prospects: anotar CRM_EMP_ID
  4. POST /oportunidades: usar funil, prospect e owner
  5. GET /contatos: listar contatos do prospect
Substitua nos exemplos:
  • {FUNNEL_ID} = ID numerico do funil
  • {PROSPECT_ID} = CRM_EMP_ID
  • {OPORTUNIDADE_ID} = CRM_OP_ID
  • {CONTATO_ID} = CRM_EMP_CT_ID
  • {STEP_ID} = UUID da etapa (campo “id” retornado em GET /etapas)
  • {EA2_OWNER} = EA2_ID do responsavel (ex.: 7039 para usuario API)

Endpoints Disponíveis

GET – Listar todos os funis
Metodo: GET
URL: https://api.erpflex.com.br/api_v2/funil
Body: (nenhum)

Exemplo de resposta (sucesso):
{
“status”: true,
“message”: “Funis consultados com sucesso.”,
“total”: 2,
“data”: [
{
“CRM_FUNNEL_ID”: 1,
“CRM_FUNNEL_NAME”: “Vendas”,
“CRM_FUNNEL_IDEA1”: 10
}
]
}

GET – Consultar funil por ID
Metodo: GET
URL: https://api.erpflex.com.br/api_v2/funil/1
Body: (nenhum)

Substitua “1” pelo {FUNNEL_ID} desejado.

GET – Listar etapas por query string
Metodo: GET
URL: https://api.erpflex.com.br/api_v2/etapas?funnel=1
Body: (nenhum)

Parametro obrigatorio:
funnel = ID numerico do funil

GET – Listar etapas por path
Metodo: GET
URL:
https://api.erpflex.com.br/api_v2/etapas/1
Body: (nenhum)

O ID no path é o ID do funil (nao e ID de etapa).

Exemplo de item em “data”:
{
“id”: “a1b2c3d4-e5f6-7890-abcd-ef1234567890”,
“title”: “Qualificacao”,
“order”: 0
}

Use o campo “id” (UUID) no campo CRM_OP_STEP ao mudar etapa da oportunidade.

GET – Listar prospects

Metodo:  GET
URL https://api.erpflex.com.br/api_v2/prospects?limit=50&offset=0

Parametros opcionais:
limit = quantidade por pagina (padrao 50, maximo 500)
offset = deslocamento para paginacao (padrao 0)

GET – Buscar prospect por ID

Metodo: GET
URL https://api.erpflex.com.br/api_v2/prospects/15

POST – Criar prospect

Metodo:  POST
URL https://api.erpflex.com.br/api_v2/prospects
Header Content-Type: application/json

Body (exemplo minimo):
{
“CRM_EMP_RAZAO”: “Empresa Exemplo LTDA”
}

Body (exemplo completo):
{
“CRM_EMP_RAZAO”: “Empresa Exemplo LTDA”,
“CRM_EMP_FANTASIA”: “Exemplo”,
“CRM_EMP_CNPJ”: “12345678000199”,
“CRM_EMP_CEP”: “01310100”,
“CRM_EMP_END”: “Av. Paulista”,
“CRM_EMP_NUM”: “1000”,
“CRM_EMP_COMPL”: “Sala 10”,
“CRM_EMP_BAIRRO”: “Bela Vista”,
“CRM_EMP_MUN”: 3550308,
“CRM_EMP_EST”: 35,
“CRM_EMP_PAIS”: 1,
“CRM_EMP_IDSA1”: null,
“CRM_EMP_RG”: “”
}

Regras:
  • Obrigatorio informar CRM_EMP_RAZAO ou CRM_EMP_FANTASIA (ao menos um nao vazio)

Exemplo de resposta (201):
{
“status”: true,
“message”: “Prospect criado com sucesso.”,
“total”: 1,
“data”: [
{
“CRM_EMP_ID”: 25,
“CRM_EMP_RAZAO”: “Empresa Exemplo LTDA”,
…
}
]
}

PUT – Atualizar prospect

Metodo:  PUT
URL https://api.erpflex.com.br/api_v2/prospects/15
Header Content-Type: application/json

Body (exemplo – envie apenas os campos que deseja alterar):
{
“CRM_EMP_FANTASIA”: “Nome fantasia atualizado”,
“CRM_EMP_CNPJ”: “12345678000199”
}

DELETE – Excluir prospect

Metodo:  DELETE
URL https://api.erpflex.com.br/api_v2/prospects/15
Body (nenhum)

GET – Listar contatos

Metodo:  GET
URL: https://api.erpflex.com.br/api_v2/contatos?limit=50&offset=0

Filtro opcional por prospect:
https://api.erpflex.com.br/api_v2/contatos?limit=50&offset=0&emp=15

Parametro emp = CRM_EMP_ID (prospect dono do contato)

GET – Buscar contato por ID

Metodo:  GET
URL: https://api.erpflex.com.br/api_v2/contatos/8

POST – Criar contato

Metodo:  POST
URL: https://api.erpflex.com.br/api_v2/contatos
Header: Content-Type: application/json

Body (exemplo):
{
“CRM_EMP_CT_EMP”: 15,
“CRM_EMP_CT_NOME”: “Maria Silva”,
“CRM_EMP_CT_EMAIL”: “maria.silva@exemplo.com”,
“CRM_EMP_CT_FONE”: “11999998888”,
“CRM_EMP_CT_CARGO”: “Gerente Comercial”,
“CRM_EMP_CT_PRINCIPAL”: 0
}

Regras:
– CRM_EMP_CT_EMP obrigatorio (ID do prospect existente no mesmo tenant)
– CRM_EMP_CT_NOME ou CRM_EMP_CT_EMAIL obrigatorio (ao menos um)
– CRM_EMP_CT_PRINCIPAL: 0 ou 1 (padrao 0 se omitido)

PUT – Atualizar contato

Metodo:  PUT
URL: https://api.erpflex.com.br/api_v2/contatos/8
Header: Content-Type: application/json

Body (exemplo):
{
“CRM_EMP_CT_CARGO”: “Coordenadora”,
“CRM_EMP_CT_FONE”: “1133334444”
}

DELETE – Excluir contato

Metodo:  DELETE
URL: https://api.erpflex.com.br/api_v2/contatos/8
Body: (nenhum)

GET – Listar oportunidades

Metodo: GET
URL: https://api.erpflex.com.br/api_v2/oportunidades?limit=50&offset=0

Parametros opcionais:
limit = padrao 50, maximo 500

GET – Buscar oportunidade por ID

Metodo: GET
URL: https://api.erpflex.com.br/api_v2/oportunidades/42

Campos úteis na resposta para os PUTs:
CRM_OP_OWNER -> EA2_ID do responsavel
CRM_OP_FUNNEL -> ID do funil
CRM_OP_STEP -> UUID da etapa atual
CRM_OP_STATUS -> 0=aberta, 1=ganha, 2=congelada, 3=perdida, 4=lixeira

POST – Criar oportunidade (prospect existente)

Metodo: POST
URL: https://api.erpflex.com.br/api_v2/oportunidades
Header: Content-Type: application/json

Body (exemplo):
{
“CRM_OP_DESC”: “Oportunidade de venda via API”,
“CRM_OP_FUNNEL”: 1,
“CRM_OP_IDEMP”: 15,
“CRM_OP_OWNER”: 7039,
“CRM_OP_VALOR”: 15000.00,
“CRM_OP_MRR”: 0
}

Campos obrigatorios:
CRM_OP_DESC = descricao da oportunidade
CRM_OP_FUNNEL = ID do funil (> 0)
CRM_OP_IDEMP = CRM_EMP_ID do prospect (ou -1 para prospect novo)
CRM_OP_OWNER = EA2_ID do responsavel (> 0)

POST – Criar oportunidade com prospect novo (CRM_OP_IDEMP = -1)

Metodo: POST
URL: https://api.erpflex.com.br/api_v2/oportunidades
Header: Content-Type: application/json

Body (exemplo):

{
“CRM_OP_DESC”: “NOVA OPORTUNIDADE COM PROSPECT NOVO”,
“CRM_OP_FUNNEL”: 497,
“CRM_OP_STEP”: “89e02f82-9038-49c4-8b51-fbe4ec7ac42a”,
“CRM_OP_IDEMP”: -1,
“CRM_OP_OWNER”: 12966,
“CRM_OP_VALOR”: 8500,
“CRM_OP_MRR”: 0,
“CRM_OP_IDORIGEM”: 0,
“CRM_EMP_RAZAO”: “NOVA EMPRESA LTDA TESTE1”,
“CRM_EMP_FANTASIA”: “FANTASIA TESTE1”,
“CRM_EMP_CNPJ”: “12345678000199”,
“CRM_EMP_CT_NOME”: “Maria Silva”,
“CRM_EMP_CT_EMAIL”: “maria@exemplo.com”,
“CRM_EMP_CT_FONE”: “11999999999”,
“CRM_EMP_CT_CARGO”: “Compras”
}

Regra adicional:
– Com CRM_OP_IDEMP = -1, CRM_EMP_RAZAO e obrigatoria

PUT – Mudar apenas a etapa da oportunidade

Metodo: PUT
URL: https://api.erpflex.com.br/api_v2/oportunidades/42
Header: Content-Type: application/json

Body (exemplo – envie SOMENTE estes dois campos para troca de etapa):
{
“CRM_OP_OWNER”: 7039,
“CRM_OP_STEP”: “a1b2c3d4-e5f6-7890-abcd-ef1234567890”
}

Condicoes:
– Oportunidade deve estar aberta (CRM_OP_STATUS = 0)
– CRM_OP_STEP deve ser o UUID retornado em GET /etapas
– CRM_OP_STEP deve ser diferente da etapa atual

PUT – Atualizacao completa da oportunidade

Metodo: PUT
URL: https://api.erpflex.com.br/api_v2/oportunidades/42
Header: Content-Type: application/json

Body (exemplo):
{
“CRM_OP_OWNER”: 7039,
“CRM_OP_DESC”: “Descricao atualizada via API”,
“CRM_OP_FUNNEL”: 1,
“CRM_OP_VALOR”: 20000,
“CRM_OP_MRR”: 500,
“CRM_OP_IDORIGEM”: 0
}

CRM_OP_OWNER e sempre obrigatorio no PUT.

PUT – Marcar oportunidade como ganha

Metodo: PUT
URL: https://api.erpflex.com.br/api_v2/oportunidades/42
Header: Content-Type: application/json

Body (exemplo):
{
“CRM_OP_OWNER”: 7039,
“CRM_OP_STATUS”: 1
}

Valores de CRM_OP_STATUS:
0 = aberta
1 = ganha
2 = congelada
3 = perdida
4 = lixeira

Para status perdida (3), pode incluir:
“CRM_LOST_REASON_DESC”: “Preco”,
“CRM_LOST_OBS”: “Cliente escolheu concorrente”

Para status congelada (2), pode incluir:
“CRM_FREEZE_OBS”: “Aguardando retorno do cliente”,
“CRM_FREEZE_UNTIL”: “2026-08-01”

Resolução Rápida de Erros Frequentes

Código Mensagem de Erro Motivo / Solução
401 User not found Usuário ou senha APU incorretos ou não cadastrados.
400 Content Type invalido Esqueceu de adicionar o header Content-Type: application/json.
400 Parametro “funnel” obrigatorio A rota GET /etapas precisa do parâmetro ?funnel=ID.
404 Recurso não encontrado O ID informado não existe na sua conta ou tenant.
500 Internal Server Error Regra de negócio violada. Leia o campo message da resposta para identificar a causa.