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
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.
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
Renvoie le compte du propriétaire du jeton, le forfait actif et l'utilisation actuelle du stockage.
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
}
}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=.
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
}Recherche vos fichiers par nom. ?q= est obligatoire et correspond à n'importe quel endroit du nom de fichier, sans tenir compte de la casse. Même pagination du curseur que la liste (?before=), et la recherche s'étend sur tous les dossiers, sauf si vous l'étendez avec ?folder_id= (0 = fichiers situés à la racine).
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
}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.
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" }
]
}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.
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"
}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.
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 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();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.
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…"
}Renvoie les métadonnées d'un seul fichier que vous possédez.
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
}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.
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…"
}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).
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
}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.
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…"
}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.
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
}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).
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
}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.
curl -X POST https://api.fast2share.com/v1/files/3f1c…-…-…/delete \ -H "Authorization: Bearer f2s_YOUR_TOKEN"
{ "ok": true, "uuid": "3f1c…-…-…" }