> 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/lead-enrich-batch/status-do-job.md).

# Status do job

## Status de um job de enriquecimento em massa

> Retorna o estado atual de \*\*um\*\* job específico criado via \`/create\`.\
> Usa esse endpoint pra acompanhar o ciclo de vida do processamento:\
> \*\*A\*\* (aguardando) → \*\*P\*\* (em processamento) → \*\*C\*\* (concluído) ou \*\*E\*\* (erro).\
> \
> \### Quando usar\
> \- \*\*Polling após \`/create\`\*\* — verifica se já terminou pra puxar resultados.\
> \- \*\*Dashboard interno\*\* — mostra progresso e status no painel do seu CRM.\
> \- \*\*Debug\*\* — quando um webhook não chegou, consulta aqui pra saber o que aconteceu.\
> \- \*\*Validação pré-cancel\*\* — antes de chamar cancelamento, confirma que ainda está em A/P.\
> \
> \### Quando NÃO usar\
> \- \*\*Em loop apertado (a cada 1s)\*\* — desperdiça créditos de rede sem ganho. Polling a cada 30-60s é suficiente.\
> \- \*\*Se você já configurou webhook\*\* — webhook entrega o resultado push, mais eficiente que polling.\
> \
> \### Casos de uso reais\
> \- \*\*Salesforce → OutboundPro\*\*: fluxo Apex que chama \`/create\`, salva o \`job\_id\` no campo do registro, polling a cada 30s até virar C, daí puxa \`/results\`.\
> \- \*\*Notificação Slack\*\*: bot que escuta jobs do dia, faz check a cada 5 min, alerta o canal se algum ficou em erro (E) ou está há mais de 30 min em P.\
> \- \*\*Retry inteligente\*\*: se webhook falhou (URL temporariamente fora), aplicação reativa periodicamente os jobs \`E\`, lê o motivo do erro, e decide se vale reprocessar.\
> \
> Retorna também o \*\*status do webhook\*\* (sent/pending/failed) — útil pra saber se o cliente recebeu o aviso ou se precisa puxar manualmente.<br>

```json
{"openapi":"3.0.3","info":{"title":"OutboundPro API","version":"2.0.0"},"tags":[{"name":"Lead","description":"**Empresas já existentes na sua base** (após enriquecimento via\n[Company](#tag/Company) ou cadastro manual no painel).\n\nO termo \"Lead\" no OutboundPro = \"empresa rastreada por você\". Cada lead tem\nstatus (Novo, Em prospecção, Convertido, etc.), lista vinculada, scoring\nautomático e contatos (sócios) associados.\n\n### Diferença Company × Lead\n- **Company** = empresa pelo CNPJ; consulta a base pública (RFB) do OutboundPro e pode salvar como lead.\n- **Lead** = consulta sua base local; **rápido**, sem lookup externo.\n\nSe você sabe que a empresa já está na sua base, prefira `lead/*` por\nperformance.\n\n### Estrutura típica\n- `id` (`emp_codigo`) ou `hash` (`emp_hash`) — identificadores estáveis.\n- `status` — fluxo configurável por cliente ([Status](#tag/Status)).\n- `lista` — agrupamento ([List](#tag/List)).\n- `contatos` — sócios ([Contact](#tag/Contact)).\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"}},"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"}}}}},"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."}}}}},"paths":{"/lead-enrich-batch/get":{"get":{"tags":["Lead"],"summary":"Status de um job de enriquecimento em massa","operationId":"leadEnrichBatchGet","description":"Retorna o estado atual de **um** job específico criado via `/create`.\nUsa esse endpoint pra acompanhar o ciclo de vida do processamento:\n**A** (aguardando) → **P** (em processamento) → **C** (concluído) ou **E** (erro).\n\n### Quando usar\n- **Polling após `/create`** — verifica se já terminou pra puxar resultados.\n- **Dashboard interno** — mostra progresso e status no painel do seu CRM.\n- **Debug** — quando um webhook não chegou, consulta aqui pra saber o que aconteceu.\n- **Validação pré-cancel** — antes de chamar cancelamento, confirma que ainda está em A/P.\n\n### Quando NÃO usar\n- **Em loop apertado (a cada 1s)** — desperdiça créditos de rede sem ganho. Polling a cada 30-60s é suficiente.\n- **Se você já configurou webhook** — webhook entrega o resultado push, mais eficiente que polling.\n\n### Casos de uso reais\n- **Salesforce → OutboundPro**: fluxo Apex que chama `/create`, salva o `job_id` no campo do registro, polling a cada 30s até virar C, daí puxa `/results`.\n- **Notificação Slack**: bot que escuta jobs do dia, faz check a cada 5 min, alerta o canal se algum ficou em erro (E) ou está há mais de 30 min em P.\n- **Retry inteligente**: se webhook falhou (URL temporariamente fora), aplicação reativa periodicamente os jobs `E`, lê o motivo do erro, e decide se vale reprocessar.\n\nRetorna também o **status do webhook** (sent/pending/failed) — útil pra saber se o cliente recebeu o aviso ou se precisa puxar manualmente.\n","parameters":[{"in":"query","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Detalhes do job.","content":{"application/json":{"schema":{"type":"object","properties":{"response":{"type":"string","enum":["success"]},"job":{"type":"object","properties":{"id":{"type":"integer"},"status":{"type":"string","enum":["A","P","C","E"]},"origem":{"type":"string","enum":["painel","api"]},"progresso_pct":{"type":"integer"},"data_inicio":{"type":"string","format":"date-time"},"data_fim":{"type":"string","format":"date-time","nullable":true},"data_cadastro":{"type":"string","format":"date-time"},"quantidade_leads_total":{"type":"integer"},"consumo_total_creditos":{"type":"integer"},"webhook_url":{"type":"string","nullable":true},"webhook_status":{"type":"string","enum":["pending","sent","failed","skipped"]},"webhook_tentativas":{"type":"integer"},"webhook_ultima_tentativa":{"type":"string","format":"date-time","nullable":true},"webhook_ultimo_erro":{"type":"string","nullable":true}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}}}}
```
