# Formatos de resposta e negociação de conteúdo

O que uma ação devolve e como o cabeçalho Accept escolhe entre um PDF, um ZIP, um envelope JSON e multipart/mixed.

A maioria das ações retorna um único documento `application/pdf`. As quatro ações
de divisão retornam vários documentos de uma vez, e você escolhe o empacotamento
com o cabeçalho de requisição `Accept`. Esta página é a referência dessa
negociação de conteúdo: as opções de empacotamento, o esquema do envelope JSON e
o que acontece quando um cabeçalho `Accept` não corresponde a nada.

## Respostas de documento único

Toda ação que não é de divisão responde com `200 OK` e traz no corpo bruto o PDF
processado:

```http
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 48213
```

Não há nada a negociar. Grave o corpo em fluxo para um arquivo, como fazem os
exemplos de cada página de ação.

## Respostas de vários documentos

A família de divisão retorna muitos documentos em uma única chamada:
[Dividir por número de páginas](/docs/api/split-pdf-by-page-count),
[Dividir em uma página](/docs/api/split-pdf-at-page),
[Dividir por tamanho de arquivo](/docs/api/split-pdf-by-file-size) e
[Dividir em grupos de páginas](/docs/api/split-pdf-into-page-groups). Os
documentos de saída são nomeados `00001.pdf`, `00002.pdf` e assim por diante, em
ordem. Você seleciona o empacotamento com o cabeçalho de requisição `Accept`:

| Cabeçalho `Accept`   | Resposta                                                        |
| -------------------- | --------------------------------------------------------------- |
| *(nenhum enviado)*   | `application/zip`, o padrão                                     |
| `application/zip`    | Um arquivo ZIP com os PDFs de saída                             |
| `application/json`   | Um envelope JSON de documentos codificados em base64            |
| `multipart/mixed`    | Um PDF por parte                                                |
| qualquer outro valor | `406 Not Acceptable`                                            |

### application/zip: o padrão

Sem cabeçalho `Accept` (ou com `Accept: application/zip`), a resposta é um arquivo
ZIP cujas entradas são nomeadas `00001.pdf`, `00002.pdf` e assim por diante:

```bash title="cURL"
curl https://api.pdfblocks.com/v1/split_by_page_count \
  -H 'X-API-Key: your_api_key' \
  -F file=@input.pdf \
  -F page_count=10 \
  -o parts.zip
```

Descompacte `parts.zip` para obter os documentos individuais.

### application/json: o envelope base64

Peça `Accept: application/json` para receber todos os documentos embutidos em uma
única resposta JSON, o que é conveniente quando você quer manter as partes na
memória ou repassá-las sem tocar no sistema de arquivos:

```bash title="cURL"
curl https://api.pdfblocks.com/v1/split_by_page_count \
  -H 'X-API-Key: your_api_key' \
  -H 'Accept: application/json' \
  -F file=@input.pdf \
  -F page_count=10 \
  -o parts.json
```

O corpo é uma matriz `documents`, e cada entrada traz seu nome e seus bytes
codificados em base64:

```json
{
  "documents": [
    {
      "name": "00001.pdf",
      "content": "JVBERi0xLjcKJeLjz9MK... (base64)",
      "content_type": "application/pdf"
    },
    {
      "name": "00002.pdf",
      "content": "JVBERi0xLjcKJeLjz9MK... (base64)",
      "content_type": "application/pdf"
    }
  ]
}
```

<ParamField name="documents" type="array" required>
  Os documentos PDF de saída, em ordem.
</ParamField>

<ParamField name="documents[].name" type="string" required>
  O nome do documento: `00001.pdf`, `00002.pdf` e assim por diante.
</ParamField>

<ParamField name="documents[].content" type="string (base64)" required>
  O documento PDF, codificado em base64. Decodifique-o para recuperar os bytes
  brutos do PDF.
</ParamField>

<ParamField name="documents[].content_type" type="string" required>
  O tipo de mídia do documento: `application/pdf`.
</ParamField>

### multipart/mixed: uma parte por documento

Peça `Accept: multipart/mixed` para receber em fluxo os documentos como um corpo
multipart, com uma parte por PDF de saída, em ordem. Cada parte tem um
`Content-Type` `application/pdf` e um `Content-Disposition` que a nomeia
`00001.pdf`, `00002.pdf` e assim por diante.

```bash title="cURL"
curl https://api.pdfblocks.com/v1/split_by_page_count \
  -H 'X-API-Key: your_api_key' \
  -H 'Accept: multipart/mixed' \
  -F file=@input.pdf \
  -F page_count=10 \
  -o parts.multipart
```

## Um Accept sem correspondência retorna 406

Se você enviar um cabeçalho `Accept` que não corresponda a nenhum dos três
formatos acima (por exemplo `Accept: application/pdf` em uma ação de divisão), a
API responde com `406 Not Acceptable` e um corpo `application/problem+json`. Ou
omita `Accept` para ficar com o ZIP padrão, ou peça um dos tipos de mídia
compatíveis. Consulte [Erros](/docs/api/errors) para ver o formato do problem
detail.

<Tip>
  Para código de ponta a ponta que chama uma ação de divisão e desempacota cada
  formato (extraindo o ZIP, decodificando o envelope JSON ou lendo as partes
  multipart), consulte o guia [Dividir um PDF](/docs/api/splitting-a-pdf).
</Tip>
