Pular para o conteúdo principal

Webhooks — Visão geral

Webhooks permitem que o InHire notifique seu sistema em tempo real quando algo acontece na sua conta — uma nova candidatura, a mudança de etapa de um candidato, a criação de uma requisição, e mais. Em vez de ficar consultando a API repetidamente (polling), você registra uma URL e o InHire envia uma requisição POST para ela sempre que o evento ocorre.

Aqui tratamos os termos: TALENTO, VAGA e CANDIDATO.

O conceito: registrar uma vez, receber muitas vezes​

Um webhook funciona em duas fases separadas:

  1. Registro (uma única vez). Você cria o webhook informando o evento e a sua URL. Essa chamada apenas registra a assinatura e devolve o webhook salvo (com um id). Ela não retorna eventos — é só a configuração.
  2. Recebimento (contínuo e assíncrono). Depois, toda vez que a ação ocorre na sua conta, o InHire faz uma requisição POST independente para a sua URL com o payload do evento. O seu sistema recebe e processa.
FASE 1 — Registro (uma vez)
Você ──POST /integrations/webhooks──► InHire (responde: webhook salvo, com id)

FASE 2 — Recebimento (sempre que a ação acontece, de forma assíncrona)
Ação na conta ──► InHire ──POST {payload do evento}──► sua URL ──► você processa
aviso

Criar o webhook não dispara nem retorna eventos. A resposta da criação é apenas o objeto do webhook. Os eventos chegam depois, em requisições separadas para a sua URL, cada vez que a ação correspondente acontece.

Criando um webhook​

Registre o webhook informando qual evento quer ouvir e para qual URL o InHire deve enviar a notificação. Endpoint: Criar webhook.

curl -X POST https://api.inhire.app/integrations/webhooks \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "X-Tenant: tenantId" \
-H "Content-Type: application/json" \
-d '{
"name": "Notificar mudança de etapa",
"description": "Notifica quando um candidato muda de etapa no processo seletivo",
"event": "JOB_TALENT_STAGE_ADDED",
"url": "https://seu-sistema.com/webhooks/inhire",
"headers": {
"Authorization": "Bearer UM_SEGREDO_SEU"
}
}'

A resposta é o webhook salvo:

{
"id": "id_gerado_automaticamente",
"name": "Notificar mudança de etapa",
"description": "Notifica quando um candidato muda de etapa no processo seletivo",
"event": "JOB_TALENT_STAGE_ADDED",
"url": "https://seu-sistema.com/webhooks/inhire",
"headers": {
"Authorization": "Bearer UM_SEGREDO_SEU"
},
"createdAt": "2026-06-18T12:00:00.000Z"
}

A partir daí, o webhook está ativo: o InHire passará a chamar a sua URL sempre que o evento ocorrer. O que fazer ao receber cada evento é descrito no guia do evento (ver tabela abaixo).

Campos do webhook​

CampoObrigatórioDescrição
nameSimNome para você identificar o webhook
eventSimUm dos 9 eventos da tabela abaixo
urlSimURL https do seu sistema que receberá o POST
headersNãoHeaders customizados enviados em toda chamada (use para autenticar a sua ponta)
rulesNãoFiltros para receber apenas eventos que interessam (ver abaixo)
descriptionNãoTexto livre de documentação

Todas as operações de gerenciamento exigem os headers Authorization (token de acesso) e X-Tenant (ver Autenticação):

OperaçãoEndpoint
CriarCriar webhook
Listar todosListar webhooks
Obter por IDObter webhook por ID
AtualizarAtualizar webhook
RemoverRemover webhook
Listar por eventoListar webhooks por evento

Eventos disponíveis​

São 11 eventos que podem ser assinados. Depois de registrar o webhook (acima), siga o guia do evento para saber qual payload chega e como processá-lo:

EventoQuando disparaGuia
JOB_TALENT_ADDEDUm talento é inscrito em uma vaga (vira candidato)Talento inscrito em uma vaga
JOB_TALENT_STAGE_ADDEDUm candidato muda de etapa no processoTalento mudou de etapa
JOB_TALENT_UPDATEDAlgo muda em uma candidatura (currículo, análise, triagem…)Candidatura atualizada
JOB_TALENT_FIT_UPDATEDA triagem por IA (v3) atualizou a nota do candidato na vagaFit da triagem atualizado
FORM_RESPONSE_ADDEDUma resposta de formulário é registradaResposta de formulário registrada
JOB_ADDEDUma vaga é criadaVaga criada
JOB_UPDATEDUma vaga é atualizadaVaga atualizada
JOB_REMOVEDUma vaga é removidaVaga removida
JOB_PAGE_CREATEDUma página de divulgação é criadaPágina de divulgação criada
REQUISITION_CREATEDUma requisição de vaga é criadaRequisição criada
REQUISITION_STATUS_UPDATEDO status de uma requisição mudaStatus de requisição atualizado

O corpo enviado para a sua URL muda de acordo com o evento — veja o detalhe no guia de cada um.

Filtrando com rules​

Por padrão, um webhook recebe todas as ocorrências do evento. Use rules (no momento da criação) para receber apenas as que interessam — por exemplo, somente quando o candidato entra em uma etapa específica.

Cada regra compara um campo do payload do evento com um valor:

{
"rules": {
"stageName": { "operator": "=", "value": "Teste Técnico" }
}
}

Operadores disponíveis: =, !=, >, <, >=, <=, contains, notContains.

Com mais de uma regra, o evento só é entregue quando todas casam, independentemente da ordem em que foram declaradas.

dica

Use os campos que realmente existem no payload daquele evento — uma regra que aponta para um campo inexistente, null ou vazio ("") faz o evento não ser entregue, com qualquer operador, inclusive !=: { "status": { "operator": "!=", "value": "rejected" } } não entrega o evento quando status não vem no payload. Confira os campos no guia do evento correspondente.

Segurança​

A autenticação da sua ponta é responsabilidade sua. O InHire envia os headers que você configurou no webhook em toda chamada — use isso para validar que a requisição veio do InHire:

  • Orientamos a configuração de um header de segurança no webhook, ex.: {"Authorization": "Bearer <TOKEN_DO_WEBHOOK>"} ou {"X-Webhook-Secret": "..."}.
  • No seu endpoint, rejeite qualquer requisição que não traga esse header com o valor esperado.
  • Exponha sempre uma URL https.
aviso

As notificações não são assinadas com HMAC. A garantia de autenticidade pode ser disponibilizada por meio de um header de segurança que você configura. Trate esse header como uma credencial e rotacione-o via Atualizar webhook se necessário.

Próximos passos​

Depois de registrar o webhook, siga o guia do evento que você quer ouvir: