API IMBRANET · v1

Manual de integração para sistemas externos
A chave é usada apenas no seu navegador (para montar os exemplos e testar). Nada é enviado ou armazenado em nossos servidores ao digitá-la — só quando você clica em Testar, que apenas valida a credencial.

🔐 Autenticação

Todas as requisições protegidas exigem o cabeçalho HTTP:

Authorization: Bearer SUA_CHAVE

A base da API é https://sysimb.imbranet.com.br/api/v1/. Use sempre HTTPS. A chave é exibida uma única vez na criação — guarde-a com segurança.

📁 Diagnóstico

GET /api/v1/healthcheck.php público

Status do serviço. Verifica se a API está no ar e se o banco responde. Ideal para monitores de uptime. Não exige autenticação e não expõe nenhum dado.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/healthcheck.php"

Resposta

{
  "ok": true,
  "data": {
    "service": "sysimb-api",
    "version": "v1",
    "status": "online",
    "banco": "ok",
    "horario": "2026-06-25T05:28:44-03:00"
  }
}
GET /api/v1/ping.php 🔒 requer chave

Identidade (whoami). Valida a sua chave e devolve a identidade da aplicação (nome, escopos, IP de origem). Use para confirmar que a credencial está funcionando.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/ping.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "mensagem": "pong",
    "aplicacao": "Site institucional",
    "escopos": ["*"],
    "seu_ip": "200.1.2.3",
    "horario": "2026-06-25T05:29:01-03:00"
  }
}

📁 SPC Brasil

POST /api/v1/spc_consultar.php 🔒 requer chave · spc:consultar

Consultar CPF ou CNPJ no SPC. Consulta a situação de um CPF (pessoa física) ou CNPJ (pessoa jurídica) no SPC Brasil (restrição, score, protestos, ações, cheques, pendências e valor de dívidas). O documento pode vir em "cpf", "cnpj" ou "documento" — o tipo de pessoa é detectado pelo TAMANHO do documento (11 dígitos = CPF, 14 = CNPJ), então é seguro continuar mandando o CNPJ no campo "cpf". Máscara é aceita e ignorada ("14.923.423/0001-98" = "14923423000198"). Para CNPJ, o campo "nome" traz a razão social. TODOS os valores do "data" são retornados como string (números e booleanos viram string; null vira ""). tem_restricao = "0" (sem restrição) ou "1" (com restrição). Com consulta_nova=1 vai direto ao SPC; com 0 (ou ausente) reaproveita o histórico do SysIMB quando há consulta válida e só vai ao SPC se não houver. Aceita GET ou POST. ATENÇÃO ao "resumo.valor_total_dividas": ele NÃO é a soma das seções. O SPC devolve a mesma dívida em duas listas (registros SPC e pendências financeiras), com o mesmo número de contrato — cada contrato entra UMA vez no total, pelo maior valor. Protestos e cheques não trazem contrato e entram integralmente. Somar as quantidades × valores das seções dá um número maior, e errado.

Parâmetros

NomeTipoObrigatórioDescrição
cpfstringSimDocumento do consumidor: CPF ou CNPJ, com ou sem máscara. Os nomes "cnpj" e "documento" também são aceitos para o mesmo parâmetro.
consulta_novainteiroNão1 = consulta nova direto no SPC; 0 ou ausente = usa o histórico do SysIMB antes (padrão 0).
detalhadointeiroNão1 = inclui também a resposta bruta do SPC em "spc_raw".

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/spc_consultar.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "cpf": "12345678900",
    "documento": "12345678900",
    "documento_formatado": "123.456.789-00",
    "tipo_pessoa": "F",
    "consulta_nova": "0",
    "origem": "historico",
    "consultado_em": "2026-06-25 10:00:00",
    "protocolo": "2026062301234567",
    "nome": "FULANO DE TAL",
    "tem_restricao": "0",
    "score": "712",
    "score_classe": "Verde",
    "resumo": {
      "registros_spc": "0",
      "protestos": "0",
      "acoes": "0",
      "cheques": "0",
      "pendencias_financeiras": "0",
      "consultas_recentes": "3",
      "valor_total_dividas": "0"
    },
    "consulta_id": "1016"
  }
}

