> ## 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.

# Parámetros

> Referencia completa de query params, modos y formatos de entrada.

# Parámetros

Los tres endpoints de conversión comparten el mismo conjunto de parámetros. En `POST /convert` y `POST /convert/raw` van en query string; en `POST /convert/from-url` pueden ir en query o en el JSON body.

## Query params

<ParamField query="filename" type="string" default="document.pdf">
  Nombre del documento. Ayuda a detectar el formato y nombra la salida. Solo en `/convert/raw` y `/convert/from-url`.
</ParamField>

<ParamField query="input_format" type="enum" default="auto">
  Fuerza el formato de entrada. Con `auto` se detecta por extensión y luego por `content-type`.
</ParamField>

<ParamField query="mode" type="enum" default="fast" />

<ParamField query="clean" type="boolean" default="true">
  Limpia headers repetidos, líneas de control y exceso de saltos de línea.
</ParamField>

<ParamField query="response_format" type="enum" default="markdown">
  `markdown` devuelve el cuerpo crudo. `json` devuelve un objeto con metadata. Ver [Respuesta](/docs/public/es/api/response).
</ParamField>

## Parámetros solo de streaming

`POST /convert/stream` acepta, además de `filename`, `input_format`, `clean` y `slim`:

<ParamField query="stream_slim_strategy" type="enum" default="sampled">
  Cómo limpia cabeceras/pies cuando `slim=true`, sin sacrificar el TTFB:

  * `off`: streaming real página a página, sin detección de ruido (TTFB mínimo).
  * `sampled`: detecta cabeceras/pies muestreando las primeras N páginas (`STREAM_SLIM_SAMPLE_PAGES`, 20 por defecto) y luego emite por página. Equilibrio por defecto.
  * `full`: materializa el documento entero para la mejor detección de ruido (TTFB más alto).

  Un valor fuera de `{off, sampled, full}` responde `400`. La respuesta lleva el header `X-PDF-Stream-Slim-Strategy`. Ver [Modos](/docs/public/es/concepts/modes).
</ParamField>

## Valores de `input_format`

| Valor  | Formato                                |
| ------ | -------------------------------------- |
| `auto` | Detección automática (por defecto).    |
| `pdf`  | PDF.                                   |
| `docx` | Word.                                  |
| `xlsx` | Excel.                                 |
| `pptx` | PowerPoint.                            |
| `csv`  | CSV (tabla Markdown).                  |
| `txt`  | Texto plano.                           |
| `zip`  | ZIP con un documento soportado dentro. |

Ver [Formatos soportados](/docs/public/es/concepts/formats).

## Valores de `mode`

| Modo      | Uso                                                                   |
| --------- | --------------------------------------------------------------------- |
| `quality` | Más lento, mejor para documentos difíciles.                           |
| `auto`    | Empieza rápido y sube de modo solo si la salida sale demasiado pobre. |

## Valores de `engine`

| Engine | Uso |
| ------ | --- |

## Salida BYOS (`output_url`)

<ParamField query="output_url" type="string">
  URL PUT prefirmada de tu storage. Si la das, la API sube ahí el Markdown y devuelve un JSON pequeño en vez del Markdown por body. Auto-activa defaults BYOS: `response_format=json`, `output_encoding=zstd`, `slim=true`.
</ParamField>

<ParamField query="output_encoding" type="enum" default="identity">
  Compresión del Markdown subido: `identity`, `gzip`, `zstd`. Ver [Compresión](/docs/public/es/concepts/compression).
</ParamField>

<ParamField query="output_head_url" type="string">
  URL HEAD prefirmada para detectar cache hit ANTES de extraer. Si el objeto ya existe en tu storage, la API devuelve el `output_url` sin reprocesar.
</ParamField>

## Precedencia en `from-url`

En `POST /convert/from-url`, si un parámetro llega por query **y** por JSON body, gana el **query**. Lo que no envíes toma el valor del body o el default.
