# Formatos de respuesta y negociación de contenido

Qué devuelve una acción y cómo la cabecera Accept elige entre un PDF, un ZIP, un sobre JSON y multipart/mixed.

La mayoría de las acciones devuelve un único documento `application/pdf`. Las
cuatro acciones de división devuelven varios documentos a la vez, y usted
elige cómo se empaquetan con la cabecera de solicitud `Accept`. Esta página
es la referencia de esa negociación de contenido: las opciones de
empaquetado, el esquema del sobre JSON y qué ocurre cuando una cabecera
`Accept` no coincide con nada.

## Respuestas de un solo documento

Toda acción que no sea de división responde con `200 OK` y el PDF procesado
como cuerpo en crudo:

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

No hay nada que negociar: escriba el cuerpo en un archivo, como hacen los
ejemplos de cada página de acción.

## Respuestas de varios documentos

La familia de división devuelve varios documentos en una sola llamada:
[Dividir por número de páginas](/docs/api/split-pdf-by-page-count), [Dividir
en una página](/docs/api/split-pdf-at-page), [Dividir por tamaño de
archivo](/docs/api/split-pdf-by-file-size) y [Dividir en grupos de
páginas](/docs/api/split-pdf-into-page-groups). Los documentos de salida se
llaman `00001.pdf`, `00002.pdf` y así sucesivamente, en orden. El
empaquetado se selecciona con la cabecera de solicitud `Accept`:

| Cabecera `Accept`    | Respuesta                                                      |
| -------------------- | -------------------------------------------------------------- |
| *(no se envía)*      | `application/zip`: la opción predeterminada                    |
| `application/zip`    | Un archivo ZIP con los PDF de salida                           |
| `application/json`   | Un sobre JSON con los documentos codificados en base64         |
| `multipart/mixed`    | Un PDF por parte                                               |
| cualquier otra cosa  | `406 Not Acceptable`                                           |

### application/zip: la opción predeterminada

Sin cabecera `Accept` (o con `Accept: application/zip`), la respuesta es un
archivo ZIP cuyas entradas se llaman `00001.pdf`, `00002.pdf`, y así
sucesivamente:

```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
```

Descomprima `parts.zip` para obtener los documentos individuales.

### application/json: el sobre en base64

Solicite `Accept: application/json` para recibir todos los documentos en
línea en una sola respuesta JSON, práctico cuando quiere mantener las partes
en memoria o reenviarlas sin tocar el sistema de archivos:

```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
```

El cuerpo es una matriz `documents`; cada entrada lleva su nombre y sus bytes
codificados en 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>
  Los documentos PDF de salida, en orden.
</ParamField>

<ParamField name="documents[].name" type="string" required>
  El nombre del documento: `00001.pdf`, `00002.pdf` y así sucesivamente.
</ParamField>

<ParamField name="documents[].content" type="string (base64)" required>
  El documento PDF codificado en base64. Decodifíquelo para recuperar los
  bytes originales del PDF.
</ParamField>

<ParamField name="documents[].content_type" type="string" required>
  El tipo de medio del documento: `application/pdf`.
</ParamField>

### multipart/mixed: una parte por documento

Solicite `Accept: multipart/mixed` para recibir los documentos como un cuerpo
multipart con una parte por cada PDF de salida, en orden. Cada parte tiene un
`Content-Type` de `application/pdf` y un `Content-Disposition` que la nombra
`00001.pdf`, `00002.pdf` y así sucesivamente.

```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
```

## Un Accept sin coincidencia devuelve 406

Si envía una cabecera `Accept` que no coincide con ninguno de los tres
formatos anteriores, por ejemplo `Accept: application/pdf` en una acción de
división, la API responde con `406 Not Acceptable` y un cuerpo
`application/problem+json`. Omita `Accept` para tomar el ZIP predeterminado,
o solicite uno de los tipos de medio admitidos. Consulte
[Errores](/docs/api/errors) para ver la forma del detalle del problema.

<Tip>
  Para ver código de principio a fin que llama a una acción de división y
  desempaqueta cada formato, ya sea extrayendo el ZIP, decodificando el sobre
  JSON o leyendo las partes multipart, consulte la guía [Dividir un
  PDF](/docs/api/splitting-a-pdf).
</Tip>
