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:
- GET /funil: anotar CRM_FUNNEL_ID
- GET /etapas?funnel=ID: anotar “id” da etapa (UUID para CRM_OP_STEP)
- GET /prospects: anotar CRM_EMP_ID
- POST /oportunidades: usar funil, prospect e owner
- 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. |