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(httpspor 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,443por 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@hostse rechaza. - Revalidación: con
FETCH_REVALIDATE_BEFORE_CONNECT=trueel host se vuelve a resolver y validar antes de cada conexión, cerrando la ventana TOCTOU.
