Documentation API

Automatisez les téléchargements et gérez vos fichiers par programme via une simple API JSON REST. Toutes les demandes et réponses sont application/json. L'URL de base est :

https://api.fast2share.com

Connectez-vous pour créer un jeton

Authentification

Créez un jeton dans votre panneau sous Paramètres → Jetons API. Envoyez-le à chaque demande dans le Authorization en-tête. Les jetons sont affichés une fois lors de la création – stockez-les en toute sécurité. Chaque jeton agit au nom de votre compte et ne voit que vos propres fichiers.

En-tête
Authorization: Bearer f2s_YOUR_TOKEN

Erreurs

Les erreurs utilisent des codes d'état HTTP standard et renvoient un corps JSON avec un error message. Codes courants : 401 (jeton manquant/invalide), 403 (quota ou limite du plan), 404 (fichier introuvable), 409 (conflit — par exemple, le fichier est déjà dans votre compte, voir POST /v1/uploads), 422 (corps de requête incorrect), 503 (pas de serveur de stockage disponible).

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

Points de terminaison

OBTENIR /v1/utilisateur
Obtenir l'utilisateur actuel

Renvoie le compte du propriétaire du jeton, le forfait actif et l'utilisation actuelle du stockage.

Demande
curl https://api.fast2share.com/v1/user \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Réponse
{
  "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
  }
}
OBTENIR /v1/fichiers
Liste des fichiers

Répertorie vos fichiers terminés, les plus récents en premier. Paginé par curseur : transmettre le retour next_before comme ?before= pour la page suivante. Filtrer par nom avec ?q=.

Demande
curl "https://api.fast2share.com/v1/files?before=0&q=report" \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Réponse
{
  "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
}
OBTENIR /v1/dossiers
Liste des dossiers

Chaque dossier de votre compte, les dossiers de niveau supérieur en premier. Utilisez le id comme le folder_id lors du déplacement ou de la copie d'un fichier.

Demande
curl https://api.fast2share.com/v1/folders \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Réponse
{
  "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" }
  ]
}
POSTE /v1/dossiers
Créer un dossier

Crée un dossier. name est obligatoire et doit être unique sur votre compte (insensible à la casse) — un conflit répond 409. Passer parent_id pour l'imbriquer : les dossiers vont un seul niveau de profondeur, et un parent détient au plus un sous-dossier, donc un parent qui est lui-même imbriqué (ou a déjà un enfant) répond 422.

Demande
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}'
Réponse
{
  "id": 12,
  "name": "Invoices",
  "parent_id": null,
  "created_at": "2026-07-31T08:20:00+00:00"
}
POSTE /v1/téléchargements
Créer un téléchargement

Procédure pas à pas de téléchargement : les téléchargements se déroulent en deux étapes parce que les octets disparaissent directement au serveur de stockage (via le système de reprise tu protocole); ils ne passent jamais par cette API. Cet appel valide votre plan/quota et renvoie un point de terminaison tus plus un signé upload_token.

1. POST /v1/uploads avec le nom et la taille du fichier → renvoie upload_url, upload_token et uuid (ce point final).
2. Effectuez un téléchargement vers upload_url, en ajoutant les métadonnées token <upload_token>. N'importe quel client fonctionne (par ex. tus-js-client, tusc). Envoyez les octets en morceaux (8 Mo recommandés) : une seule demande tus portant l'intégralité du fichier est rejetée avec 413 par le CDN de stockage une fois que le corps dépasse environ 100 Mo.
3. Sondage GET /v1/files/{uuid}/status jusqu'à ce qu'il rapporte completed, puis utilisez le retour share_url.

Ignorez le transfert avec déduplication (facultatif). Si les mêmes octets sont déjà stockés, le fichier peut être créé instantanément — rien n'est téléchargé :
fingerprint = SHA-256 des 8 premiers Mo concaténés avec les 8 Mo derniers (lit ≤16 Mo ; si le fichier fait ≤8 Mo, il s'agit simplement du SHA-256 de l'ensemble du fichier, et entre 8 et 16 Mo, les deux plages le couvrent une fois, sans se chevaucher). Envoyez toujours ceci lorsque vous souhaitez une déduplication, c'est ainsi que l'API sait que vous détenez réellement le fichier, de sorte que les octets appartenant à un autre compte ne sont jamais partagés sur une simple somme de contrôle.
sha256 = fichier complet SHA-256, hexadécimal. Envoyez-le avec l'empreinte digitale et la réponse est immédiate : si votre compte possède déjà ce fichier rien n'est créé et vous obtenez 409 avec {"status":"exists","uuid":…,"share_url":…} pointant vers votre copie existante ; si un autre compte possède les octets, ils sont partagés avec vous instantanément : {"status":"completed","deduped":true,"share_url":…} - terminé, rien de téléchargé.
• Pour les gros fichiers, hachez paresseusement : envoyez uniquement le fingerprint. Une réponse de {"status":"need_hash"} signifie qu'une correspondance possible existe - hachez complètement le fichier et appelez POST /v1/uploads/{uuid}/confirm. Toute autre réponse est un ticket normal ; téléchargez comme d'habitude.
Omettez les deux champs pour toujours télécharger.

