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

# POST /convert/raw

> Sube un documento directamente y recibe Markdown.

# POST /convert/raw

Convierte un documento enviado en el cuerpo de la peticion.

## Request

```http theme={null}
POST /convert/raw?filename=informe.pdf&mode=fast HTTP/1.1
x-api-key: TU_API_KEY
content-type: application/pdf
```

El body es binario.

## Query params

| Param             | Tipo    | Default        | Descripcion                                         |
| ----------------- | ------- | -------------- | --------------------------------------------------- |
| `filename`        | string  | `document.pdf` | Ayuda a detectar formato.                           |
| `input_format`    | enum    | `auto`         | `pdf`, `docx`, `csv`, `txt`, `xlsx`, `pptx`, `zip`. |
| `mode`            | enum    | `fast`         | `fast`, `balanced`, `quality`, `auto`.              |
| `clean`           | boolean | `true`         | Limpia headers repetidos y ruido.                   |
| `response_format` | enum    | `markdown`     | `markdown` o `json`.                                |

<Note />

## Limite de tamano del upload crudo

`POST /convert/raw` tiene un limite de body **separado** del tope global de procesamiento:

| Limite                                                               | Valor por defecto | Variable               |
| -------------------------------------------------------------------- | ----------------: | ---------------------- |
| Upload crudo (body de `/convert/raw`, `/convert`, `/convert/stream`) |             12 MB | `RAW_UPLOAD_MAX_BYTES` |
| Tope duro de procesamiento                                           |            500 MB | `MAX_INPUT_BYTES`      |

El raw viaja entero por la red antes de empezar a convertir: un body enorme gasta segundos solo en transferencia. Por eso se acota fuerte. Los PDFs grandes deben ir por [`/convert/from-url`](/docs/public/es/api/convert-from-url) o `/convert/accelerated`, que **no** usan este limite (siguen `FETCH_MAX_BYTES`, 500 MB).

El limite mide los bytes **descomprimidos**: un cuerpo `gzip`/`zstd` que descomprime por encima de 12 MB tambien se rechaza.

### Respuesta `413` cuando el raw es demasiado grande

```json theme={null}
{
  "error": "PDF too large for raw upload fast path",
  "max_raw_upload_mb": 12.0,
  "why": "Raw upload sends the full PDF through the request body. Large PDFs spend seconds only in network transfer before conversion starts.",
  "recommendation": "Upload the PDF to S3/R2/GCS/Supabase Storage and call /convert/from-url or /convert/accelerated with signed URLs.",
  "recommended_endpoint": "/convert/accelerated"
}
```

El `413` nunca incluye la URL firmada del request ni rutas internas. Ver [Limites](/docs/public/es/concepts/limits) y [Raw vs storage URL](/docs/public/es/performance/raw-vs-from-url).

## Ejemplo con gzip

```bash theme={null}
gzip -c informe.pdf > informe.pdf.gz

curl -X POST "https://api.markpdf.tech/convert/raw?filename=informe.pdf" \
  -H "x-api-key: TU_API_KEY" \
  -H "content-type: application/pdf" \
  -H "content-encoding: gzip" \
  --data-binary "@informe.pdf.gz"
```

## Ejemplo con zstd

```bash theme={null}
zstd -T0 -3 informe.pdf -o informe.pdf.zst

curl -X POST "https://api.markpdf.tech/convert/raw?filename=informe.pdf" \
  -H "x-api-key: TU_API_KEY" \
  -H "content-type: application/pdf" \
  -H "content-encoding: zstd" \
  --data-binary "@informe.pdf.zst"
```

Zstd suele descomprimir rapido con buen ratio. Para uploads grandes, evita Brotli porque ahorra bytes pero consume mas CPU.
