Resumen de API
Genera enlaces de vista previa de archivos seguros programáticamente con una API REST simple.
Inicio Rápido
PreviewFile.dev proporciona una API REST simple para generar enlaces de vista previa desde URLs. Crea enlaces de vista previa seguros y con tiempo limitado con solo una llamada API.
110+ Formatos de Archivo Soportados: Vista previa de PDFs, documentos de Office, imágenes, videos, archivos de código y más. Ver Formatos Soportados para la lista completa.
POST /api/u
Crear enlaces de vista previa desde URLs:
curl -X POST https://previewfile.dev/api/u \
-H "Content-Type: application/json" \
-H "x-api-key: $API_KEY" \
-d '{
"url": "https://example.com/document.pdf",
"ttlMinutes": 120,
"watermark": "Confidential",
"noDownload": true,
"oneTime": false
}'Respuesta:
{
"success": true,
"data": {
"shortUrl": "a1b2c3d4",
"previewUrl": "https://previewfile.dev/p/a1b2c3d4",
"expireAt": "2025-10-02T15:30:00Z",
"status": "READY",
"ttlMinutes": 120,
"watermark": "Confidential",
"noDownload": true,
"oneTime": false
}
}La API genera automáticamente enlaces cortos con nanoid(8) para seguridad y legibilidad.
Referencia de API
Autenticación
Incluye tu clave API en el header x-api-key:
x-api-key: YOUR_API_KEYStable OpenAPI (/api/v1)
For long-term integration, prefer the versioned API surface:
- OpenAPI schema:
GET /api/v1/openapi.json - Upload file (multipart):
POST /api/v1/upload - Get preview metadata:
GET /api/v1/previews/{shortUrl} - Get file access URL (direct or S3 presigned):
GET /api/v1/previews/{shortUrl}/file-url
Upload example
curl -X POST https://previewfile.dev/api/v1/upload \
-H "x-api-key: $API_KEY" \
-F "file=@./document.pdf" \
-F "ttlMinutes=60" \
-F "watermark=Confidential" \
-F "noDownload=true" \
-F "oneTime=false"Fetch file access URL
curl -X GET https://previewfile.dev/api/v1/previews/a1b2c3d4/file-url \
-H "x-api-key: $API_KEY"Parámetros de Solicitud
| Campo | Tipo | Requerido | Por Defecto | Descripción |
|---|---|---|---|---|
url | string | Sí | - | URL original para vista previa |
ttlMinutes | number | No | 60 | Validez del enlace en minutos (5-1440) |
watermark | string | No | null | Texto de marca de agua (máx. 120 caracteres) |
noDownload | boolean | No | false | Deshabilitar funcionalidad de descarga |
oneTime | boolean | No | false | Expirar después de la primera vista |
Respuesta
Respuesta Exitosa (200):
{
"success": true,
"data": {
"shortUrl": "a1b2c3d4",
"previewUrl": "https://previewfile.dev/p/a1b2c3d4",
"expireAt": "2025-10-02T15:30:00Z",
"status": "READY",
"ttlMinutes": 120,
"watermark": "Confidential",
"noDownload": true,
"oneTime": false
}
}Campos de Respuesta:
| Campo | Tipo | Descripción |
|---|---|---|
shortUrl | string | Identificador de URL corta de 8 caracteres |
previewUrl | string | URL de vista previa completa para compartir |
expireAt | string | Marca de tiempo de expiración ISO 8601 |
status | string | Estado de vista previa: READY, PENDING o EXPIRED |
ttlMinutes | number | Duración de validez del enlace |
watermark | string | null | Texto de marca de agua si está configurado |
noDownload | boolean | Estado de restricción de descarga |
oneTime | boolean | Restricción de acceso único |
Respuesta de Error (4xx/5xx):
{
"success": false,
"error": "Mensaje de error"
}Ejemplos de Uso
cURL
curl -X POST https://previewfile.dev/api/u \
-H "Content-Type: application/json" \
-H "x-api-key: $API_KEY" \
-d '{
"url": "https://example.com/document.pdf",
"ttlMinutes": 120,
"watermark": "Confidential",
"noDownload": true,
"oneTime": false
}'Node.js (Fetch)
const response = await fetch('https://previewfile.dev/api/u', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY'
},
body: JSON.stringify({
url: 'https://example.com/document.pdf',
ttlMinutes: 120,
watermark: 'Confidential',
noDownload: true,
oneTime: false
})
});
const data = await response.json();
console.log(data.data.previewUrl);Python (Requests)
import requests
response = requests.post(
'https://previewfile.dev/api/u',
headers={
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY'
},
json={
'url': 'https://example.com/document.pdf',
'ttlMinutes': 120,
'watermark': 'Confidential',
'noDownload': True,
'oneTime': False
}
)
data = response.json()
print(data['data']['previewUrl'])Características
- 110+ Formatos de Archivo: Vista previa nativa del navegador para PDFs, documentos de Office, imágenes, videos, código y más (ver lista completa)
- URLs Cortas: Identificadores de 8 caracteres generados automáticamente con nanoid para seguridad
- Tiempo Limitado: Establecer expiración de 5 minutos a 24 horas
- Marcas de Agua: Agregar overlays de texto personalizados a las vistas previas
- Control de Descarga: Deshabilitar opcionalmente las descargas de archivos
- Enlaces de Un Solo Uso: Hacer que los enlaces expiren después del primer acceso
- URL Original Oculta: Los destinatarios nunca ven la URL original del archivo