📁 Cobertura

POST /api/v1/area_validar.php 🔒 requer chave · cobertura:consultar

Validar viabilidade (área + portas livres). Para um ponto, retorna (1) se está dentro de alguma área de venda ativa e (2) a viabilidade real de rede (Geogridmaps): caixas/CTOs com portas livres dentro do raio cadastrado. Quando há áreas sobrepostas, prevalece sempre a MENOR (mais específica): "areas" traz só a área decisiva, "sobreposta"=true indica que havia outras, e com_viabilidade segue o tem_viabilidade dessa área menor. A consulta ao Geogridmaps SÓ é feita quando com_viabilidade=true — fora de área ou em área sem viabilidade, viabilidade.disponivel vem false com o motivo (sem custo de chamada). Informe o ponto por GPS (lat+lng), CEP ou endereço (prioridade: GPS > CEP > endereço). Aceita GET ou POST.

Parâmetros

NomeTipoObrigatórioDescrição
latnúmeroNãoLatitude (use junto com lng).
lngnúmeroNãoLongitude (use junto com lat).
cepstringNãoCEP (com ou sem máscara). Usado se lat/lng não vierem.
enderecostringNãoEndereço livre. Usado se lat/lng e cep não vierem. Geocodificado com a mesma inteligência da tela (Google + Nominatim restrito às cidades atendidas), tolerando endereço parcialmente errado. Se ainda assim não localizar, a resposta de erro pode trazer "sugestao" (você quis dizer) com rotulo/lat/lng.
raiointeiroNãoRaio em metros para a viabilidade. Padrão: raio cadastrado no sistema.
viabilidadeinteiroNão0 desativa a consulta de portas (retorna só a área). Padrão 1.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/area_validar.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "consulta_por": "gps",
    "lat": -27.00425303,
    "lng": -48.62140596,
    "dentro": true,
    "com_viabilidade": true,
    "sobreposta": false,
    "areas": [
      { "id": 3, "nome": "BC - Rua 3700", "descricao": null, "tem_viabilidade": 1, "cor": "#1976d2" }
    ],
    "viabilidade": {
      "disponivel": true,
      "raio": 200,
      "total_caixas": 2,
      "portas_livres_total": 11,
      "tem_porta_livre": true,
      "caixas": [
        { "id": 12345, "sigla": "CTO-001", "distancia": 45, "portasLivres": 8, "portasOcupadas": 2, "portas": 10, "ocupacaoPortas": 20.0, "fibrasLivresLuz": 2 }
      ]
    }
  }
}
POST /api/v1/predio_consultar.php 🔒 requer chave · predios:consultar

Consultar prédio de fibra por endereço. Verifica se um endereço corresponde a um prédio de fibra já cadastrado, retornando tipo de instalação (ONU Apto / Cabo Rede / Tipo Casa), status (ativo / em ativação / inativo / sem viabilidade), mensagem de alerta e se precisa consultar o NOC. Informe endereco (melhor precisão — inclua rua e número) ou cep. Aceita GET ou POST.

Parâmetros

NomeTipoObrigatórioDescrição
enderecostringNãoEndereço a consultar (inclua rua e número para melhor precisão).
cepstringNãoCEP; usado se endereco não vier (resolve rua/bairro/cidade). Menos preciso, sem número.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/predio_consultar.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "consulta_por": "endereco",
    "endereco_consultado": "Rua Brusque 500, Centro, Camboriu",
    "tem_predio": true,
    "total": 1,
    "predios": [
      {
        "id": 42,
        "nome": "Ed. Exemplo",
        "endereco1": "Rua Brusque, 500",
        "bairro": "Centro",
        "cidade": "Camboriu",
        "tipo": "fibra_apartamento",
        "tipo_label": "ONU Apto",
        "status": "ativo",
        "status_label": "Ativo",
        "alerta": "",
        "noc": "Nao"
      }
    ]
  }
}

