> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sherlocker.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# bad_request

> Erro 400: requisição malformada ou elemento obrigatório ausente

**Status HTTP:** `400`

## O que significa

A requisição está malformada ou falta um elemento obrigatório que é verificado antes da validação de campos. O motivo exato vem no campo `detail`.

## Causas comuns

* Header `Idempotency-Key` ausente ou vazio no `POST /analyses` (detail: `Idempotency-Key header required`). No `POST /operations` (Motor de Borderô), a key é **opcional** — a ausência não é erro.
* **Motor de CPF/CNPJ:** `document` sem nenhum dígito (detail: `document is required and must contain a CPF (11 digits) or CNPJ (14 digits) — masked or unmasked accepted`).
* **Motor de CPF/CNPJ:** `document` com tamanho errado: depois de remover a máscara, precisa ter 11 dígitos (CPF) ou 14 dígitos (CNPJ).
* **Motor de CPF/CNPJ:** dígito verificador inválido (detail: `CNPJ inválido` ou `CPF inválido`).

No Motor de Borderô, problemas com o conteúdo do body (base64 inválido, CNAB que não parseia) retornam [`400 validation_error`](/problems/validation_error).

## Como corrigir

* Envie o header `Idempotency-Key` em todo `POST /analyses` (e, embora opcional, também no `POST /operations` quando houver retry). Recomendamos um UUID, amarrado ao ID interno do job (ou do borderô) no seu sistema.
* Envie `document` com 11 dígitos (CPF) ou 14 dígitos (CNPJ). Máscara é aceita: caracteres não numéricos são removidos.
* Valide o dígito verificador do documento antes de enviar.
* Depois de corrigir o body, use uma **nova** `Idempotency-Key`. A mesma key com body diferente retorna [`409 idempotency_conflict`](/problems/idempotency_conflict).

## Exemplo

```json theme={null}
{
  "type": "https://docs.sherlocker.com.br/problems/bad_request",
  "title": "Bad Request",
  "status": 400,
  "code": "bad_request",
  "detail": "Idempotency-Key header required",
  "instance": "/v1?request_id=req-uuid-here"
}
```

O texto de `detail` varia conforme a causa.

## Relacionado

* [Erros da API](/motor-analise/erros)
* [Idempotência](/motores/idempotencia)
* [Quickstart](/motor-analise/quickstart)
