Visão Geral da API
Gere links de visualização de arquivos seguros programaticamente com uma API REST simples.
Início Rápido
PreviewFile.dev fornece uma API REST simples para gerar links de visualização a partir de URLs. Crie links de visualização seguros e com tempo limitado com apenas uma chamada de API.
110+ Formatos de Arquivo Suportados: Visualização de PDFs, documentos Office, imagens, vídeos, arquivos de código e mais. Veja Formatos Suportados para a lista completa.
POST /api/u
Criar links de visualização a partir de 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
}'Resposta:
{
"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
}
}A API gera automaticamente links curtos com nanoid(8) para segurança e legibilidade.
Referência da API
Autenticação
Inclua sua chave API no cabeçalho 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 Solicitação
| Campo | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
url | string | Sim | - | URL original para visualização |
ttlMinutes | number | Não | 60 | Validade do link em minutos (5-1440) |
watermark | string | Não | null | Texto da marca d'água (máx. 120 caracteres) |
noDownload | boolean | Não | false | Desabilitar funcionalidade de download |
oneTime | boolean | Não | false | Expirar após primeira visualização |
Resposta
Resposta de Sucesso (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 Resposta:
| Campo | Tipo | Descrição |
|---|---|---|
shortUrl | string | Identificador de URL curta de 8 caracteres |
previewUrl | string | URL de visualização completa para compartilhar |
expireAt | string | Timestamp de expiração ISO 8601 |
status | string | Status de visualização: READY, PENDING ou EXPIRED |
ttlMinutes | number | Duração de validade do link |
watermark | string | null | Texto da marca d'água se configurado |
noDownload | boolean | Status de restrição de download |
oneTime | boolean | Restrição de acesso único |
Resposta de Erro (4xx/5xx):
{
"success": false,
"error": "Mensagem de erro"
}Exemplos 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'])Recursos
- 110+ Formatos de Arquivo: Visualização nativa do navegador para PDFs, documentos Office, imagens, vídeos, código e mais (ver lista completa)
- URLs Curtas: Identificadores de 8 caracteres gerados automaticamente com nanoid para segurança
- Tempo Limitado: Definir expiração de 5 minutos a 24 horas
- Marcas d'Água: Adicionar overlays de texto personalizados às visualizações
- Controle de Download: Desabilitar opcionalmente downloads de arquivos
- Links de Uso Único: Fazer links expirarem após primeiro acesso
- URL Original Ocultada: Destinatários nunca veem a URL original do arquivo