📁 Organização

GET /api/v1/setores_listar.php 🔒 requer chave · setores:listar

Listar setores. Lista os setores do sistema. Por padrão retorna só os ativos; use todos=1 para incluir os inativos.

Parâmetros

NomeTipoObrigatórioDescrição
todosinteiroNão1 = inclui setores inativos. Padrão 0 (só ativos).

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/setores_listar.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "total": 2,
    "setores": [
      { "id": 3, "nome": "Suporte", "descricao": null, "tecnico": true, "epis": false, "ativo": true }
    ]
  }
}
POST /api/v1/operador_consultar.php 🔒 requer chave · operadores:consultar

Consultar funcionário pelo login do operador. Dado o login de um operador, retorna o e-mail do cadastro do operador e os dados do funcionário vinculado: nome, status do funcionário (ativo/inativo/ferias/afastado), setor, sexo, data de nascimento, data de admissão. Quando o funcionário está de férias, o objeto "ferias" traz inicio, retorno e dias do período vigente (null caso contrário). Retorna ainda e ramal(is) e celular(es)/WhatsApp cadastrados na Telefonia (só os ativos). O campo "email" vem do cadastro do operador; quando não há e-mail cadastrado, "email" vem null e "tem_email" false (o operador existindo, a resposta continua ok:true). O campo "setor" traz o mais específico (subsetor quando houver); "setor_pai" e "subsetor" vêm separados. Se o funcionário estiver INATIVO, a resposta traz apenas login, nome e funcionario_status/label — sem e-mail. Aceita GET ou POST.

Parâmetros

NomeTipoObrigatórioDescrição
loginstringSimLogin do operador (operadores.login).

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/operador_consultar.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "login": "brunna.nemeth",
    "operador_ativo": true,
    "tem_funcionario": true,
    "nome": "Brunna Carolina da Silva Nemeth",
    "email": "financeiro@imbranet.com.br",
    "tem_email": true,
    "funcionario_status": "ferias",
    "funcionario_status_label": "Férias",
    "ferias": { "inicio": "2026-07-01", "retorno": "2026-07-31", "dias": 31 },
    "setor": "Financeiro",
    "setor_pai": "Administrativo",
    "subsetor": "Financeiro",
    "sexo": "F",
    "sexo_label": "Feminino",
    "data_nascimento": "2001-04-08",
    "data_admissao": "2020-02-26",
    "ramal": "1006",
    "ramais": ["1006"],
    "celular": null,
    "celulares": []
  }
}

📁 Planos

POST /api/v1/plano_consultar.php 🔒 requer chave · planos:consultar

Consultar plano pelo ID Vigo. Retorna os dados de um plano cadastrado (os mesmos exibidos em Planos Vigo) a partir do seu ID Vigo: descrição, valor, ICMS, nota, nome/tipo do pacote, plano/banda (Radius), status (ativo) e a lista de planos INCLUÍDOS no pacote — cada incluído já resolvido para seu ID Vigo, descrição, valor e status. valor vem como string decimal com 2 casas (ex.: "136.90"). Aceita GET ou POST.

Parâmetros

