Documentación API

Automatice las cargas y administre sus archivos mediante programación a través de una API REST JSON simple. Todas las solicitudes y respuestas son application/json. La URL base es:

https://api.fast2share.com

Inicia sesión para crear un token

Autenticación

Crea un token en tu panel debajo Configuración → Tokens API. Envíalo en cada solicitud en el Authorization encabezamiento. Los tokens se muestran una vez en el momento de la creación: guárdalos de forma segura. Cada token actúa en nombre de su cuenta y solo ve sus propios archivos.

Encabezamiento
Authorization: Bearer f2s_YOUR_TOKEN

Errores

Los errores utilizan códigos de estado HTTP estándar y devuelven un cuerpo JSON con un error mensaje. Códigos comunes: 401 (token faltante/no válido), 403 (límite de cuota o plan), 404 (archivo no encontrado), 409 (conflicto: por ejemplo, el archivo ya está en su cuenta, consulte POST /v1/uploads), 422 (cuerpo de solicitud incorrecto), 503 (no hay servidor de almacenamiento disponible).

{
  "error": "Invalid or revoked API token."
}

Puntos finales

CONSEGUIR /v1/usuario
Obtener usuario actual

Devuelve la cuenta del propietario del token, el plan activo y el uso de almacenamiento actual.

Pedido
curl https://api.fast2share.com/v1/user \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Respuesta
{
  "id": 42,
  "email": "[email protected]",
  "display_name": "You",
  "plan": {
    "name": "premium-monthly",
    "max_file_size": 5368709120,
    "storage_quota": 107374182400
  },
  "usage": {
    "used_bytes": 2147483648,
    "file_count": 12,
    "remaining_bytes": 105226698752
  }
}
CONSEGUIR /v1/archivos
Listar archivos

Enumera sus archivos completos, los más nuevos primero. Paginado por cursor: pasa lo devuelto next_before como ?before= para la siguiente página. Filtrar por nombre con ?q=.

Pedido
curl "https://api.fast2share.com/v1/files?before=0&q=report" \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Respuesta
{
  "data": [
    {
      "uuid": "3f1c…-…-…",
      "name": "report.pdf",
      "size": 184320,
      "mime": "application/pdf",
      "sha256": "9f86d0…",
      "status": "completed",
      "downloads": 3,
      "share_url": "https://…/f/3f1c…",
      "created_at": "2026-07-01T10:00:00+00:00",
      "expires_at": null
    }
  ],
  "next_before": 1057
}
CONSEGUIR /v1/carpetas
Listar carpetas

Cada carpeta de su cuenta, primero las carpetas de nivel superior. Utilice el id como el folder_id al mover o copiar un archivo.

Pedido
curl https://api.fast2share.com/v1/folders \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Respuesta
{
  "data": [
    { "id": 12, "name": "Invoices", "parent_id": null, "created_at": "2026-06-02T09:12:00+00:00" },
    { "id": 19, "name": "2026",     "parent_id": 12,   "created_at": "2026-06-02T09:13:00+00:00" }
  ]
}
CORREO /v1/carpetas
Crear una carpeta

Crea una carpeta. name es obligatorio y debe ser único en su cuenta (no distingue entre mayúsculas y minúsculas): se responde a un conflicto 409. Aprobar parent_id para anidarlo: las carpetas van solo un nivel de profundidad, y un padre tiene como máximo una subcarpeta, por lo que un padre que está anidado (o que ya tiene un hijo) responde 422.

Pedido
curl -X POST https://api.fast2share.com/v1/folders \
  -H "Authorization: Bearer f2s_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Invoices","parent_id":null}'
Respuesta
{
  "id": 12,
  "name": "Invoices",
  "parent_id": null,
  "created_at": "2026-07-31T08:20:00+00:00"
}
CORREO /v1/cargas
Crear una carga

Tutorial de carga: las cargas son dos pasos porque los bytes van directo al servidor de almacenamiento (a través del currículum tus protocolo); nunca pasan por esta API. Esta llamada valida su plan/cuota y devuelve un punto final tus más un firmado upload_token.

1. POST /v1/uploads con el nombre del archivo y el tamaño → devuelve upload_url, upload_token y uuid (este punto final).
2. Realice una carga tus a upload_url, agregando los metadatos token <upload_token>. Cualquier cliente tuyo funciona (p. ej. tus-js-client, tusc). Enviar los bytes en trozos (se recomiendan 8 MB): una sola solicitud tus que contenga el archivo completo se rechaza con 413 por la CDN de almacenamiento una vez que el cuerpo supera ~100 MB.
3. Encuesta GET /v1/files/{uuid}/status hasta que informe completed, luego use el devuelto share_url.

