Entra un PDF.
Sale Markdown limpio.
Una llamada REST — o un servidor MCP nativo que tu agente IA puede usar directamente. Markdown, elementos estructurados y chunks listos para embeddings con trazabilidad a la fuente.
Plan gratis · sin tarjeta · prueba anónima sin clave
REST en una llamada
Envía la URL de un PDF por POST y recibe el ExtractedDocument canónico, de forma síncrona. Los Doc Links también tienen endpoints REST (/api/v1/links): cada herramienta muestra abajo su espejo REST. Especificación OpenAPI (JSON)
curl -X POST https://doc.page/api/v1/extract \
-H "Content-Type: application/json" \
-H "Authorization: Bearer dk_live_..." \
-d '{
"url": "https://example.com/report.pdf",
"outputs": ["markdown", "elements", "chunks"]
}' {
"schemaVersion": "1.0",
"source": { "engine": "server-pdfjs", "pages": 12 },
"markdown": "# Title\n...",
"elements": [{ "id": "el_0001", "type": "heading", "page": 1, "text": "Title" }],
"chunks": [{ "id": "ch_0001", "text": "...", "tokens": 486, "page": 1,
"section": "Introduction", "elementIds": ["el_0002"] }]
} Servidor MCP nativo
Apunta tu agente al endpoint y podrá leer PDFs por sí mismo. Funciona con Claude Code, Claude Desktop, Cursor y cualquier cliente MCP.
claude mcp add --transport http docpage https://doc.page/api/mcp {
"mcpServers": {
"docpage": {
"type": "http",
"url": "https://doc.page/api/mcp",
"headers": { "Authorization": "Bearer dk_live_..." }
}
}
} Herramientas
-
extract_pdf— Extracción completa: Markdown + elementos estructurados, chunks opcionales. El modo "hybrid" añade tablas reconstruidas y bounding boxes. REST: POST /api/v1/extract -
get_chunks— Chunks semánticos al tamaño de tokens que pidas, cada uno con página, sección y los ids de los elementos de origen. -
list_tables— Todas las tablas del PDF como filas y columnas estructuradas, cada una con página y bounding box para citas verificables. -
create_doc_linkAPI key — Publica un PDF como enlace doc.page con seguimiento (expiración, aviso de apertura). El enlace aparece en tu biblioteca como cualquier Doc Link. REST: POST /api/v1/links -
list_doc_linksAPI key — Lista los Doc Links de la cuenta con su estado y visitas totales: así un agente recupera los enlaces que creó en sesiones anteriores. REST: GET /api/v1/links -
get_doc_link_statsAPI key — Analítica de lectura de un enlace: visitas, emails capturados, países, empresas del visitante y tiempo de lectura por página. REST: GET /api/v1/links/:id -
revoke_doc_linkAPI key — Desactiva un enlace para que deje de servirse. El documento y sus stats siguen en la biblioteca; libera hueco del plan gratis. REST: DELETE /api/v1/links/:id -
classify_documentpróximamente — Enruta documentos sin extracción completa: tipo (factura, contrato, CV…), idioma, texto nativo vs. escaneado, necesidad de OCR.
Qué recibes
Toda respuesta es el mismo objeto canónico, sea cual sea el motor:
-
markdownel documento completo en Markdown limpio
-
elements[]bloques en orden de lectura con tipo y página (heading, paragraph, list…)
-
chunks[]piezas de texto listas para embeddings con estimación de tokens, sección e ids trazables
-
confidencela autoevaluación honesta del motor: confianza baja en tablas significa que conviene el modo hybrid
Dos motores, un esquema: el motor por defecto ("fast") está centrado en prosa (sin tablas ni bbox); "hybrid" ejecuta un motor semántico más pesado que reconstruye tablas y bounding boxes. Si hybrid no está disponible temporalmente, la respuesta cae a fast con un warning explícito.
Hecho para documentos reales
Donde brilla
- Informes de negocio y estados financieros con tablas regladas
- Facturas, albaranes y pedidos: las líneas salen como filas estructuradas
- Contratos, pólizas y prosa legal con jerarquía de encabezados limpia
- Manuales y documentación técnica, directos a pipelines RAG
- Libros, artículos y prosa larga para resúmenes o audio
Donde conviene cautela
- Tablas académicas sin bordes y con notación matemática pueden salir como texto, no como filas estructuradas: el contenido nunca se pierde, pero revisa confidence.tables
- Tablas densas con celdas multi-fila fusionadas pueden perder algo de alineación
- PDFs escaneados (sin capa de texto) aún no: el OCR está en el roadmap
Límites y planes
| Sin clave | Clave gratis | Premium | |
|---|---|---|---|
| Páginas / mes | — | 500 | 10.000 |
| Peticiones / minuto | — | 10 | 60 |
| Extracciones / día | 25 por IP | según cuota | según cuota |
| Tamaño máx. de PDF | 25 MB | 25 MB | 25 MB |
Crea y gestiona claves en los ajustes de tu cuenta (pestaña "Claves API"). Cada página del PDF procesado cuenta como una página.
Premium
4,99 $ al mes
10.000 páginas cada mes — más todo lo que Premium desbloquea en Doc Links.
Hazte Premium — 4,99 $/mesPacks de créditos
$5 / $30
Pago único. Los créditos no caducan y se usan cuando se agota tu cuota mensual.
Errores
-
401clave desconocida o revocada -
429rate limit alcanzado: reintenta pasados los segundos indicados -
402cuota mensual de páginas agotada
Preguntas frecuentes
¿Guardáis los PDFs que envío?
No. El documento se descarga, se procesa en memoria y se descarta. Solo se guardan contadores agregados de uso (páginas, peticiones) para la medición.
¿De verdad hay un plan gratis?
Sí, dos: sin clave tienes un pequeño cupo diario por IP para probar, y una clave API gratuita te da 500 páginas al mes.
¿Funciona con PDFs escaneados (OCR)?
Todavía no. El motor actual extrae la capa de texto de PDFs digitales. El OCR está previsto como parte del modo híbrido.
¿Reconstruye tablas?
Sí: usa el modo "hybrid" o la herramienta list_tables. Un motor semántico más pesado reconstruye cada tabla como filas y columnas estructuradas, con su página y bounding box para citar la fuente exacta. El motor "fast" por defecto sigue siendo solo prosa.
¿Por qué un servidor MCP?
Para que los agentes IA usen doc.page sin código de integración: conectas el endpoint una vez y el agente extrae PDFs o pide chunks RAG en lenguaje natural.