NomeTipoObrigatórioDescrição
idinteiroSimID Vigo do plano (o "ID Vigo" mostrado na tela). Aceita também o nome id_plano_vigo.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/plano_consultar.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "id_plano_vigo": 227,
    "descricao": "2024 - INTERNET DE ATÉ 1 GBPS DE DOWNLOAD NO PACOTE FIBRA 1000",
    "valor": "136.90",
    "icms": true,
    "nota": true,
    "nome_pacote": "PACOTE FIBRA 1000",
    "tipo_pacote": "PACOTE FIBRA",
    "plano_radius": null,
    "ativo": true,
    "incluidos": [
      { "id_plano_vigo": 226, "descricao": "IP FIXO", "valor": "0.00", "ativo": true }
    ],
    "criado_em": "2026-01-10 06:55:00",
    "atualizado_em": "2026-01-10 06:55:00"
  }
}

📁 Cadastro de Cliente

GET /api/v1/cadastro_contexto.php 🔒 requer chave · clientes:cadastrar

Contexto para montar o cadastro. Devolve tudo o que é preciso saber ANTES de montar um cadastro: a base e o grupo Vigo que receberão o cliente hoje (o roteamento muda conforme o dia do mês), o catálogo de pacotes já com os serviços inclusos e seu valor somado, a lista de opcionais, e os valores aceitos em cada campo fechado (tipo de pessoa, sexo, situação, dia de vencimento, DICI). Também informa se a trava de simulação está ligada. Consulte este endpoint antes de enviar o cadastro — assim você monta o payload com ids de plano válidos e sabe de antemão em que base o cliente vai cair.

Parâmetros

NomeTipoObrigatórioDescrição
diainteiroNãoDia do mês (1–31) para simular o roteamento de outro dia. Padrão: hoje.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/cadastro_contexto.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "destino": {
      "dia": 4,
      "ok": true,
      "base_id": 2,
      "base": "Vigo 02",
      "origem": "faixa",
      "grupo": "GRUPO 28",
      "idempresa": 2
    },
    "pacotes": [
      {
        "id_plano_vigo": 227,
        "nome": "PACOTE FIBRA 1000",
        "tipo": "PACOTE FIBRA",
        "valor": "136.90",
        "valor_total": "189.90",
        "velocidade": "1000",
        "incluidos": [
          { "id_plano_vigo": 263, "descricao": "IBTV PLAY", "valor": "19.00" }
        ]
      }
    ],
    "opcionais": [
      { "id_plano_vigo": 42, "nome": "IP FIXO - IPv4", "valor": "100.00" }
    ],
    "dominios": {
      "tipo": { "F": "Pessoa Física", "J": "Pessoa Jurídica" },
      "vencimento": ["10", "15", "20"],
      "dici_atendimento": ["URBANO", "RURAL"]
    },
    "simulacao_forcada": true
  }
}
POST /api/v1/endereco_resolver.php 🔒 requer chave · endereco:resolver

Resolver endereço (CEP, texto ou GPS). Resolve um endereço a partir do CEP, de um texto livre ("Rua Brusque 100, Camboriú") ou de uma coordenada, e devolve o bloco já padronizado no formato que a base Vigo usa: logradouro por extenso e em Title Case (R. → Rua), bairro sem o prefixo "Bairro", cidade em MAIÚSCULAS, CEP com máscara e o campo endereco montado como "Logradouro Numero Complemento". Também devolve latitude e longitude quando disponíveis. Quando o texto não é encontrado, a resposta pode trazer "sugestao" com o "você quis dizer". Informe UM entre cep, endereco ou lat+lng. Aceita GET ou POST.

Parâmetros

NomeTipoObrigatórioDescrição
cepstringNãoCEP com ou sem máscara.
enderecostringNãoEndereço em texto livre. Inclua a cidade para melhor precisão.
latnúmeroNãoLatitude (use junto com lng).
lngnúmeroNãoLongitude (use junto com lat).
numerostringNãoNúmero do imóvel, para compor o campo endereco.
complementostringNãoComplemento (ex.: "Apto 204", "Bl B").

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/endereco_resolver.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "origem": "cep",
    "fonte": "google",
    "endereco": "Rua Eucalipto 52",
    "logradouro": "Rua Eucalipto",
    "numero": "52",
    "complemento": "",
    "bairro": "Tabuleiro",
    "cidade": "CAMBORIU",
    "uf": "SC",
    "cep": "88348-270",
    "latitude": "-26.9989795",
    "longitude": "-48.6545082",
    "aproximado": false
  }
}
POST /api/v1/cliente_documento_ler.php 🔒 requer chave · clientes:documento_ler

