Skip to main content

POST /convert/from-url

Convierte un documento desde una URL firmada. Es la ruta recomendada para documentos ya guardados en S3, Supabase Storage, Cloudflare R2, GCS o Azure Blob: la API descarga el documento directamente, sin que tu servidor reenvíe los bytes.

JSON body

string
requerido
URL firmada del documento. Debe ser https.
string
predeterminado:"document.pdf"
Nombre del documento; ayuda a detectar el formato.
enum
predeterminado:"auto"
pdf, docx, csv, txt, xlsx, pptx, zip o auto.
enum
predeterminado:"fast"
boolean
predeterminado:"true"
Limpia el Markdown de salida.
enum
predeterminado:"markdown"
markdown o json.
string
URL PUT prefirmada de tu storage/CDN (BYOS). Si la das, la API sube ahi el Markdown convertido y responde un JSON pequeno con output_url, en vez de devolver el Markdown completo por la respuesta. Reduce el tiempo de Lambda vivo y el ancho de banda de salida desde el backend.
enum
predeterminado:"identity"
Compresion del Markdown subido a output_url: identity, gzip o zstd. zstd (nivel ZSTD_OUTPUT_LEVEL, def 1) = transferencia server-to-server rapida con descompresion en streaming.

Tamano: sin limite de raw upload

A diferencia de /convert/raw, from-url no aplica el limite de upload crudo (RAW_UPLOAD_MAX_BYTES, 12 MB). La API descarga el documento desde tu storage hasta FETCH_MAX_BYTES (500 MB por defecto). Es la ruta correcta para PDFs grandes. Ver Raw vs storage URL.

Ejemplos

Si un parámetro llega por query y por body a la vez, gana el de query. Ver Parámetros.

Seguridad (anti-SSRF)

La URL se valida antes de descargarla y la validación se repite justo antes de conectar (anti DNS-rebinding):
  • Esquema: solo los de ALLOWED_FETCH_SCHEMES (https por defecto).
  • Hosts: si fijas ALLOWED_FETCH_HOSTS (allowlist de tus buckets), solo esos hosts se aceptan. Es la protección máxima y la recomendada en producción.
  • Puertos: solo los de ALLOWED_FETCH_PORTS (80,443 por defecto), para que una URL no pueda golpear servicios internos en puertos raros (Redis 6379, MySQL 3306, paneles 8080…).
  • Direcciones internas: se rechazan loopback, privadas, link-local y reservadas (http://localhost, 169.254.169.254, IPs privadas, [::1]…).
  • Credenciales en la URL: una URL con user:pass@host se rechaza.
  • Revalidación: con FETCH_REVALIDATE_BEFORE_CONNECT=true el host se vuelve a resolver y validar antes de cada conexión, cerrando la ventana TOCTOU.
Usa siempre URLs firmadas y de corta duración. Ver Seguridad.