Omita la transferencia con deduplicación (opcional). Si ya están almacenados los mismos bytes, el archivo se puede crear instantáneamente; no se carga nada:
fingerprint = SHA-256 de los primeros 8 MB concatenados con los últimos 8 MB (se lee ≤16 MB; si el archivo es ≤8 MB es simplemente el SHA-256 de todo el archivo, y entre 8 y 16 MB los dos rangos lo cubren una vez, sin superponerse). Siempre envía esto cuando desea dedup, así es como la API sabe que realmente tiene el archivo, por lo que los bytes que pertenecen a otra cuenta nunca se comparten en una suma de verificación simple.
sha256 = archivo completo SHA-256, hexadecimal. Envíalo junto con la huella digital y la respuesta es inmediata: si tu cuenta ya tiene ese archivo no se crea nada y se obtiene 409 con {"status":"exists","uuid":…,"share_url":…} apuntando a su copia existente; Si otra cuenta posee los bytes, se comparten contigo al instante: {"status":"completed","deduped":true,"share_url":…} — hecho, no se ha subido nada.
• Para archivos grandes, haga un hash de forma perezosa: envíe solo el fingerprint. una respuesta de {"status":"need_hash"} significa que existe una posible coincidencia: haga un hash completo del archivo y llame POST /v1/uploads/{uuid}/confirm. Cualquier otra respuesta es un ticket normal; subir como de costumbre.
Omita ambos campos para cargar siempre.

Pedido
curl -X POST https://api.fast2share.com/v1/uploads \
  -H "Authorization: Bearer f2s_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"filename":"report.pdf","size":184320,"type":"application/pdf","fingerprint":"5b41e3…","sha256":"9f86d0…"}'
Respuesta
{
  "uuid": "3f1c…-…-…",
  "status": "pending",
  "upload_url": "https://storage1.example.com/files/",
  "upload_token": "eyJ1d….<sig>",
  "protocol": "tus",
  "metadata_key": "token"
}

// deduped instead — the bytes were already stored, nothing to upload:
{
  "uuid": "3f1c…-…-…",
  "status": "completed",
  "deduped": true,
  "size": 184320,
  "sha256": "9f86d0…",
  "share_url": "https://…/f/3f1c…"
}
⚠ Divide tu carga: se requiere para archivos de más de ~100 MB. el almacenamiento El servidor se encuentra detrás de una CDN que rechaza cualquier solicitud cuyo cuerpo exceda ~100 MB con 413 Request Entity Too Large. un tus PATCH que lleva el entero Por lo tanto, el archivo falla en archivos grandes. mantener cada trozo pequeño 8 MB es un buen valor predeterminado, lo que también hace que la carga reanudable después de una caída de la conexión.

Error común: tus-js-client por defecto es chunkSize: Infinity (una solicitud para todo el archivo), por lo que se cargan más de ~100 MB fracasar con 413. Tú debe establecer un explícito chunkSize:
import * as tus from "tus-js-client";

// upload_url + upload_token come from POST /v1/uploads
const upload = new tus.Upload(file, {
  endpoint:  upload_url,
  chunkSize: 8 * 1024 * 1024,      // 8 MB — REQUIRED, keep well under 100 MB
  metadata:  { token: upload_token },
  onError:   (err) => console.error(err),
  onSuccess: () => console.log("done — poll /v1/files/{uuid}/status"),
});
upload.start();
CORREO /v1/uploads/{uuid}/confirmar
Confirmar deduplicación

Segundo paso de la fingerprint flujo: llame a esto solo después POST /v1/uploads respondió {"status":"need_hash"}, con el archivo completo sha256. La huella digital y el tamaño son los que envió cuando se creó la carga; no se vuelven a leer en esta solicitud. Los mismos tres resultados que arriba: ya en tu cuenta → 409 exists (nada almacenado); propiedad de otro lugar → se completa de inmediato (deduped); de lo contrario, la huella digital simplemente colisiona y obtienes el resultado normal. upload_url / upload_token ticket: cárguelo como en el paso 2 anterior.

Pedido
curl -X POST https://api.fast2share.com/v1/uploads/3f1c…-…-…/confirm \
  -H "Authorization: Bearer f2s_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"sha256":"9f86d0…"}'
Respuesta
{
  "uuid": "3f1c…-…-…",
  "status": "completed",
  "deduped": true,
  "size": 184320,
  "sha256": "9f86d0…",
  "share_url": "https://…/f/3f1c…"
}
CONSEGUIR /v1/archivos/{uuid}
Obtener información del archivo