Ler documento de identidade (RG/CNH). Lê a foto de um documento de identidade e extrai nome, CPF, RG, data de nascimento, sexo, filiação e naturalidade — já padronizados no formato do cadastro. Envie a imagem em multipart (campo arquivo) ou em JSON (arquivo_base64, com ou sem prefixo data:). Formatos aceitos: JPG, PNG, WEBP e PDF (primeira página). Se o documento tiver verso, envie-o também: no RG brasileiro é o verso que traz filiação, naturalidade e CPF, e as duas imagens são analisadas em conjunto. O resultado é uma SUGESTÃO para conferência: o CPF só vem preenchido se passar no dígito verificador, e campos de leitura duvidosa vêm listados em "avisos". Nada é gravado.

Parâmetros

NomeTipoObrigatórioDescrição
arquivoarquivoNãoImagem da frente do documento (multipart/form-data).
arquivo_versoarquivoNãoImagem do verso (multipart/form-data).
arquivo_base64stringNãoFrente em base64. Alternativa ao multipart.
arquivo_verso_base64stringNãoVerso em base64.
modelo_idinteiroNãoForça um modelo de IA específico. Padrão: o modelo de visão configurado.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/cliente_documento_ler.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "normalizado": {
      "nome": "Mariana Gonçalves de Araujo",
      "cpfcgc": "529.982.247-25",
      "rgie": "4782913",
      "dt_nascimento": "1990-04-08",
      "sexo": "F",
      "pai": "Carlos Roberto de Araujo",
      "mae": "Tereza Goncalves de Araujo",
      "naturalidade": "Camboriu - SC"
    },
    "tipo_documento": "RG",
    "confianca": { "nome": "alta", "cpf": "alta", "rg": "media" },
    "avisos": [],
    "lados_lidos": 2,
    "modelo": "gpt-5.6-luna",
    "custo_usd": 0.00096,
    "duracao_ms": 7180
  }
}
POST /api/v1/cliente_pre_cadastrar.php 🔒 requer chave · clientes:cadastrar

Enviar cadastro de cliente (pré-cadastro). Recebe um cadastro de cliente, padroniza todos os campos (nome em Title Case, CPF/CNPJ validado por dígito verificador, telefone e CEP com máscara, endereço no formato do Vigo), resolve a base e o grupo Vigo conforme o dia do mês, monta os planos expandindo os serviços inclusos do pacote, e enfileira como PRÉ-CADASTRO. IMPORTANTE: este endpoint NÃO cria o cliente no Vigo — a criação acontece depois, quando um operador confere e efetiva o pré-cadastro. Envie simular=1 para validar sem enfileirar: a resposta mostra exatamente o que seria gravado, com erros e avisos. Idempotência: informe idempotency_key; sem ela, reenviar o mesmo documento no mesmo dia devolve o pré-cadastro já existente em vez de duplicar. Os campos podem vir na raiz ou dentro de "dados"; o plano em "plano" ou como id_plano_vigo + opcionais.

Parâmetros

