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

# Respuesta y headers

> Cuerpo Markdown o JSON y headers de observabilidad.

# Respuesta y headers

## Markdown (por defecto)

Con `response_format=markdown` recibes el documento convertido como cuerpo crudo:

```http theme={null}
HTTP/1.1 200 OK
content-type: text/markdown; charset=utf-8
content-disposition: attachment; filename="informe.md"
```

## JSON

Con `response_format=json` recibes un objeto con el Markdown y su metadata:

```json theme={null}
{
  "filename": "informe.pdf",
  "input_format": "pdf",
  "markdown": "# Informe...\n\n...",
  "size_bytes": 184320,
  "timings": {
    "convert_ms": 142,
    "clean_ms": 3,
    "total_worker_ms": 145,
    "upload_ms": 20,
    "total_request_ms": 171
  },
  "markdown_bytes": 5120,
  "token_saved_estimate": 44800
}
```

<ResponseField name="markdown" type="string">
  Documento convertido a Markdown.
</ResponseField>

<ResponseField name="input_format" type="string">
  Formato detectado o forzado de la entrada.
</ResponseField>

<ResponseField name="engine" type="string" />

<ResponseField name="size_bytes" type="integer">
  Tamaño del documento procesado en bytes.
</ResponseField>

<ResponseField name="timings" type="object">
  Tiempos en milisegundos: `convert_ms`, `clean_ms`, `total_worker_ms`, `upload_ms`, `total_request_ms`.
</ResponseField>

<ResponseField name="markdown_bytes" type="integer">
  Tamaño del Markdown de salida en bytes.
</ResponseField>

<ResponseField name="token_saved_estimate" type="integer">
  Estimación de tokens ahorrados frente a meter el documento bruto en el prompt.
</ResponseField>

## Headers

Toda respuesta incluye headers de observabilidad, útiles para logging y métricas en tu cliente.

| Header                   | Significado                                                   |
| ------------------------ | ------------------------------------------------------------- |
| `X-Conversion-Engine`    | Motor de conversión usado.                                    |
| `X-Input-Format`         | Formato detectado de la entrada.                              |
| `X-Input-Bytes`          | Bytes del documento procesado.                                |
| `X-Wire-Bytes`           | Bytes recibidos por red (solo `/convert/raw` con compresión). |
| `X-Markdown-Bytes`       | Tamaño del Markdown de salida.                                |
| `X-Token-Saved-Estimate` | Tokens ahorrados estimados.                                   |
| `X-Conversion-Ms`        | Tiempo de conversión.                                         |
| `X-Total-Request-Ms`     | Tiempo total de la petición.                                  |
| `ETag`                   | Hash del contenido + parámetros. Úsalo para caché.            |
| `Cache-Control`          | `public, max-age=..., immutable`.                             |

Ver [Caché y ETag](/docs/public/es/concepts/caching).