Devuelve metadatos de un único archivo de su propiedad.

Pedido
curl https://api.fast2share.com/v1/files/3f1c…-…-… \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Respuesta
{
  "uuid": "3f1c…-…-…",
  "name": "report.pdf",
  "size": 184320,
  "mime": "application/pdf",
  "sha256": "9f86d0…",
  "status": "completed",
  "downloads": 3,
  "share_url": "https://…/f/3f1c…",
  "created_at": "2026-07-01T10:00:00+00:00",
  "expires_at": null
}
CONSEGUIR /v1/archivos/{uuid}/estado
Verificar estado de carga

Sonda ligera para el estado de una carga: pending, completed o failed. Una vez completado, también devuelve el share_url.

Pedido
curl https://api.fast2share.com/v1/files/3f1c…-…-…/status \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Respuesta
{
  "uuid": "3f1c…-…-…",
  "status": "completed",
  "size": 184320,
  "share_url": "https://…/f/3f1c…"
}
CONSEGUIR /v1/archivos/{uuid}/descargar
Obtenga un enlace de descarga directa

Crea una URL de descarga directa lista para usar para un archivo de su propiedad. El enlace transmite los bytes inmediatamente con no se requiere sesión de navegador (úselo desde un script/curl) y caduca después de ~5 minutos. Requiere una suscripción Premium activa (siempre se permiten administradores).

Pedido
curl https://api.fast2share.com/v1/files/3f1c…-…-…/download \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Respuesta
{
  "uuid": "3f1c…-…-…",
  "name": "report.pdf",
  "size": 184320,
  "download_url": "https://…/d/9xA2…",
  "expires_in": 300
}
CORREO /v1/archivos/{uuid}/renombrar
Cambiar el nombre de un archivo

Cambia el nombre para mostrar de un archivo de su propiedad. El enlace para compartir (uuid) no cambia, por lo que los enlaces que ya entregó siguen funcionando; solo cambia el nombre que se muestra en la página para compartir y se envía con la descarga. Se eliminan los separadores de ruta y los caracteres de control; el nombre tiene un límite de 512 caracteres.

Pedido
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/rename \
  -H "Authorization: Bearer f2s_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"invoice-july.pdf"}'
Respuesta
{
  "uuid": "3f1c…-…-…",
  "name": "invoice-july.pdf",
  "size": 184320,
  "status": "completed",
  "share_url": "https://…/f/3f1c…"
}
CORREO /v1/archivos/{uuid}/mover
Mover un archivo

Archiva un archivo de su propiedad en una de sus carpetas. Enviar {"folder_id": 0} (u omitirlo) para moverlo de regreso a la raíz. La carpeta debe ser tuya, de lo contrario 404.

Pedido
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/move \
  -H "Authorization: Bearer f2s_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"folder_id":12}'
Respuesta
{
  "uuid": "3f1c…-…-…",
  "name": "invoice-july.pdf",
  "status": "completed",
  "share_url": "https://…/f/3f1c…",
  "folder_id": 12
}
CORREO /v1/archivos/{uuid}/copiar
Copiar un archivo compartido

pone un archivo algún otro compartido con usted en su propia cuenta, con su propio enlace para compartir, aquí {uuid} es el fuente slug compartido de archivos, no uno tuyo. No se transfiere ningún byte: la copia apunta al mismo objeto almacenado, por lo que se completa instantáneamente y cuenta para su cuota de almacenamiento como cualquier otro archivo.

La fuente debe ser pública, estar terminada y su propietario debe permitir la copia; de lo contrario, obtendrá 403. 409 significa que ya es su archivo (o ya está en su cuenta), y 403 también cubre "no queda suficiente almacenamiento". Campos de cuerpo opcionales: folder_id, is_public (verdadero por defecto) y free_download (falso por defecto).

Pedido
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/copy \
  -H "Authorization: Bearer f2s_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"folder_id":12,"is_public":true}'
Respuesta
{
  "uuid": "8b2e…-…-…",
  "name": "report.pdf",
  "size": 184320,
  "status": "completed",
  "share_url": "https://…/f/8b2e…",
  "copied": true
}
CORREO /v1/archivos/{uuid}/eliminar
Eliminar un archivo

Elimina temporalmente un archivo de su propiedad; deja de poder descargarse inmediatamente y sus bytes se recuperan poco después.

Pedido
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/delete \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Respuesta
{ "ok": true, "uuid": "3f1c…-…-…" }