NomeTipoObrigatórioDescrição
nomestringSimNome completo (PF) ou razão social (PJ). Gravado SEM ACENTO; razão social de CNPJ vai em CAIXA ALTA.
nome_socialstringNãoNome pelo qual a pessoa é chamada. O Vigo não tem coluna para ele: é gravado no campo "obs", no começo, no formato "Nome social - Telefone internacional - Observação".
cpfcgcstringSimCPF ou CNPJ, com ou sem máscara. Define o tipo de pessoa.
cepstringSimCEP do endereço de instalação.
enderecostringSimRua, número e complemento juntos, como o Vigo grava: "Rua San Marino 1030 Bl B Apto 401". O número é obrigatório — sem número, escreva "sn". Alternativa: enviar logradouro + numero separados.
logradourostringNãoSó a rua/avenida. Use com "numero"; o sistema junta os dois. Alternativa a "endereco".
numerostringNãoNúmero do imóvel, quando enviado separado de "logradouro". OBRIGATÓRIO sempre que "logradouro" for enviado — sem número, envie "sn". (Não vale contar com o número dentro de complemento/apartamento: o campo é conferido à parte.)
complementostringNãoComplemento (ex.: "Sala 2", "Casa B", "Bloco A"), quando enviado separado.
apartamentostringNãoApartamento, quando enviado separado. Só o número já basta — vira "Apto 401" na concatenação. Preenchido sem predio_id, o tipo de instalação na anotação vira "APARTAMENTO - PREDIO NOVO".
predio_idinteiroNãoID do prédio de fibra (predios_fibra) quando a instalação é num edifício já cadastrado. Não muda o endereço: serve para o TIPO DE INSTALAÇÃO da anotação do cliente, que sai do tipo cadastrado do prédio (ONU APTO, CABO DE REDE, TIPO CASA) — é o que diz ao técnico o que levar. Use endereco_resolver para descobrir o id.
bairrostringSimBairro.
cidadestringSimCidade.
ufstringSimUF com 2 letras.
referenciastringSimPonto de referência para a instalação.
celularstringSimCelular do cliente — é por ele que o cliente recebe WhatsApp. Precisa ser celular de verdade: DDD + 9 dígitos começando em 9. Telefone fixo neste campo é recusado (use "telefone"). Deixa de ser obrigatório quando tel_internacional=1. Telefones da própria operadora (lista em cad_cliente_telefones_bloqueados, hoje 33650107) são recusados em qualquer campo de telefone: com o nosso número no cadastro, cobrança e agendamento voltam para nós e o cliente nunca é avisado.
telefonestringNãoTelefone de recado. Em branco, é gravado zerado ("00000000000").
tel_internacionalinteiroNão1 = o cliente tem número de fora do Brasil. As colunas de telefone e celular do Vigo vão ZERADAS ("00000000000") — não cabe um número internacional no formato delas — e o número real é gravado no campo "obs". Consequência: as automações por WhatsApp não alcançam esse cliente.
tel_intl_ddistringNãoCódigo do país do telefone internacional, só dígitos (ex.: 351 para Portugal, 1 para EUA). Consulte a lista aceita em cadPaisesDdi(). OBRIGATÓRIO quando tel_internacional=1.
tel_intl_numerostringNãoNúmero do assinante, sem o código do país. Mínimo 4 dígitos; país + número não passam de 15 (limite do padrão E.164). Gravado como "+351 912345678".
emailstringSimE-mail do cliente. RECUSADO quando contém "imbranet": e-mail da operadora faria o boleto e os avisos irem para uma caixa interna e o cliente ficaria sem receber, com o envio marcado como bem-sucedido. Cliente sem e-mail: envie sem_email=1.
sem_emailinteiroNão1 = o cliente não tem e-mail. A coluna do Vigo é obrigatória, então é gravada a sentinela sememail@imbranet.com.br — uma só, para dar para contar depois quantos clientes estão sem esse canal.
vencimentointeiroNãoDia de vencimento (10, 15 ou 20). Padrão: 10.
cfopstringNãoCFOP da nota (pessoa física E jurídica): 5301–5307 (dentro do estado) ou 6301–6307 (interestadual), serviço de comunicação. Sem valor, é deduzido: o final é 07 (usuário final) para pessoa física e para empresa ISENTA de Inscrição Estadual, e 03 (estabelecimento comercial) para empresa com IE; o prefixo vira 6 quando o cliente é de outro estado E a assinatura é apenas CHIP MÓVEL. Informado, é respeitado.
sexostringNãoM ou F.
rgiestringNãoRG (PF) ou Inscrição Estadual (PJ). OBRIGATÓRIO nos dois casos: em pessoa física, sem RG envie rg_do_cpf=1; em pessoa jurídica, sem IE envie ie_isento=1.
rg_do_cpfinteiroNãoPessoa física cujo documento não traz RG (CNH nova, passaporte): 1 grava o CPF em dígitos no campo rgie, sem pontuação. É o que a operação já faz à mão — melhor um número verificável do que o campo vazio. Ignorado em pessoa jurídica.
ie_isentointeiroNãoPessoa jurídica sem Inscrição Estadual: 1 grava "ISENTO" no campo rgie, que é o que a nota fiscal espera. Enviar a palavra "ISENTO" em rgie tem o mesmo efeito.
dt_nascimentostringNãoData de nascimento (AAAA-MM-DD ou DD/MM/AAAA).
paistringNãoNome do pai (só pessoa física).
maestringNãoNome da mãe (só pessoa física).
representante_nomestringNãoPessoa jurídica: quem responde pela empresa. OBRIGATÓRIO quando o documento é CNPJ.
representante_cpfstringNãoPessoa jurídica: CPF do representante legal, validado por dígito verificador. OBRIGATÓRIO quando o documento é CNPJ. Nome e CPF são gravados juntos no campo "mãe" do Vigo, no formato "Nome CPF: 000.000.000-00", porque o Vigo não tem campo próprio de representante.
representantesarrayNãoPessoa jurídica com mais de quem assina (sócios, procurador): lista de objetos {nome, cpf}. Substitui representante_nome/representante_cpf quando enviada. Todos vão para o campo "mãe" do Vigo separados por " | " — ex.: "Raphael Gasperi CPF: 061.496.329-03 | Ana Zuchi CPF: 124.658.179-57". A coluna tem 250 caracteres; o que passar disso é cortado com aviso.
naturalidadestringNãoCidade - UF de nascimento.
latitudenúmeroNãoLatitude da instalação (use endereco_resolver para obtê-la).
longitudenúmeroNãoLongitude da instalação.
dici_atendimentostringNãoURBANO ou RURAL. Padrão: URBANO.
vendedorstringNãoVendedor: o NOME do funcionário, sem o id (ex.: "RAPHAEL GASPERI"). Sem este campo, o vendedor é resolvido na efetivação a partir do operador que conferiu o pré-cadastro (operador → funcionário → CPF → cadastro_funcionarios da base). ATENÇÃO: o id do funcionário é por base — o mesmo funcionário tem números diferentes na Vigo 01 e na Vigo 02.
id_plano_vigointeiroSimID Vigo do pacote principal (veja cadastro_contexto). Pacote do tipo CHIP MÓVEL, sem opcionais fora desse tipo, muda três coisas: a banda do DICI é gravada como 1000, o CFOP pode virar interestadual e, em pessoa física, o cadastro vai para a base de planos móveis configurada em Conf. Cadastro Vigo em vez do rodízio por dia do mês.
opcionaisarrayNãoIDs Vigo dos opcionais escolhidos.
simularinteiroNão1 = valida e devolve o resultado sem enfileirar.
idempotency_keystringNãoChave para não duplicar em caso de reenvio.
permitir_recadastrointeiroNão1 = confirma o cadastro mesmo havendo cadastro DESATIVADO (situação X) no mesmo documento. Sem esta confirmação a resposta é 409: a política da operação é reativar o cadastro desativado em vez de abrir outro, e isso vale inclusive quando existe um cadastro ativo junto.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/cliente_pre_cadastrar.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "status": "pendente",
    "pre_cadastro_id": 12,
    "reaproveitado": false,
    "idempotency_key": "99667535e960...",
    "mensagem": "Pré-cadastro criado. Aguarda conferência de um operador para ser efetivado no Vigo.",
    "resumo": {
      "nome": "Mariana Gonçalves de Araujo",
      "documento": "529.982.247-25",
      "endereco": "Rua Eucalipto 52 - Tabuleiro, CAMBORIU/SC",
      "base": "Vigo 02",
      "grupo": "GRUPO 28",
      "total_mensal": "289.90",
      "velocidade": "1000"
    },
    "planos": {
      "linhas": [
        { "id_plano_vigo": 227, "descricao": "PACOTE FIBRA 1000", "total": "136.90", "papel": "pacote" },
        { "id_plano_vigo": 263, "descricao": "IBTV PLAY", "total": "19.00", "papel": "incluido" }
      ],
      "total_mensal": "289.90"
    },
    "avisos": []
  }
}
GET /api/v1/cliente_pre_consultar.php 🔒 requer chave · clientes:cadastrar

