Tu primer análisis
Prueba el análisis de un PDF sin cuenta. Añade un token para usar los límites de tu cuenta y guardar los resultados.
/api/v1/pdf/analyzecurl -X POST https://pdfcheck.online/api/v1/pdf/analyze \
-H "Accept: application/json" \
-F "file=@document.pdf"
No se pudo copiar. Selecciona el código y cópialo manualmente.
- Autenticación
- Opcional
- Límite de subida
- 50 MB
- URL base
- https://pdfcheck.online/api/v1
Autenticación
El token es opcional para analizar un PDF. Los datos de la cuenta, los análisis guardados y la gestión de tokens requieren un token Bearer.
Mantén los tokens en secreto. Usa una variable de entorno y revoca los tokens sin usar desde tu cuenta. Administrar tokens API
curl -X POST https://pdfcheck.online/api/v1/pdf/analyze \
-H "Accept: application/json" \
-H "Authorization: Bearer $PDFCHECK_API_TOKEN" \
-F "file=@document.pdf"
No se pudo copiar. Selecciona el código y cópialo manualmente.
Uso y límites
Sin cuenta: 10 análisis al día por dirección IP. Free: 100 al día. Pro y AI: sin límite diario. Los endpoints de procesamiento también tienen un límite de 30 solicitudes por minuto. Las respuestas de análisis incluyen las comprobaciones restantes.
| Acceso | Análisis diarios | Límite de subida |
|---|---|---|
| No requiere token | 10 | 50 MB |
| Free | 100 | 50 MB |
| Pro / AI | Sin límite diario | 100 MB |
Los endpoints de procesamiento también aceptan hasta 30 solicitudes por minuto. Una respuesta 429 puede indicar un límite diario o por minuto.
POST/pdf/analyze
Subir y analizar un archivo PDF. Devuelve metadatos detallados extraídos del PDF.
| Nombre | Tipo | Descripción |
|---|---|---|
file | multipart/form-data | Obligatorio. PDF para analizar: hasta 50 MB sin cuenta y con Free; 100 MB con Pro y AI. |
Respuesta de ejemplo; los valores dependen del documento.
{
"success": true,
"data": {
"id": "example-analysis-token",
"view_key": "example-view-key",
"filename": "document.pdf",
"file_size": 1048576,
"file_size_formatted": "1.00 MB",
"metadata": {
"basic": {
"pages": 10,
"pdf_version": "1.7",
"analysis_mode": "lightweight",
"partial_analysis": true
},
"document": {
"title": "Example document",
"author": "Example author",
"creator": "Microsoft Word",
"producer": "Adobe PDF Library"
}
},
"analyzed_at": "2026-09-29T12:00:00+00:00"
},
"remaining_checks": 9
}
No se pudo copiar. Selecciona el código y cópialo manualmente.
El análisis de metadatos de la API usa un modo ligero y limitado. Se omite el análisis detallado de fuentes, imágenes y colores; metadata.basic.partial_analysis es true.
Los metadatos y los indicadores de software no demuestran la autoría, la autenticidad ni el cumplimiento de estándares.
Los datos del archivo subido se eliminan después del procesamiento; los resultados del análisis y los metadatos pueden conservarse. Consulta la política de privacidad. Política de privacidad
GET/user
Obtener información del usuario autenticado incluyendo límites de uso diario.
Token obligatorio. Respuesta de ejemplo; los valores dependen del documento.
{
"success": true,
"data": {
"name": "Example user",
"email": "user@example.com",
"daily_limit": 100,
"remaining_checks": 99,
"checks_used_today": 1
}
}
No se pudo copiar. Selecciona el código y cópialo manualmente.
GET/pdf
Listar todos los análisis PDF del usuario autenticado con paginación.
Token obligatorio
| Parámetros de consulta | Predeterminado | Descripción |
|---|---|---|
per_page | 20 | Número de resultados por página (1-100) |
page | 1 | integer |
{
"success": true,
"data": [
{
"id": "example-analysis-token",
"filename": "document.pdf",
"file_size": 1048576,
"file_size_formatted": "1.00 MB",
"analyzed_at": "2026-09-29T12:00:00+00:00"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 1
}
}
No se pudo copiar. Selecciona el código y cópialo manualmente.
GET/pdf/{token}
Obtener resultados detallados del análisis por ID de análisis (token de compartir).
Token obligatorio
curl https://pdfcheck.online/api/v1/pdf/example-analysis-token \
-H "Accept: application/json" \
-H "Authorization: Bearer $PDFCHECK_API_TOKEN"
No se pudo copiar. Selecciona el código y cópialo manualmente.
Referencia de endpoints
POST/pdf/extract-text
Extrae texto de un PDF. Envía el archivo en el campo pdf; este endpoint tiene un límite de subida de 50 MB y devuelve data.pages.
curl -X POST https://pdfcheck.online/api/v1/pdf/extract-text \
-H "Accept: application/json" \
-F "pdf=@document.pdf"
No se pudo copiar. Selecciona el código y cópialo manualmente.
POST/pdf/to-markdown
Convierte un PDF a Markdown. Envía el archivo en el campo pdf (límite de 50 MB). Cuota independiente: 10 conversiones al día sin cuenta y con Free; 100 al día con Pro y AI. Las páginas escaneadas pueden usar OCR de AI externo. La respuesta incluye remaining_conversions.
curl -X POST https://pdfcheck.online/api/v1/pdf/to-markdown \
-H "Accept: application/json" \
-F "pdf=@document.pdf"
No se pudo copiar. Selecciona el código y cópialo manualmente.
Gestión de tokens
Para crear tokens mediante la API necesitas un token existente. Crea tu primer token desde tu cuenta. Administrar tokens API
| Endpoints | Descripción |
|---|---|
GET /tokens | Listar todos los tokens API del usuario autenticado. |
POST /tokens | Crear un nuevo token API. El token solo se muestra una vez en la respuesta. name: string (max: 255) |
DELETE /tokens/{tokenId} | Revocar (eliminar) un token API permanentemente. |
curl -X POST https://pdfcheck.online/api/v1/tokens \
-H "Accept: application/json" \
-H "Authorization: Bearer $PDFCHECK_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"My integration"}'
No se pudo copiar. Selecciona el código y cópialo manualmente.
Códigos de error
| Código HTTP | Código de error | Descripción |
|---|---|---|
| 401 | Unauthenticated. | Token de API no válido o ausente |
| 404 | not_found | Recurso no encontrado o acceso denegado |
| 422 | message / errorscorrupted_pdfpassword_protectedanalysis_failed | Solicitud no válida o fallo al procesar el PDF, incluido un archivo no compatible, una subida demasiado grande, un PDF dañado o protección con contraseña |
| 429 | daily_limit_exceededmessage | Límite diario o por minuto superado; vuelve a intentarlo cuando se restablezca el límite correspondiente |
Ejemplos de código
Lee el resultado en data.metadata.basic.pages. Todos los fragmentos de respuesta son ilustrativos.
Node.js 20 o posterior; utiliza fetch, FormData y Blob nativos.
import { readFile } from 'node:fs/promises';
const form = new FormData();
form.append('file', new Blob([await readFile('document.pdf')], {
type: 'application/pdf'
}), 'document.pdf');
const headers = { Accept: 'application/json' };
if (process.env.PDFCHECK_API_TOKEN) {
headers.Authorization = `Bearer ${process.env.PDFCHECK_API_TOKEN}`;
}
const response = await fetch('https://pdfcheck.online/api/v1/pdf/analyze', {
method: 'POST', headers, body: form
});
const result = await response.json();
if (!response.ok || !result.success) throw new Error(JSON.stringify(result));
console.log(result.data.metadata.basic.pages);
console.log(result.remaining_checks);
No se pudo copiar. Selecciona el código y cópialo manualmente.
Python (requests)
import os
import requests
headers = {'Accept': 'application/json'}
if os.getenv('PDFCHECK_API_TOKEN'):
headers['Authorization'] = f"Bearer {os.environ['PDFCHECK_API_TOKEN']}"
with open('document.pdf', 'rb') as pdf:
response = requests.post(
'https://pdfcheck.online/api/v1/pdf/analyze',
headers=headers,
files={'file': ('document.pdf', pdf, 'application/pdf')},
timeout=120,
)
response.raise_for_status()
result = response.json()
print(result['data']['metadata']['basic']['pages'])
print(result['remaining_checks'])
No se pudo copiar. Selecciona el código y cópialo manualmente.
PHP (cURL)
<?php
$headers = ['Accept: application/json'];
if ($token = getenv('PDFCHECK_API_TOKEN')) {
$headers[] = 'Authorization: Bearer ' . $token;
}
$curl = curl_init('https://pdfcheck.online/api/v1/pdf/analyze');
curl_setopt_array($curl, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => ['file' => new CURLFile('document.pdf', 'application/pdf')],
]);
$body = curl_exec($curl);
if ($body === false) throw new RuntimeException(curl_error($curl));
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
$result = json_decode($body, true, flags: JSON_THROW_ON_ERROR);
if ($status >= 400 || !($result['success'] ?? false)) {
throw new RuntimeException($body);
}
echo $result['data']['metadata']['basic']['pages'];
No se pudo copiar. Selecciona el código y cópialo manualmente.