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

# Classificação de documentos

> Identifique o tipo de um documento sem extrair os campos

O endpoint `POST /classify` retorna apenas o **tipo do documento** (`document_type`) sem extrair os campos estruturados. É mais rápido e barato quando você só precisa saber o que o usuário enviou.

## Quando usar `/classify` vs `/extract`

| Cenário                                                                              | Use                                                       |
| ------------------------------------------------------------------------------------ | --------------------------------------------------------- |
| Roteamento — descobrir o tipo antes de mandar para uma pipeline específica           | `/classify`                                               |
| Pré-validação de upload — rejeitar antes de processar quando o documento está errado | `/classify`                                               |
| Triagem/catalogação de grandes volumes                                               | `/classify`                                               |
| Precisa dos campos estruturados (valor, datas, partes, etc.)                         | `/extract` ou `/extract/sync`                             |
| Precisa do texto OCR em markdown ou das coordenadas dos campos                       | `/extract/sync` com `includeMarkdown` ou GETs específicos |

## Como funciona

* Apenas síncrono: `POST /classify`. Não existe variante assíncrona nem fluxo de webhook.
* Mesmo modelo de autenticação dos demais endpoints (Bearer com sua chave de API).
* Body aceita `application/json` (com `file: { fileUrl | fileBase64, filename? }`) ou `multipart/form-data` (campo `file` binário ou `fileUrl` como string).
* Campos opcionais: `referenceId`, `metadata`, `timeout` (mínimo 10 s, padrão 60 s, máximo 300 s).

<Info>
  Para os parâmetros completos e respostas detalhadas, veja a referência [`POST /classify`](/api-reference/endpoint/classify).
</Info>

## Resposta

```json theme={"dark"}
{
  "request_id": "req_01H...",
  "status": "success",
  "document_type": "BOLETO",
  "confidence": 0.97,
  "reason": "matches_provided_type",
  "document_type_detection": {
    "source": "model",
    "provided_document_type": null,
    "detected_document_type": "BOLETO",
    "confidence": 0.97,
    "accepted": true,
    "reason": "matches_provided_type"
  }
}
```

* `document_type` — tipo detectado, um dos valores listados em [Tipos de documento](/document-types).
* `confidence` — confiança do modelo na classificação (0 a 1).
* `reason` — código curto explicando a decisão.
* `document_type_detection` — bloco com o detalhe da decisão de classificação (origem, comparação, etc.). Veja [Confiabilidade](/reliability) para o significado de cada subcampo.

Diferente do `/extract`, a resposta de classificação **não inclui** `fields`, bloco `scanify`, `markdown` ou `processed_at`. Apenas o tipo e a confiança.

## Limitações

* Não aceita arquivos **XML**. Outros formatos seguem as regras gerais de [arquivos suportados](/supported-files).
* Não há fluxo assíncrono / callback para `/classify`. Se o seu caso requer processamento em background, use `/extract` e descarte os campos que não precisar.

## Exemplo

<CodeGroup>
  ```bash cURL theme={"dark"}
  curl -X POST https://api.scanify.com.br/classify \
    -H "Authorization: Bearer SUA_CHAVE_DE_API" \
    -H "Content-Type: application/json" \
    -d '{
      "file": {
        "fileUrl": "https://exemplo.com/documento.pdf"
      },
      "referenceId": "pedido-2024-001"
    }'
  ```

  ```js Node.js (axios) theme={"dark"}
  const axios = require('axios');

  const response = await axios.post(
    'https://api.scanify.com.br/classify',
    {
      file: {
        fileUrl: 'https://exemplo.com/documento.pdf',
      },
      referenceId: 'pedido-2024-001',
    },
    {
      headers: {
        Authorization: 'Bearer SUA_CHAVE_DE_API',
        'Content-Type': 'application/json',
      },
    }
  );

  console.log(response.data);
  ```

  ```python Python (requests) theme={"dark"}
  import requests

  response = requests.post(
      'https://api.scanify.com.br/classify',
      headers={
          'Authorization': 'Bearer SUA_CHAVE_DE_API',
          'Content-Type': 'application/json',
      },
      json={
          'file': {
              'fileUrl': 'https://exemplo.com/documento.pdf',
          },
          'referenceId': 'pedido-2024-001',
      },
  )

  print(response.json())
  ```
</CodeGroup>

<CardGroup cols={2}>
  <Card title="Extração síncrona" icon="bolt" href="/api-reference/endpoint/extract-sync">
    Extrai campos estruturados e retorna o resultado na mesma requisição.
  </Card>

  <Card title="Tipos de documento" icon="file-lines" href="/document-types">
    Lista completa dos tipos suportados pelo modelo.
  </Card>

  <Card title="Confiabilidade da extração" icon="shield-check" href="/reliability">
    Como interpretar `confidence`, `reason` e os subcampos de detecção.
  </Card>

  <Card title="Erros e códigos" icon="triangle-exclamation" href="/errors">
    Referência de erros HTTP e códigos de falha da API.
  </Card>
</CardGroup>