Demande
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…"}'
Réponse
{
  "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…"
}
⚠ Découpez votre téléchargement – obligatoire pour les fichiers de plus d'environ 100 Mo. Le stockage Le serveur se trouve derrière un CDN qui rejette toute requête dont le corps dépasse ~100 Mo avec 413 Request Entity Too Large. Un tu PATCH qui porte le entier file échoue donc sur les fichiers volumineux. Garder chaque morceau est petit — 8 Mo est une bonne valeur par défaut — ce qui rend également le téléchargement reprise après une interruption de la connexion.

Erreur courante : tus-js-client par défaut chunkSize: Infinity (une requête pour l'intégralité du fichier), donc importations dépassant environ 100 Mo échouer avec 413. Toi doit définir un explicite 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();
POSTE /v1/uploads/{uuid}/confirmation
Confirmer la déduplication

Deuxième étape du fingerprint flow : appelez-le seulement après POST /v1/uploads répondu {"status":"need_hash"}, avec le dossier complet sha256. L'empreinte digitale et la taille sont celles que vous avez envoyées lors de la création du téléchargement — elles ne sont pas relues à partir de cette demande. Les trois mêmes résultats que ci-dessus : déjà dans votre compte → 409 exists (rien de stocké) ; possédé ailleurs → termine tout de suite (deduped); sinon, l'empreinte digitale est simplement entrée en collision et vous obtenez le résultat normal. upload_url / upload_token ticket – téléchargez comme à l’étape 2 ci-dessus.

Demande
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…"}'
Réponse
{
  "uuid": "3f1c…-…-…",
  "status": "completed",
  "deduped": true,
  "size": 184320,
  "sha256": "9f86d0…",
  "share_url": "https://…/f/3f1c…"
}
OBTENIR /v1/files/{uuid}
Obtenir des informations sur le fichier

Renvoie les métadonnées d'un seul fichier que vous possédez.

Demande
curl https://api.fast2share.com/v1/files/3f1c…-…-… \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Réponse
{
  "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
}
OBTENIR /v1/files/{uuid}/statut
Vérifier l'état du téléchargement

Sonde légère pour l'état d'un téléchargement : pending, completed ou failed. Une fois terminé, il renvoie également le share_url.

Demande
curl https://api.fast2share.com/v1/files/3f1c…-…-…/status \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Réponse
{
  "uuid": "3f1c…-…-…",
  "status": "completed",
  "size": 184320,
  "share_url": "https://…/f/3f1c…"
}
OBTENIR /v1/files/{uuid}/téléchargement
Obtenez un lien de téléchargement direct

Crée une URL de téléchargement direct prête à l’emploi pour un fichier que vous possédez. Le lien diffuse immédiatement les octets avec aucune session de navigateur requise (utilisez-le à partir d'un script/curl) et expire après environ 5 minutes. Nécessite un abonnement Premium actif (les administrateurs sont toujours autorisés).

Demande
curl https://api.fast2share.com/v1/files/3f1c…-…-…/download \
  -H "Authorization: Bearer f2s_YOUR_TOKEN"
Réponse
{
  "uuid": "3f1c…-…-…",
  "name": "report.pdf",
  "size": 184320,
  "download_url": "https://…/d/9xA2…",
  "expires_in": 300
}
POSTE /v1/files/{uuid}/renommer
Renommer un fichier

Modifie le nom d'affichage d'un fichier que vous possédez. Le lien de partage (uuid) ne change pas, donc les liens que vous avez déjà distribués continuent de fonctionner — seul le nom affiché sur la page de partage et envoyé avec les modifications de téléchargement. Les séparateurs de chemin et les caractères de contrôle sont supprimés ; le nom est limité à 512 caractères.

Demande
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"}'
Réponse
{
  "uuid": "3f1c…-…-…",
  "name": "invoice-july.pdf",
  "size": 184320,
  "status": "completed",
  "share_url": "https://…/f/3f1c…"
}
POSTE /v1/files/{uuid}/move
Déplacer un fichier

Classe un fichier que vous possédez dans l'un de vos dossiers. Envoyer {"folder_id": 0} (ou omettez-le) pour le ramener à la racine. Le dossier doit être le vôtre, sinon 404.

Demande
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}'
Réponse
{
  "uuid": "3f1c…-…-…",
  "name": "invoice-july.pdf",
  "status": "completed",
  "share_url": "https://…/f/3f1c…",
  "folder_id": 12
}
POSTE /v1/files/{uuid}/copie
Copier un fichier partagé

Met un fichier quelqu'un d'autre partagé avec vous sur votre propre compte, avec votre propre lien de partage — ici {uuid} est le source le slug de partage du fichier, pas l'un des vôtres. Aucun octet n'est transféré : la copie pointe vers le même objet stocké, elle se termine donc instantanément et compte dans votre quota de stockage comme n'importe quel autre fichier.

La source doit être publique, terminée et son propriétaire doit autoriser la copie – sinon vous obtenez 403. 409 signifie qu'il s'agit déjà de votre dossier (ou déjà dans votre compte), et 403 couvre également « il ne reste pas assez de stockage ». Champs de corps facultatifs : folder_id, is_public (vrai par défaut) et free_download (faux par défaut).

Demande
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}'
Réponse
{
  "uuid": "8b2e…-…-…",
  "name": "report.pdf",
  "size": 184320,
  "status": "completed",
  "share_url": "https://…/f/8b2e…",
  "copied": true
}
POSTE /v1/files/{uuid}/delete
Supprimer un fichier

Supprime en douceur un fichier que vous possédez ; il cesse d'être téléchargeable immédiatement et ses octets sont récupérés peu de temps après.

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