REST API

Construye con FlingDrop

Sube archivos y genera enlaces para compartir desde cualquier aplicación. Autentícate con una sola API key, sube en una solicitud o por partes, y deja que FlingDrop se encargue de la expiración y la entrega.

Inicio rápido

  1. 1

    Crea una cuenta gratis

    Regístrate en app.flingdrop.com — toma 30 segundos.

  2. 2

    Obtén tu API Key

    Tu API Key se envía por email al registrarte. También puedes generar nuevas keys desde tu dashboard en Configuración > API Keys.

  3. 3

    Sube tu primer archivo

    Usa el comando cURL a continuación para subir un archivo y obtener un enlace para compartir.

    curl -X POST https://app.flingdrop.com/api/upload \
      -H "X-API-Key: YOUR_API_KEY" \
      -F "file=@document.pdf"

URL base y autenticación

Todas las solicitudes API van a:

https://app.flingdrop.com

Autentifica cada solicitud incluyendo tu API Key en el header X-API-Key:

X-API-Key: your_api_key_here

Tu API Key se envía por email al registrarte. También puedes crear nuevas keys desde tu dashboard.

Formato de respuesta

Todos los endpoints devuelven JSON con una estructura consistente:

Respuesta exitosa

{
  "success": true,
  "data": { ... }
}

Respuesta de error

{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "..."
  }
}

Subir un archivo

POST /api/upload

Sube un archivo único usando multipart form data. El servidor detecta automáticamente duplicados por hash del archivo — si el mismo archivo ya fue subido y no ha expirado, se retorna la URL existente sin almacenar una segunda copia.

Headers

HeaderDescription
X-API-KeyRequeridoTu API Key
X-Content-EncodingOpcionalEstablecer a zstd si el archivo está comprimido con zstd
X-Original-SizeOpcionalTamaño original en bytes (requerido cuando se usa zstd)
X-File-HashOpcionalHash SHA-256 del archivo original (evita el recálculo en el servidor)

Body

multipart/form-data con un campo llamado file.

Respuesta

{
  "success": true,
  "data": {
    "url": "https://app.flingdrop.com/f/abc123xyz",
    "shortCode": "abc123xyz",
    "fileName": "document.pdf",
    "fileSize": 2048576,
    "expiresAt": "2026-04-01T00:00:00Z",
    "isDuplicate": false
  }
}

Cuando isDuplicate es true, no se almacenó un archivo nuevo — se retorna el enlace de descarga existente.

Upload por partes (chunked)

Para archivos grandes, usa upload chunked para dividir la transferencia en múltiples solicitudes. Esto evita timeouts y permite tracking de progreso.

Paso 1 — Inicializar sesión

POST /api/upload/init

Envía los metadatos del archivo para iniciar una sesión. Si se detecta un duplicado por hash, se retorna la URL existente inmediatamente y no es necesario subir.

Body JSON

{
  "fileName": "large-video.mp4",
  "totalSize": 524288000,
  "fileHash": "A1B2C3...",
  "isCompressed": false,
  "originalSize": 524288000
}

Respuesta

{
  "success": true,
  "data": {
    "sessionId": "550e8400-e29b-41d4-a716-446655440000",
    "isDuplicate": false
  }
}

Paso 2 — Subir chunks

PATCH /api/upload/{sessionId}?index={n}

Envía los bytes crudos de cada chunk en el body de la solicitud (no multipart). Máximo 50 MB por chunk. El parámetro index empieza en cero.

Respuesta

{
  "success": true,
  "data": {
    "bytesReceived": 10485760,
    "chunksReceived": 1
  }
}

Paso 3 — Completar upload

POST /api/upload/{sessionId}/complete

Reensambla los chunks, almacena el archivo final y crea el registro en la base de datos. Retorna la misma estructura de respuesta que el endpoint de upload simple.

Cancelar upload

DELETE /api/upload/{sessionId}

Cancela una sesión en progreso y limpia los archivos temporales.

