> For the complete documentation index, see [llms.txt](https://outboundpro.gitbook.io/api-v1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://outboundpro.gitbook.io/api-v1/contact/inferir-e-mail.md).

# Inferir e-mail

## Inferir e-mail a partir do nome + domínio

> Gera o e-mail mais provável do contato combinando o nome com o domínio do\
> \*\*website da empresa\*\* (ex.: João Silva + \`empresa.com.br\` → \`<joao.silva@empresa.com.br>\`).\
> Retorna \`score\` de confiança (0–100) e flag \`domain\_catch\_all\`.\
> \
> \### Pré-requisitos\
> \- Empresa \*\*precisa ter \`website\` cadastrado\*\* — sem isso, retorna \`400\`.\
> \- \*\*Não envia teste de SMTP\*\* (use \[\`contact/verify-emails\`]\(#operation/contactVerifyEmails) depois).\
> \
> \### Score (heurística atual)\
> \- \`90+\`: padrão comum (\`{first}.{last}@\`), nome completo, domínio confiável.\
> \- \`70–89\`: padrão menos comum ou domínio catch-all.\
> \- \`<70\`: incerto — verifique antes de usar em envio massivo.<br>

```json
{"openapi":"3.0.3","info":{"title":"OutboundPro API","version":"2.0.0"},"tags":[{"name":"Contact","description":"**Sócios e contatos de empresas** (`emp_socio` no banco interno).\nOperações completas: listar, criar, editar, marcar como principal,\ninferir e verificar e-mails, verificar WhatsApp, buscar dados privados\n(com créditos), e listar outras empresas onde o contato é sócio.\n\n### Conceitos chave\n- **Contato principal** (`is_primary_contact`): cada empresa tem 1 contato\n  marcado como principal. `set-primary` automaticamente despromove o anterior.\n- **Prospectado** (`is_prospected`): flag de \"este contato vai entrar no\n  funil de prospecção\". Marcar/desmarcar via `toggle-save`.\n- **Inferência de e-mail**: gera candidato a e-mail baseado em nome do contato\n  + domínio do website da empresa (ex.: `joao.silva@empresa.com.br`),\n  com score de confiança. **Não envia teste** — apenas predição.\n- **Verificação de e-mail**: probe DNS + SMTP nos e-mails cadastrados, retorna\n  `status` (1=pending, 2=valid, 3=invalid).\n- **Verificação de WhatsApp**: testa cada número, retorna `whatsapp: true/false`\n  + `whatsapp_name` e `whatsapp_photo` se disponível.\n- **Dados privados** (`find-private-data`): **consome créditos pagos**, busca\n  telefones/emails em serviços externos (Unitfour Intouch, etc.). Verifique\n  saldo antes.\n\n### Performance\nEndpoint `contact/list` sem filtro varre toda a tabela `empresa_socio` —\nuse `lead_id` ou `lead_hash` para escopo restrito (recomendado).\n"}],"servers":[{"url":"https://app.outboundpro.com.br/api","description":"Produção"}],"security":[{"TokenAuth":[]}],"components":{"securitySchemes":{"TokenAuth":{"type":"apiKey","in":"header","name":"Token","description":"Chave privada do cliente (`cli_chave_privada`). Formato UUID v4\n(36 caracteres com hífens). Aceita header em qualquer case\n(`Token`, `token`, `TOKEN`).\n"}},"schemas":{"ErrorResponse":{"type":"object","required":["response"],"properties":{"response":{"type":"string","enum":["error"]},"mensagem":{"type":"string","description":"Descrição do erro em pt-BR. Família Contact usa `message` (legado)."},"message":{"type":"string","description":"Equivalente inglês de `mensagem`, usado pela família Contact."}}}},"responses":{"Unauthorized":{"description":"Token ausente, inválido ou cliente inativo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"Recurso não encontrado. Pode ser por:\n- ID inexistente.\n- ID existe **em outro cliente** (isolamento de tenant retorna 404, não 403).\n- Recurso foi deletado/soft-deleted.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/contact/infer-email":{"post":{"tags":["Contact"],"summary":"Inferir e-mail a partir do nome + domínio","operationId":"contactInferEmail","description":"Gera o e-mail mais provável do contato combinando o nome com o domínio do\n**website da empresa** (ex.: João Silva + `empresa.com.br` → `joao.silva@empresa.com.br`).\nRetorna `score` de confiança (0–100) e flag `domain_catch_all`.\n\n### Pré-requisitos\n- Empresa **precisa ter `website` cadastrado** — sem isso, retorna `400`.\n- **Não envia teste de SMTP** (use [`contact/verify-emails`](#operation/contactVerifyEmails) depois).\n\n### Score (heurística atual)\n- `90+`: padrão comum (`{first}.{last}@`), nome completo, domínio confiável.\n- `70–89`: padrão menos comum ou domínio catch-all.\n- `<70`: incerto — verifique antes de usar em envio massivo.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id"],"properties":{"id":{"type":"integer"}}}}}},"responses":{"200":{"description":"E-mail inferido.","content":{"application/json":{"schema":{"type":"object","properties":{"response":{"type":"string","enum":["success"]},"message":{"type":"string"},"inferred_email":{"type":"object","properties":{"full_name":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"inferred_email":{"type":"string","format":"email"},"score":{"type":"integer","minimum":0,"maximum":100},"site":{"type":"string"},"domain_catch_all":{"type":"boolean"},"linkedin":{"type":"string","nullable":true},"twitter":{"type":"string","nullable":true}}}}}}}},"400":{"description":"Empresa sem website — não é possível inferir.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}}}}
```
