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
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.
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
Devuelve la cuenta del propietario del token, el plan activo y el uso de almacenamiento actual.
curl https://api.fast2share.com/v1/user \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"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
}
}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=.
curl "https://api.fast2share.com/v1/files?before=0&q=report" \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"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
}Encuentra sus archivos por nombre. ?q= es obligatorio y coincide con cualquier parte del nombre del archivo, sin distinguir entre mayúsculas y minúsculas. Misma paginación del cursor que el listado (?before=), y la búsqueda abarca todas las carpetas a menos que la alcance con ?folder_id= (0 = archivos ubicados en la raíz).
curl "https://api.fast2share.com/v1/files/search?q=invoice" \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"query": "invoice",
"data": [
{
"uuid": "3f1c…-…-…",
"name": "invoice-2026-07.pdf",
"size": 184320,
"mime": "application/pdf",
"status": "completed",
"share_url": "https://…/f/3f1c…",
"created_at": "2026-07-01T10:00:00+00:00"
}
],
"next_before": null
}Cada carpeta de su cuenta, primero las carpetas de nivel superior. Utilice el id como el folder_id al mover o copiar un archivo.
curl https://api.fast2share.com/v1/folders \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"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" }
]
}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.
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}'{
"id": 12,
"name": "Invoices",
"parent_id": null,
"created_at": "2026-07-31T08:20:00+00:00"
}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.
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…"}'{
"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…"
}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();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.
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…"}'{
"uuid": "3f1c…-…-…",
"status": "completed",
"deduped": true,
"size": 184320,
"sha256": "9f86d0…",
"share_url": "https://…/f/3f1c…"
}Devuelve metadatos de un único archivo de su propiedad.
curl https://api.fast2share.com/v1/files/3f1c…-…-… \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"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
}Sonda ligera para el estado de una carga: pending, completed o failed. Una vez completado, también devuelve el share_url.
curl https://api.fast2share.com/v1/files/3f1c…-…-…/status \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"uuid": "3f1c…-…-…",
"status": "completed",
"size": 184320,
"share_url": "https://…/f/3f1c…"
}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).
curl https://api.fast2share.com/v1/files/3f1c…-…-…/download \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{
"uuid": "3f1c…-…-…",
"name": "report.pdf",
"size": 184320,
"download_url": "https://…/d/9xA2…",
"expires_in": 300
}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.
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"}'{
"uuid": "3f1c…-…-…",
"name": "invoice-july.pdf",
"size": 184320,
"status": "completed",
"share_url": "https://…/f/3f1c…"
}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.
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}'{
"uuid": "3f1c…-…-…",
"name": "invoice-july.pdf",
"status": "completed",
"share_url": "https://…/f/3f1c…",
"folder_id": 12
}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).
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}'{
"uuid": "8b2e…-…-…",
"name": "report.pdf",
"size": 184320,
"status": "completed",
"share_url": "https://…/f/8b2e…",
"copied": true
}Elimina temporalmente un archivo de su propiedad; deja de poder descargarse inmediatamente y sus bytes se recuperan poco después.
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/delete \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{ "ok": true, "uuid": "3f1c…-…-…" }