Consultar situação do pré-cadastro. Informa em que pé está um cadastro enviado antes: se ainda aguarda conferência ou se foi efetivado (e com qual ID de cliente no Vigo). Cadastro descartado na conferência deixa de existir e a consulta devolve 404. Informe o id devolvido no envio ou a mesma idempotency_key usada. Cada chave de API só enxerga os pré-cadastros que ela própria enviou.

Parâmetros

NomeTipoObrigatórioDescrição
idinteiroNãoID do pré-cadastro (pre_cadastro_id).
idempotency_keystringNãoAlternativa ao id: a chave usada no envio.

Exemplo

curl -s "https://sysimb.imbranet.com.br/api/v1/cliente_pre_consultar.php" \
  -H "Authorization: Bearer SUA_CHAVE"

Resposta

{
  "ok": true,
  "data": {
    "pre_cadastro_id": 12,
    "status": "efetivado",
    "situacao": "Cliente criado no Vigo.",
    "id_cliente_vigo": 215696,
    "base": { "base_id": 2, "grupo": "GRUPO 28", "idempresa": 2 },
    "nome": "Mariana Gonçalves de Araujo",
    "documento": "52998224725",
    "motivo": null,
    "criado_em": "2026-08-04 08:20:11",
    "efetivado_em": "2026-08-04 09:05:33"
  }
}

