Webhooks
Os endereços que recebem os eventos na hora, assinados no padrão Standard Webhooks, com nova tentativa, desligamento automático, reenvio e evento de teste.
- GET/v1/webhooks— Endereços cadastrados
- POST/v1/webhooks— Cadastrar um endereço
- PATCH/v1/webhooks/{webhookId}— Alterar um endereço
- DELETE/v1/webhooks/{webhookId}— Apagar um endereço
- POST/v1/webhooks/{webhookId}/rotate-secret— Trocar o segredo
- POST/v1/webhooks/{webhookId}/test— Mandar um evento de teste
- GET/v1/webhooks/{webhookId}/deliveries— Entregas de um endereço
- POST/v1/webhooks/{webhookId}/deliveries/{deliveryId}/retry— Reenviar uma entrega
As rotas
/v1/webhooksEndereços cadastrados
Os endereços de webhook da conta.
webhooks:manageResposta200OK
datalista de Webhookobrigatório- Os endereços.
Exemplo
curl -X GET 'https://api.imobyflow.com.br/v1/webhooks' \
-H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
-H 'Accept-Language: pt-BR'Erros desta rota
/v1/webhooksCadastrar um endereço
Só HTTPS e só host público. A resposta traz o secret (whsec_…) UMA vez — guarde-o: é com ele que você confere a assinatura. Esta rota não aceita Idempotency-Key (a resposta guardada deixaria o segredo em texto); repetir cria outro endereço.
webhooks:manageCorpo do pedido
urlstringobrigatório- O endereço, só HTTPS e público. Credencial na URL é recusada.
typeslista de string- Os tipos (ausente = todos os que a conta lê).um de
property.createdproperty.updatedproperty.deletedproperty.restoredproperty.purgedlead.createdlead.updatedlead.deletedlead.restoredlead.purgedradar.client_summarypartnership.createdpartnership.updatedcaptacao.offer_receivedcaptacao.offer_acceptedcaptacao.offer_withdrawn descriptionstringpode vir nulo- Descrição.
Exemplo de corpo
{
"url": "https://crm.suaimobiliaria.com.br/imobyflow/eventos",
"types": [
"property.updated",
"lead.created"
],
"description": "CRM — produção"
}Resposta201Criado
dataWebhookobrigatório- O endereço.
secretstringobrigatório- O segredo, só nesta resposta.
Exemplo
curl -X POST 'https://api.imobyflow.com.br/v1/webhooks' \
-H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
-H 'Accept-Language: pt-BR' \
-H 'Content-Type: application/json' \
--data @- <<'JSON'
{
"url": "https://crm.suaimobiliaria.com.br/imobyflow/eventos",
"types": [
"property.updated",
"lead.created"
],
"description": "CRM — produção"
}
JSONErros desta rota
/v1/webhooks/{webhookId}Alterar um endereço
Muda o endereço, os tipos, a descrição — ou desliga e religa (religar limpa o motivo do desligamento).
webhooks:manageAceita Idempotency-KeyParâmetros no caminho
webhookIdstringobrigatório- Id do endereço (
wh_…).
Corpo do pedido
urlstring- O endereço.
typeslista de string- Os tipos.um de
property.createdproperty.updatedproperty.deletedproperty.restoredproperty.purgedlead.createdlead.updatedlead.deletedlead.restoredlead.purgedradar.client_summarypartnership.createdpartnership.updatedcaptacao.offer_receivedcaptacao.offer_acceptedcaptacao.offer_withdrawn descriptionstringpode vir nulo- Descrição.
statusstringACTIVEreliga (limpa o motivo do desligamento) eDISABLEDdesliga.um deACTIVEDISABLED
Exemplo de corpo
{
"status": "ACTIVE"
}Resposta200OK
dataWebhookobrigatório- O endereço.
Exemplo
curl -X PATCH 'https://api.imobyflow.com.br/v1/webhooks/wh_9c8b7a6f5e4d3c2b' \
-H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
-H 'Accept-Language: pt-BR' \
-H "Idempotency-Key: $(uuidgen)" \
-H 'Content-Type: application/json' \
--data @- <<'JSON'
{
"status": "ACTIVE"
}
JSONErros desta rota
/v1/webhooks/{webhookId}Apagar um endereço
Para de entregar e apaga o endereço.
webhooks:manageAceita Idempotency-KeyParâmetros no caminho
webhookIdstringobrigatório- Id do endereço (
wh_…).
Resposta200OK
dataWebhookobrigatório- O endereço apagado.
resultobjetoobrigatório- O desfecho.
result.outcomestringobrigatórioDELETED.
Exemplo
curl -X DELETE 'https://api.imobyflow.com.br/v1/webhooks/wh_9c8b7a6f5e4d3c2b' \
-H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
-H 'Accept-Language: pt-BR' \
-H "Idempotency-Key: $(uuidgen)"Erros desta rota
/v1/webhooks/{webhookId}/rotate-secretTrocar o segredo
Gera um segredo novo, devolvido UMA vez. O anterior segue assinando junto por 24 horas — dá tempo de trocar no seu sistema sem perder evento. Sem Idempotency-Key.
webhooks:manageParâmetros no caminho
webhookIdstringobrigatório- Id do endereço (
wh_…).
Resposta200OK
dataWebhookobrigatório- O endereço.
secretstringobrigatório- O segredo novo.
Exemplo
curl -X POST 'https://api.imobyflow.com.br/v1/webhooks/wh_9c8b7a6f5e4d3c2b/rotate-secret' \
-H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
-H 'Accept-Language: pt-BR'Erros desta rota
/v1/webhooks/{webhookId}/testMandar um evento de teste
Entrega um webhook.test AGORA, assinado, e devolve o que o seu sistema respondeu.
webhooks:manageAceita Idempotency-KeyParâmetros no caminho
webhookIdstringobrigatório- Id do endereço (
wh_…).
Resposta200OK
dataWebhookTestResultobrigatório- O resultado.
Exemplo
curl -X POST 'https://api.imobyflow.com.br/v1/webhooks/wh_9c8b7a6f5e4d3c2b/test' \
-H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
-H 'Accept-Language: pt-BR' \
-H "Idempotency-Key: $(uuidgen)"Erros desta rota
/v1/webhooks/{webhookId}/deliveriesEntregas de um endereço
As entregas, mais novas antes, com o status, as tentativas e o último código.
webhooks:manageParâmetros no caminho
webhookIdstringobrigatório- Id do endereço (
wh_…).
Filtros e paginação
limitinteger- Itens por página: de 1 a 200 (padrão 50).
cursorstring- O
nextCursorda página anterior. A lista acabou quando ele vem nulo. Ele vale só para esta rota e esta conta.
Resposta200OK
datalista de Deliveryobrigatório- As entregas.
nextCursorstringobrigatóriopode vir nulo- Cursor da próxima página (nulo = acabou).
Exemplo
curl -X GET 'https://api.imobyflow.com.br/v1/webhooks/wh_9c8b7a6f5e4d3c2b/deliveries' \
-H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
-H 'Accept-Language: pt-BR'Erros desta rota
/v1/webhooks/{webhookId}/deliveries/{deliveryId}/retryReenviar uma entrega
Uma nova rodada de tentativas para a mesma entrega — com o MESMO webhook-id, então o seu sistema reconhece a repetição. A que já está agendada responde ALREADY_SCHEDULED.
webhooks:manageAceita Idempotency-KeyParâmetros no caminho
webhookIdstringobrigatório- Id do endereço (
wh_…). deliveryIdstringobrigatório- Id da entrega (
dlv_…).
Resposta200OK
dataDeliveryobrigatório- A entrega.
resultobjetoobrigatório- O desfecho.
result.outcomestringobrigatórioSCHEDULEDouALREADY_SCHEDULED.um deSCHEDULEDALREADY_SCHEDULED
Exemplo
curl -X POST 'https://api.imobyflow.com.br/v1/webhooks/wh_9c8b7a6f5e4d3c2b/deliveries/dlv_20261002164512000_evt_4f1c9a7e2b3d8c6a5e4f1b2c/retry' \
-H "Authorization: Bearer $IMOBYFLOW_API_KEY" \
-H 'Accept-Language: pt-BR' \
-H "Idempotency-Key: $(uuidgen)"Erros desta rota
Os objetos
Webhook
Um endereço de webhook. O segredo nunca sai aqui.
idstringobrigatório- Id do endereço (
wh_…). urlstringobrigatório- O endereço (só HTTPS).
typeslista de stringobrigatório- Os tipos que ele recebe (vazio = todos os que a conta lê).um de
property.createdproperty.updatedproperty.deletedproperty.restoredproperty.purgedlead.createdlead.updatedlead.deletedlead.restoredlead.purgedradar.client_summarypartnership.createdpartnership.updatedcaptacao.offer_receivedcaptacao.offer_acceptedcaptacao.offer_withdrawn descriptionstringobrigatóriopode vir nulo- Descrição.
statusstringobrigatórioACTIVEouDISABLED.um deACTIVEDISABLEDdisabledAtstringobrigatóriopode vir nulo- Quando foi desligado.
disabledReasonstringobrigatóriopode vir nuloGONE_410(o seu sistema respondeu 410),FAILURE_RATE(metade ou mais das entregas falhou em 48 h) ouMANUAL.secretRotatedAtstringobrigatóriopode vir nulo- Última troca do segredo.
previousSecretValidUntilstringobrigatóriopode vir nulo- Até quando o segredo anterior ainda assina junto (24 h depois da troca).
createdAtstringobrigatório- Quando foi criado (UTC).
updatedAtstringobrigatório- Última alteração (UTC).
WebhookCreate
Um endereço novo.
urlstringobrigatório- O endereço, só HTTPS e público. Credencial na URL é recusada.
typeslista de string- Os tipos (ausente = todos os que a conta lê).um de
property.createdproperty.updatedproperty.deletedproperty.restoredproperty.purgedlead.createdlead.updatedlead.deletedlead.restoredlead.purgedradar.client_summarypartnership.createdpartnership.updatedcaptacao.offer_receivedcaptacao.offer_acceptedcaptacao.offer_withdrawn descriptionstringpode vir nulo- Descrição.
WebhookUpdate
O que mudar no endereço.
urlstring- O endereço.
typeslista de string- Os tipos.um de
property.createdproperty.updatedproperty.deletedproperty.restoredproperty.purgedlead.createdlead.updatedlead.deletedlead.restoredlead.purgedradar.client_summarypartnership.createdpartnership.updatedcaptacao.offer_receivedcaptacao.offer_acceptedcaptacao.offer_withdrawn descriptionstringpode vir nulo- Descrição.
statusstringACTIVEreliga (limpa o motivo do desligamento) eDISABLEDdesliga.um deACTIVEDISABLED
Delivery
Uma entrega de evento a um endereço.
idstringobrigatório- Id da entrega (
dlv_…). eventIdstringobrigatóriopode vir nulo- O evento entregue.
typestringobrigatóriopode vir nulo- Tipo do evento.
statusstringobrigatórioPENDING,RETRYING,DELIVERED,FAILED(esgotou as tentativas) ouSKIPPED(o endereço estava desligado).attemptsintegerobrigatório- Tentativas feitas.
lastStatusCodeintegerobrigatóriopode vir nulo- Último código HTTP do seu sistema.
lastErrorstringobrigatóriopode vir nulo- Último erro.
lastAttemptAtstringobrigatóriopode vir nulo- Última tentativa.
nextAttemptAtstringobrigatóriopode vir nulo- Próxima tentativa (1 min, 5 min, 30 min, 2 h, 6 h e 12 h).
deliveredAtstringobrigatóriopode vir nulo- Quando foi entregue.
createdAtstringobrigatóriopode vir nulo- Quando a entrega foi aberta.
WebhookTestResult
O resultado do evento de teste (webhook.test).
deliveredbooleanobrigatório- O seu sistema respondeu 2xx.
statusCodeintegerobrigatóriopode vir nulo- O código que ele respondeu.
errorstringobrigatóriopode vir nulo- O motivo da falha.
msintegerobrigatóriopode vir nulo- Tempo da entrega, em ms.