Verificar duplicado

GET /api/check/{hash}

Verifica si un archivo con el hash SHA-256 dado ya existe en tu tenant. Útil para evitar subir un archivo que ya está disponible.

Respuesta

{
  "success": true,
  "data": {
    "exists": true,
    "url": "https://app.flingdrop.com/f/abc123xyz",
    "expiresAt": "2026-04-01T00:00:00Z"
  }
}

Cuando exists es false, url y expiresAt son null.

URLs de descarga

Cada archivo subido obtiene una URL corta con el formato:

https://app.flingdrop.com/f/{shortCode}

Estas URLs son públicas — no se necesita autenticación para descargar. Cualquiera con el enlace puede descargar el archivo hasta que expire.

La expiración depende del plan del tenant: 7 días (Free), 30 días (Pro) o 90 días (Business). Después de la expiración, el archivo se elimina permanentemente.

Health check

GET /api/status

Verifica que la API está operativa. No requiere autenticación.

{
  "success": true,
  "data": {
    "status": "OK",
    "serverTime": "2026-03-23T12:00:00Z"
  }
}

Invitaciones de equipo

Solo plan Business

Los tenants del plan Business pueden invitar miembros de equipo vía la API. Las invitaciones se envían por email y expiran después de 7 días.

Crear invitación

POST /api/invitation

Body JSON

{
  "email": "colleague@company.com",
  "role": "Member",
  "tenantId": "550e8400-e29b-41d4-a716-446655440000"
}

Respuesta

{
  "success": true,
  "token": "...",
  "invitationUrl": "https://app.flingdrop.com/invitation/...",
  "message": "Invitation created successfully"
}

Roles válidos: Owner, Admin, Member, ReadOnly.

Obtener info de invitación

GET /api/invitation/{token}

Obtiene los detalles de una invitación pendiente. No requiere autenticación.

{
  "success": true,
  "tenantName": "Acme Corp",
  "email": "colleague@company.com",
  "role": "Member",
  "expiresAt": "2026-03-30T00:00:00Z"
}

Aceptar invitación

POST /api/invitation/{token}/accept

Body JSON

{
  "password": "securepassword123",
  "name": "Jane Doe"
}

Si el email ya tiene una cuenta, solo se crea la membresía. Para usuarios nuevos, password (mín. 8 caracteres) es requerido.

Códigos de error

Todas las respuestas de error incluyen un campo code legible por máquina:

CódigoHTTP StatusDescripción
INVALID_API_KEY401API key faltante, inválida o inactiva
TENANT_INACTIVE401Cuenta del tenant desactivada
INVALID_FILE400 / 413 / 429Validación de archivo fallida (vacío, muy grande o límite alcanzado)
FILE_TOO_LARGE413El archivo excede el límite de tamaño del plan
STORAGE_LIMIT_EXCEEDED429Límite mensual de almacenamiento excedido
HASH_MISMATCH400Verificación de hash del archivo fallida
INTERNAL_ERROR500Error del servidor

Límites de tasa

Los endpoints de upload tienen límites de tasa. Cuando excedes el límite, recibes una respuesta HTTP 429 Too Many Requests con un header Retry-After indicando cuántos segundos esperar.

Implementa backoff exponencial en tu cliente para manejar los límites de tasa de manera elegante.

Límites por plan

Cada plan tiene límites específicos que la API aplica automáticamente:

LímiteFreePro ($7/mes)Business ($29/mes)
Tamaño máx. archivo100 MB2 GB10 GB
Uploads por día5100Ilimitado
Expiración del enlace7 days30 days90 days
Transferencia mensualSin límiteSin límite500 GB
Miembros de equipo1125
Invitaciones por APINoNo

Ejemplos de código

# Subir un archivo
curl -X POST https://app.flingdrop.com/api/upload \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "file=@/path/to/document.pdf"

¿Listo para compartir?

Únete a miles de usuarios que ya confían en FlingDrop para compartir sus archivos de forma rápida y segura.