⚠️ Tratamento de erros

Erros seguem o envelope { "ok": false, "erro": { "codigo", "mensagem" } }.

HTTPCódigoSignificado
401sem_credencialHeader Authorization ausente
401credencial_invalidaChave não existe
403chave_revogadaChave desativada
403chave_expiradaPassou da validade
403ip_nao_autorizadoIP de origem fora da whitelist
403sem_escopoChave não tem o escopo exigido
429rate_limitExcedeu o limite de requisições/minuto

🎯 Escopos

Cada chave possui escopos que definem o que ela pode acessar. * concede tudo.

EscopoDescrição
*Acesso total (todos os escopos atuais e futuros)
pingDiagnóstico / identidade (endpoint ping)
spc:consultarConsultar CPF ou CNPJ no SPC Brasil
cobertura:consultarValidar ponto (GPS/CEP/endereço) nas áreas de cobertura
predios:consultarConsultar prédios de fibra por endereço
setores:listarListar os setores do sistema
operadores:consultarConsultar dados do funcionário pelo login do operador
planos:consultarConsultar planos (planos_vigo) pelo ID Vigo
clientes:cadastrarEnviar cadastro de cliente para a fila de pré-cadastro e consultar a situação
clientes:documento_lerLer documento de identidade (RG/CNH) por IA e extrair os dados
endereco:resolverResolver endereço por CEP, texto ou coordenada
clientes:lerConsultar dados de clientes (somente leitura)
whatsapp:enviarDisparar mensagens WhatsApp/e-mail
atendimentos:criarAbrir atendimentos/ocorrências