Documentação da API
Tudo que um sistema de fora consegue fazer no seu CRM com uma chave de API: consultar sua base e criar registros. Para o caminho contrário — o CRM avisando o outro sistema —, veja a documentação de webhooks.
Nesta página
Começar#
Três passos: gere uma chave, copie o comando abaixo trocando SUA_CHAVE, e rode. Ele cria um lead de verdade no seu funil.
Primeiro comando
curl -X POST "https://api.basimob.app/v1/leads" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"nome": "Maria Silva",
"celular": "11999998888",
"email": "maria@exemplo.com",
"mensagem": "Tenho interesse no apartamento do centro"
}'- · O endereço é sempre o do Basimob (
https://api.basimob.app) — a sua conta é identificada pela chave, então você nunca envia o id da organização. - · Toda resposta é JSON, com
Content-Type: application/json. - · Leitura e escrita são permissões separadas: a chave só faz o que você marcou.
Autenticação#
Toda chamada leva a chave no cabeçalho. Guarde-a num cofre de segredos: quem tem a chave age no seu CRM.
Authorization: Bearer SUA_CHAVEO cabeçalho X-Api-Key: SUA_CHAVE também é aceito, para ferramentas que não deixam escrever Authorization.
- · A chave pode ter data de expiração: depois dela, toda chamada volta
401 chave_expirada. - · A chave pode aceitar só certos IPs: origem fora da lista recebe
403 ip_nao_autorizado. Peça ao time que vai integrar o IP de saída do servidor deles. - · Revogar é imediato e não tem volta — a chave revogada passa a responder
401na hora seguinte.
Leads e atendimento#
5 endpoints nesta área.
GET/v1/leadsListar leadsver detalhes
Devolve os leads da imobiliária, do mais recente para o mais antigo, com paginação por cursor. A resposta traz `dados` e `proximoCursor` (null na última página).
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.statusFiltra pela chave da coluna do funil.celularFiltra por celular (só dígitos, casamento parcial).emailFiltra por e-mail exato.arquivados`excluir` (padrão), `incluir` ou `apenas`.
Requisição
curl -X GET "https://api.basimob.app/v1/leads?limite=50&status=NOVO" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmd9x2v4k0001",
"nome": "Maria Silva",
"email": "maria@exemplo.com",
"celular": "11999998888",
"status": "NOVO",
"origem": "SITE",
"responsavel": {
"id": "cmd6u1p2z0003",
"nome": "João Corretor"
},
"equipe": {
"id": "cmeq1v2n3",
"nome": "Vendas"
},
"criadoEm": "2026-07-25T13:40:02.118Z"
}
],
"proximoCursor": null
}POST/v1/leadsCriar leadver detalhes
Cria um lead pelo mesmo caminho de um lead do site: deduplicação, distribuição para o corretor, notificação e disparo dos webhooks de saída.
Corpo
nomeobrigatórioNome do contato.celularobrigatórioDDD + número, só dígitos.emailE-mail do contato.mensagemTexto que o contato enviou — vira a primeira atividade do lead.imovelIdVincula o lead a um imóvel do seu cadastro.empreendimentoIdVincula o lead a um empreendimento.
Requisição
curl -X POST "https://api.basimob.app/v1/leads" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"nome": "Maria Silva",
"celular": "11999998888",
"email": "maria@exemplo.com",
"mensagem": "Tenho interesse no apartamento do centro"
}'Corpo enviado
{
"nome": "Maria Silva",
"celular": "11999998888",
"email": "maria@exemplo.com",
"mensagem": "Tenho interesse no apartamento do centro"
}Resposta
201 {
"success": true,
"leadId": "cmd9x2v4k0001"
}POST/v1/leads/{id}/atividadesRegistrar nota em um leadver detalhes
Anexa uma nota à linha do tempo de um lead existente.
Corpo
descricaoobrigatórioTexto da nota.
Parâmetros
idId do lead (o `leadId` devolvido na criação).
Requisição
curl -X POST "https://api.basimob.app/v1/leads/LEAD_ID/atividades" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"descricao": "Cliente respondeu o e-mail e pediu para ligar à tarde"
}'Corpo enviado
{
"descricao": "Cliente respondeu o e-mail e pediu para ligar à tarde"
}Resposta
201 {
"success": true,
"leadId": "cmd9x2v4k0001"
}POST/v1/leads/{id}/statusMudar a etapa de um leadver detalhes
Move o lead para outra coluna do seu funil e registra a mudança na linha do tempo.
Corpo
statusobrigatórioChave da coluna do funil.noteMotivo da mudança.
Parâmetros
idId do lead.
Requisição
curl -X POST "https://api.basimob.app/v1/leads/LEAD_ID/status" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"status": "EM_ATENDIMENTO",
"note": "Retornou o contato"
}'Corpo enviado
{
"status": "EM_ATENDIMENTO",
"note": "Retornou o contato"
}Resposta
200 {
"success": true,
"leadId": "cmd9x2v4k0001",
"status": "EM_ATENDIMENTO"
}GET/v1/atividadesListar atividadesver detalhes
Linha do tempo da imobiliária: notas, mudanças de etapa, visitas e o que mais o CRM registra. Filtre por `leadId` para a timeline de um lead.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.leadIdSó as atividades deste lead.tipoTipo da atividade (ex.: NOTA, LIGACAO, VISITA).
Requisição
curl -X GET "https://api.basimob.app/v1/atividades?limite=50&tipo=NOTA" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmda1b2c3",
"tipo": "NOTA",
"descricao": "Cliente pediu para ligar à tarde",
"leadId": "cmd9x2v4k0001",
"autor": null,
"criadoEm": "2026-07-25T14:02:11.482Z"
}
],
"proximoCursor": null
}Portfólio#
7 endpoints nesta área.
GET/v1/imoveisListar imóveisver detalhes
Devolve o cadastro de imóveis da imobiliária com preços, características e endereço. Inclui imóvel oculto do site e status não-disponível — é a sua base, não a vitrine pública.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.codigoFiltra pelo código do imóvel.tipoCASA, APARTAMENTO, TERRENO, COMERCIAL ou RURAL.subtipoRecorte fino do tipo (CHACARA, KITNET, GALPAO, LOTE…). Quando informado, dispensa o `tipo`.finalidadeVENDA, LOCACAO ou AMBOS.statusDISPONIVEL, RESERVADO, VENDIDO, ALUGADO ou INATIVO.cidadeFiltra pela cidade (exato, sem diferenciar maiúsculas).
Requisição
curl -X GET "https://api.basimob.app/v1/imoveis?limite=50&tipo=APARTAMENTO&subtipo=COBERTURA" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmd7a1b2c0004",
"codigo": "AP-1042",
"titulo": "Apartamento 2 quartos no Centro",
"tipo": "APARTAMENTO",
"subtipo": "APARTAMENTO",
"finalidade": "VENDA",
"status": "DISPONIVEL",
"precoVenda": 450000,
"quartos": 2,
"endereco": {
"cidade": "Porto Alegre",
"estado": "RS",
"bairro": "Centro"
}
}
],
"proximoCursor": "cmd7a1b2c0004"
}GET/v1/empreendimentosListar empreendimentosver detalhes
Empreendimentos com construtora, andamento de obra, faixa de preço e quantas unidades já estão cadastradas. Rascunho não aparece.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.cidadeFiltra pela cidade.ativo`true` ou `false`.
Requisição
curl -X GET "https://api.basimob.app/v1/empreendimentos?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdb1c2d3",
"nome": "Residencial Aurora",
"codigo": "AUR",
"statusObra": "EM_OBRAS",
"precoMinimo": 380000,
"unidadesCadastradas": 24,
"endereco": {
"cidade": "Porto Alegre",
"estado": "RS"
}
}
],
"proximoCursor": null
}GET/v1/proprietariosListar proprietáriosver detalhes
Base de proprietários com contato e quantos imóveis cada um tem na sua carteira.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.
Requisição
curl -X GET "https://api.basimob.app/v1/proprietarios?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdc1d2e3",
"nome": "Carlos Pereira",
"email": "carlos@exemplo.com",
"celular": "51999990000",
"tipoPessoa": "FISICA",
"imoveis": 3
}
],
"proximoCursor": null
}POST/v1/imoveisCadastrar imóvelver detalhes
Cadastra imóvel com as mesmas regras da tela: descrição mínima, novo/usado exigido em casa, apartamento e comercial, código gerado pelo tipo e vínculos conferidos nesta conta.
Corpo
tituloobrigatórioTítulo do anúncio (5 a 200 caracteres).descricaoobrigatórioDescrição, com pelo menos 20 caracteres de texto. Aceita HTML simples, que é saneado.tipoobrigatórioCASA, APARTAMENTO, TERRENO, COMERCIAL ou RURAL.subtipoRecorte fino do tipo (ex.: COBERTURA, STUDIO, SOBRADO). Sem ele, vale o subtipo de mesmo nome do tipo.finalidadeobrigatórioVENDA, LOCACAO ou AMBOS.condicaoNOVO ou USADO — exigido em casa, apartamento e comercial; recusado em terreno e rural.cepobrigatórioCEP, com ou sem hífen.ruaLogradouro.numeroNúmero.complementoComplemento (apartamento, bloco).bairroBairro.cidadeobrigatórioCidade.estadoobrigatórioUF com 2 letras.precoVendaPreço de venda em reais (número). Ignorado quando a finalidade é só LOCACAO.precoAluguelAluguel mensal em reais (número). Ignorado quando a finalidade é só VENDA.taxaCondominioCondomínio mensal em reais (número).iptuIPTU mensal em reais (número).custosPersonalizadosOutros custos mensais do imóvel: lista de { id, nome, valor } (valor em reais), até 10.areaÁrea em m² (número).quartosQuartos (inteiro).suitesSuítes (inteiro, no máximo o número de quartos).banheirosBanheiros (inteiro).vagasGaragemVagas de garagem (inteiro).aceitaPetAceita animal de estimação (booleano).mobiliaNAO_MOBILIADO, SEMI_MOBILIADO ou MOBILIADO.aceitaPermutaAceita permuta (booleano).codigoInternoCódigo próprio da imobiliária, buscável no CRM.visivelNoSitePublicar no site já no cadastro (booleano). Padrão: falso.proprietariosDonos do imóvel (de GET /v1/proprietarios), na ordem: `[{ proprietarioId, percentual }]`. Com mais de um, as partes somam 100% ou vão todas nulas.captadorIdCaptador do imóvel.empreendimentoIdEmpreendimento de origem (de GET /v1/empreendimentos).responsavelIdPessoa responsável (de GET /v1/equipe). Não envie junto de `equipeId`.equipeIdEquipe responsável. Não envie junto de `responsavelId`.
Requisição
curl -X POST "https://api.basimob.app/v1/imoveis" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"titulo": "Apartamento 2 dormitórios no Centro",
"descricao": "Apartamento reformado, com sacada, perto do comércio e do transporte.",
"tipo": "APARTAMENTO",
"finalidade": "VENDA",
"condicao": "USADO",
"cep": "90010-000",
"rua": "Rua dos Andradas",
"numero": "1234",
"bairro": "Centro Histórico",
"cidade": "Porto Alegre",
"estado": "RS"
}'Corpo enviado
{
"titulo": "Apartamento 2 dormitórios no Centro",
"descricao": "Apartamento reformado, com sacada, perto do comércio e do transporte.",
"tipo": "APARTAMENTO",
"finalidade": "VENDA",
"condicao": "USADO",
"cep": "90010-000",
"rua": "Rua dos Andradas",
"numero": "1234",
"bairro": "Centro Histórico",
"cidade": "Porto Alegre",
"estado": "RS"
}Resposta
201 {
"success": true,
"imovelId": "cmimv1a2b3",
"codigo": "CA-042"
}PATCH/v1/imoveis/{id}Atualizar imóvelver detalhes
Atualização parcial: só os campos enviados mudam. A validação é a do cadastro da tela — preço que a finalidade não comporta é descartado, e os vínculos são conferidos nesta conta.
Corpo
tituloNovo título.descricaoNova descrição (pelo menos 20 caracteres de texto).tipoCASA, APARTAMENTO, TERRENO, COMERCIAL ou RURAL.subtipoRecorte fino do tipo.finalidadeVENDA, LOCACAO ou AMBOS.condicaoNOVO ou USADO.cepCEP.ruaLogradouro.numeroNúmero.complementoComplemento.bairroBairro.cidadeCidade.estadoUF com 2 letras.precoVendaPreço de venda em reais (número).precoAluguelAluguel mensal em reais (número).taxaCondominioCondomínio mensal (número).iptuIPTU mensal (número).custosPersonalizadosOutros custos mensais: a lista enviada SUBSTITUI a gravada; lista vazia apaga.areaÁrea em m² (número).quartosQuartos (inteiro).suitesSuítes (inteiro).banheirosBanheiros (inteiro).vagasGaragemVagas de garagem (inteiro).aceitaPetAceita animal de estimação (booleano).mobiliaNAO_MOBILIADO, SEMI_MOBILIADO ou MOBILIADO.aceitaPermutaAceita permuta (booleano).codigoInternoCódigo próprio da imobiliária.visivelNoSitePublicar ou tirar do site (booleano).proprietariosDonos do imóvel: a lista enviada SUBSTITUI a gravada; lista vazia tira todos.captadorIdCaptador.empreendimentoIdEmpreendimento de origem.responsavelIdPessoa responsável. Não envie junto de `equipeId`.equipeIdEquipe responsável. Não envie junto de `responsavelId`.
Parâmetros
idId do imóvel (de GET /v1/imoveis).
Requisição
curl -X PATCH "https://api.basimob.app/v1/imoveis/IMOVEL_ID" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"titulo": "Apartamento 2 dormitórios com sacada"
}'Corpo enviado
{
"titulo": "Apartamento 2 dormitórios com sacada"
}Resposta
200 {
"success": true,
"imovelId": "cmimv1a2b3",
"codigo": "CA-042"
}POST/v1/proprietariosCadastrar proprietáriover detalhes
Cadastra proprietário com deduplicação por CPF/CNPJ. Se vier `leadId`, o lead ganha o papel de proprietário na mesma transação.
Corpo
nomeobrigatórioNome do proprietário.emailE-mail de contato.celularCelular de contato.documentoCPF ou CNPJ (com ou sem máscara).tipoPessoaFISICA ou JURIDICA. Derivado do `documento` quando ele vem (11 dígitos = FISICA, 14 = JURIDICA); só é usado quando não há documento.leadIdLead que virou proprietário.dadosBancariosPara onde vai o repasse, guardado cifrado. Pix: `{ metodo: "PIX", pixTipo: "CPF"|"CNPJ"|"EMAIL"|"TELEFONE"|"ALEATORIA", pixChave }`. Conta: `{ metodo: "CONTA", bancoCompe: "341", agencia: "1234", conta: "12345", contaDigito: "6", tipoConta: "CORRENTE"|"POUPANCA" }`. Conta de outra pessoa: `titularidadePropria: false`, `titularNome` e `titularDocumento` (CPF ou CNPJ).taxaAdminCustomTaxa de administração específica deste proprietário (%).
Requisição
curl -X POST "https://api.basimob.app/v1/proprietarios" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"nome": "Carlos Pereira",
"email": "carlos@exemplo.com",
"celular": "51999990000"
}'Corpo enviado
{
"nome": "Carlos Pereira",
"email": "carlos@exemplo.com",
"celular": "51999990000"
}Resposta
201 {
"success": true,
"proprietarioId": "cmdc1d2e3"
}PATCH/v1/proprietarios/{id}Atualizar proprietáriover detalhes
Atualização parcial: só os campos enviados são alterados; o resto permanece como está.
Corpo
nomeNovo nome.emailNovo e-mail.celularNovo celular.documentoNovo CPF/CNPJ.tipoPessoaFISICA ou JURIDICA. O `documento` tem precedência — informá-lo já define o tipo.leadIdLead vinculado.dadosBancariosPara onde vai o repasse, no mesmo formato da criação — substitui os atuais.taxaAdminCustomTaxa de administração (%).
Parâmetros
idId do proprietário.
Requisição
curl -X PATCH "https://api.basimob.app/v1/proprietarios/PROPRIETARIO_ID" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"nome": "Carlos A. Pereira"
}'Corpo enviado
{
"nome": "Carlos A. Pereira"
}Resposta
200 {
"success": true,
"proprietarioId": "cmdc1d2e3"
}Comercial#
3 endpoints nesta área.
GET/v1/vendasListar vendas e propostasver detalhes
Vendas/propostas com etapa, valor, lead e corretor responsável.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.statusStatus da venda (ex.: EM_ANDAMENTO).etapaEtapa do fluxo de venda.leadIdSó as vendas deste lead.arquivados`excluir` (padrão), `incluir` ou `apenas`.
Requisição
curl -X GET "https://api.basimob.app/v1/vendas?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdd1e2f3",
"numero": "V-1042",
"status": "EM_ANDAMENTO",
"etapa": "PROPOSTA",
"valor": 450000,
"lead": {
"id": "cmd9x2v4k0001",
"nome": "Maria Silva"
},
"corretor": {
"id": "cmd6u1p2z0003",
"nome": "João Corretor"
}
}
],
"proximoCursor": null
}GET/v1/simulacoesListar simulaçõesver detalhes
Simulações de financiamento geradas no CRM ou no seu site, com valor do imóvel, entrada e prazo.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.statusStatus da simulação.leadIdSó as simulações deste lead.
Requisição
curl -X GET "https://api.basimob.app/v1/simulacoes?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmde1f2g3",
"status": "CONCLUIDA",
"origem": "SITE",
"nomeCliente": "Maria Silva",
"valorImovel": 450000,
"entrada": 90000,
"prazoDesejado": 360
}
],
"proximoCursor": null
}POST/v1/vendasAbrir proposta de vendaver detalhes
Abre a venda na etapa de proposta, como a tela: número sequencial, comissão pré-preenchida pelo empreendimento, pelo padrão do corretor e pelo captador, e a unidade de empreendimento reservada para esta proposta.
Corpo
leadIdobrigatórioCliente comprador (de GET /v1/leads).imovelIdImóvel vendido (de GET /v1/imoveis). Não envie junto de `unidadeId`.unidadeIdUnidade de empreendimento. Não envie junto de `imovelId`.responsavelIdobrigatórioCorretor responsável (de GET /v1/equipe) — a venda tem sempre uma pessoa responsável.valorobrigatórioValor da proposta em reais.condicoesPagamentoCondições de pagamento, em texto.observacoesObservações internas.simulacaoIdSimulação de financiamento vinculada (de GET /v1/simulacoes).
Requisição
curl -X POST "https://api.basimob.app/v1/vendas" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"leadId": "LEAD_ID",
"imovelId": "IMOVEL_ID",
"responsavelId": "USUARIO_ID",
"valor": "350000"
}'Corpo enviado
{
"leadId": "LEAD_ID",
"imovelId": "IMOVEL_ID",
"responsavelId": "USUARIO_ID",
"valor": "350000"
}Resposta
201 {
"success": true,
"vendaId": "cmvnd1a2b3",
"numero": "VND-000128"
}Agenda e tarefas#
4 endpoints nesta área.
GET/v1/agendaListar agendaver detalhes
Visitas e compromissos da equipe inteira. Use `de`/`ate` para a janela por data de início.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.deInício da janela (ISO 8601), pela data do compromisso.ateFim da janela (ISO 8601).statusStatus do compromisso (ex.: AGENDADO).tipoTipo (ex.: VISITA).responsavelIdSó os compromissos deste membro.leadIdSó os compromissos deste lead.
Requisição
curl -X GET "https://api.basimob.app/v1/agenda?limite=50&de=2026-07-25T00%3A00%3A00Z" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdf1g2h3",
"titulo": "Visita — Apto Centro",
"tipo": "VISITA",
"status": "AGENDADO",
"iniciaEm": "2026-07-28T17:00:00.000Z",
"terminaEm": "2026-07-28T18:00:00.000Z",
"responsavel": {
"id": "cmd6u1p2z0003",
"nome": "João Corretor"
},
"equipe": {
"id": "cmeq1v2n3",
"nome": "Vendas"
}
}
],
"proximoCursor": null
}GET/v1/tarefasListar tarefasver detalhes
Tarefas da equipe com prioridade, prazo e responsável.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.statusStatus (ex.: PENDENTE).prioridadePrioridade (ex.: ALTA).responsavelIdSó as tarefas deste membro.leadIdSó as tarefas deste lead.
Requisição
curl -X GET "https://api.basimob.app/v1/tarefas?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdg1h2i3",
"titulo": "Enviar proposta revisada",
"status": "PENDENTE",
"prioridade": "ALTA",
"dataVencimento": "2026-07-29T12:00:00.000Z",
"responsavel": {
"id": "cmd6u1p2z0003",
"nome": "João Corretor"
},
"equipe": {
"id": "cmeq1v2n3",
"nome": "Vendas"
}
}
],
"proximoCursor": null
}POST/v1/tarefasCriar tarefaver detalhes
Cria uma tarefa pelo mesmo caminho da tela: notifica o responsável, entra no realtime e dispara o webhook de saída.
Corpo
tituloobrigatórioTítulo da tarefa.descricaoDetalhes.prioridadeBAIXA, MEDIA, ALTA ou URGENTE.statusPENDENTE (padrão), EM_ANDAMENTO ou CONCLUIDA.dataVencimentoPrazo, em ISO 8601 com fuso.lembreteEmQuando lembrar o responsável (ISO 8601).responsavelIdA pessoa que recebe a tarefa.equipeIdA equipe que recebe a tarefa, sem pessoa — quem é dela pega.leadIdVincula a tarefa a um lead.imovelIdVincula a um imóvel.vendaIdVincula a uma venda.
Requisição
curl -X POST "https://api.basimob.app/v1/tarefas" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"titulo": "Enviar proposta revisada",
"descricao": "Cliente pediu com o desconto aprovado",
"prioridade": "ALTA"
}'Corpo enviado
{
"titulo": "Enviar proposta revisada",
"descricao": "Cliente pediu com o desconto aprovado",
"prioridade": "ALTA"
}Resposta
201 {
"success": true,
"tarefaId": "cmdg1h2i3"
}POST/v1/agendaAgendar compromissover detalhes
Cria visita ou compromisso pelo caminho da tela: notifica o responsável, sincroniza com o Google Agenda quando conectado e dispara o webhook `Visita agendada`.
Corpo
tituloobrigatórioTítulo do compromisso.tipoobrigatórioVISITA, REUNIAO, LIGACAO ou OUTROS.iniciaEmobrigatórioInício, em ISO 8601 com fuso.terminaEmobrigatórioFim, em ISO 8601 com fuso.descricaoDetalhes do compromisso.localLocal combinado.enderecoEndereço completo.diaInteiroCompromisso de dia inteiro (padrão false).lembreteLiga o lembrete interno (padrão false).lembrarEmQuando lembrar (ISO 8601).responsavelIdA pessoa que atende o compromisso.equipeIdA equipe que atende o compromisso, sem pessoa.leadIdVincula a um lead.imovelIdVincula a um imóvel.vendaIdVincula a uma venda.
Requisição
curl -X POST "https://api.basimob.app/v1/agenda" \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-4f2a9c" \
-d '{
"titulo": "Visita — Apto Centro",
"tipo": "VISITA",
"iniciaEm": "2026-08-01T14:00:00Z",
"terminaEm": "2026-08-01T15:00:00Z",
"local": "Portaria do edifício"
}'Corpo enviado
{
"titulo": "Visita — Apto Centro",
"tipo": "VISITA",
"iniciaEm": "2026-08-01T14:00:00Z",
"terminaEm": "2026-08-01T15:00:00Z",
"local": "Portaria do edifício"
}Resposta
201 {
"success": true,
"agendamentoId": "cmdf1g2h3"
}Locação#
3 endpoints nesta área.
GET/v1/contratosListar contratos de aluguelver detalhes
Contratos com vigência, valor, taxa de administração e próximo reajuste.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.statusStatus do contrato (ex.: ATIVO).imovelIdSó os contratos deste imóvel.
Requisição
curl -X GET "https://api.basimob.app/v1/contratos?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdh1i2j3",
"numero": "C-204",
"status": "ATIVO",
"valorAluguel": 2500,
"diaVencimento": 10,
"iniciaEm": "2026-01-10T03:00:00.000Z",
"terminaEm": "2027-01-09T03:00:00.000Z",
"locatario": {
"id": "cmd9x2v4k0001",
"nome": "Maria Silva"
},
"locatarios": [
{
"id": "cmd9x2v4k0001",
"nome": "Maria Silva",
"ordem": 1
},
{
"id": "cmd9x2v4k0002",
"nome": "João Silva",
"ordem": 2
}
],
"proprietarioId": "cmdc1d2e3",
"locadores": [
{
"proprietarioId": "cmdc1d2e3",
"nome": "Ana Souza",
"ordem": 1,
"percentual": 60
},
{
"proprietarioId": "cmdc4f5g6",
"nome": "Carlos Souza",
"ordem": 2,
"percentual": 40
}
]
}
],
"proximoCursor": null
}GET/v1/pagamentosListar cobranças de aluguelver detalhes
Parcelas com vencimento, valor, multa/juros e data de pagamento. Use `venceDe`/`venceAte` para a régua de cobrança.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.venceDeVencimento a partir de (ISO 8601).venceAteVencimento até (ISO 8601).statusStatus do pagamento (ex.: PENDENTE, PAGO).contratoIdSó as parcelas deste contrato.
Requisição
curl -X GET "https://api.basimob.app/v1/pagamentos?limite=50&venceDe=2026-07-01T00%3A00%3A00Z" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdi1j2k3",
"contratoId": "cmdh1i2j3",
"status": "PENDENTE",
"numeroParcela": 7,
"valorTotal": 2750,
"dataVencimento": "2026-08-10T03:00:00.000Z",
"pagoEm": null
}
],
"proximoCursor": null
}GET/v1/vistoriasListar vistoriasver detalhes
Laudos de vistoria com tipo, estado geral e situação do aceite bilateral.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.statusStatus do laudo.tipoENTRADA ou SAIDA.contratoIdSó as vistorias deste contrato.
Requisição
curl -X GET "https://api.basimob.app/v1/vistorias?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdj1k2l3",
"tipo": "ENTRADA",
"status": "CONCLUIDA",
"estadoGeral": "BOM",
"situacaoAceite": "ACEITA",
"ambientes": 6
}
],
"proximoCursor": null
}Gestão#
2 endpoints nesta área.
GET/v1/financeiroListar lançamentos financeirosver detalhes
Lançamentos do financeiro manual da imobiliária, com categoria e data.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.tipoRECEITA ou DESPESA.deData do lançamento a partir de (ISO 8601).ateData do lançamento até (ISO 8601).
Requisição
curl -X GET "https://api.basimob.app/v1/financeiro?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmdk1l2m3",
"tipo": "DESPESA",
"descricao": "Anúncio no portal",
"valor": 890,
"data": "2026-07-20T03:00:00.000Z",
"categoria": {
"id": "cmdk9z",
"nome": "Marketing"
}
}
],
"proximoCursor": null
}GET/v1/equipeListar equipever detalhes
Membros da equipe com nome, e-mail de trabalho e papel — para mapear responsáveis num BI.
Parâmetros
limiteQuantos registros por página (1 a 100; padrão 50).cursorContinua da página seguinte — use o `proximoCursor` da resposta anterior.desdeSó registros criados a partir desta data (ISO 8601) — sincronização incremental.ativo`true` ou `false`.
Requisição
curl -X GET "https://api.basimob.app/v1/equipe?limite=50" \
-H "Authorization: Bearer SUA_CHAVE"Resposta
200 {
"dados": [
{
"id": "cmd6u1p2z0003",
"nome": "João Corretor",
"email": "joao@imobiliaria.com",
"papel": "CORRETOR",
"ativo": true
}
],
"proximoCursor": null
}Paginação#
As listagens devolvem uma página de dados e o ponteiro da próxima. Repita passando o cursor até ele vir nulo.
# primeira página
GET /v1/leads?limite=100
# seguinte (use o proximoCursor da resposta)
GET /v1/leads?limite=100&cursor=cmd9x2v4k0001
# só o que entrou depois de ontem — sincronização incremental
GET /v1/leads?desde=2026-07-24T00:00:00ZUse desde com a data da última sincronização em vez de varrer tudo de novo: é mais rápido para você e não gasta a sua cota à toa.
Repetir sem duplicar#
Se a rede cair depois de o lead já ter sido criado, repetir a chamada criaria um segundo. O cabeçalho de idempotência resolve isso.
Idempotency-Key: pedido-4f2a9cPor 24 horas, a mesma chave devolve a mesma resposta em vez de executar de novo — a repetição vem com Idempotent-Replay: true.
- · Use uma chave nova por intenção (ex.: o id do envio no outro sistema).
- · Reutilizar a mesma chave com um corpo diferente é erro (
422), não um replay silencioso. - · Duas chamadas simultâneas com a mesma chave: a segunda recebe
409. - · Erro nosso (
500) não fica guardado: pode repetir com a mesma chave.
Limites de uso#
Por chave e por tipo de operação: 120 leituras e 30 escritas por minuto, em contadores independentes — paginar um catálogo não consome a cota de quem está criando registros.
Cabeçalhos presentes em toda resposta
X-RateLimit-Limit: 120 # chamadas na janela (deste tipo)
X-RateLimit-Remaining: 117 # quantas ainda cabem
X-RateLimit-Reset: 1769... # quando a janela reinicia (epoch ms)Leia os cabeçalhos em vez de adivinhar o intervalo entre chamadas. Estourou, a resposta é 429 limite_excedido: espere o reset e siga do mesmo cursor.
Erros#
Erro vem sempre como { "error": "…", "codigo": "…" }. Trate pelo código, que é estável — nunca pelo texto da mensagem.
400corpo_invalidoO corpo enviado não é um JSON válido.401chave_ausenteFaltou o header de autenticação.401nao_autenticadoChave inválida ou revogada.401chave_expiradaA chave passou da data de expiração definida no console.403sem_permissaoA chave não tem a permissão exigida pelo endpoint.403ip_nao_autorizadoA chave restringe origens e o IP de quem chamou não está na lista.403limite_do_planoA conta chegou ao limite do plano para este cadastro, ou está com a assinatura bloqueada — quem resolve é o administrador, no plano.404nao_encontradoO recurso citado no caminho não existe nesta conta.409conflito_idempotenciaOutra requisição com a mesma Idempotency-Key ainda está em andamento.422dados_invalidosRequisição bem-formada, mas com dado inválido — a mensagem diz qual.422chave_idempotencia_reutilizadaA mesma Idempotency-Key foi usada com um corpo diferente.429limite_excedidoLimite de chamadas da chave excedido — veja os headers X-RateLimit-*.500erro_internoFalha do nosso lado. Pode repetir com a mesma Idempotency-Key.
Zapier, Make e n8n#
Qualquer ferramenta que faça uma requisição HTTP conversa com o Basimob — basta apontar para o endereço com o cabeçalho de autenticação.
Zapier
Ação “Webhooks by Zapier” → POST, com Headers personalizados
Make
Módulo HTTP → Make a request (POST, body Raw/JSON)
n8n
Nó HTTP Request (POST, Header Auth)
Aponte parahttps://api.basimob.app/v1/leadscom o cabeçalho de autenticação.
Para o caminho inverso — receber eventos do CRM nessas ferramentas — veja adocumentação de webhooks