API v1 · REST · multipart/form-data

API WebFileTools

Uploadez et partagez des fichiers directement depuis vos scripts, pipelines CI/CD et workflows d'automatisation. Clé API Bearer, quota par jour, réponse JSON.

Outils disponibles côté serveur (22)

Ces outils traitent les fichiers sur le serveur. Uploadez votre fichier via /api/upload puis utilisez le lien obtenu directement dans votre workflow ou ouvrez-le dans le navigateur pour le traiter.

Note : Ces outils s'utilisent via l'interface web. Pour l'automatisation, utilisez les endpoints de traitement dédiés (OCR, compression PDF, PDF→images).

Authentification

Ajoutez votre clé dans le header Authorization :

Authorization: Bearer wft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
La clé n'est affichée qu'une seule fois à la création — copiez-la immédiatement. Créez-en une depuis votre tableau de bord.

Quotas

PlanAppels / jourHeader renvoyé
Gratuit100X-RateLimit-Remaining: 97
ProIllimité

Dépassement → 429 Too Many Requests

POST /api/upload

Upload un fichier, retourne un lien de partage.

cURL

curl -X POST https://webfiletools.com/api/upload \
  -H "Authorization: Bearer wft_VOTRE_CLE" \
  -F "file=@document.pdf"

Python

import requests

API_KEY = "wft_VOTRE_CLE"
with open("document.pdf", "rb") as f:
    r = requests.post(
        "https://webfiletools.com/api/upload",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"file": f},
    )
print(r.json()["url"])  # https://webfiletools.com/f/xxxxx

JavaScript (Node.js)

import FormData from "form-data";
import fs from "fs";

const API_KEY = "wft_VOTRE_CLE";
const form = new FormData();
form.append("file", fs.createReadStream("document.pdf"));

const res = await fetch("https://webfiletools.com/api/upload", {
  method: "POST",
  headers: { Authorization: `Bearer ${API_KEY}`, ...form.getHeaders() },
  body: form,
});
console.log((await res.json()).url);

Réponse 201

{
  "success": true,
  "token": "abc123def456",
  "filename": "document.pdf",
  "size": 204800,
  "mimeType": "application/pdf",
  "expiresAt": null,
  "url": "https://webfiletools.com/f/abc123def456"
}

Endpoints de traitement

Ces endpoints traitent vos fichiers directement, sans interface web. Authentification par clé API requise (scope upload). Les résultats sont renvoyés en temps réel — pas de polling nécessaire.

POST/api/v1/process/ocr→ JSON

Extrait le texte d'une image (PNG, JPG, TIFF, WebP, BMP) ou d'un PDF. Jusqu'à 30 pages.

ParamètreTypeValeur par défaut
fileform-data (requis)
langstringfra+eng
curl -X POST https://webfiletools.com/api/v1/process/ocr \
  -H "Authorization: Bearer wft_VOTRE_CLE" \
  -F "file=@scan.pdf" \
  -F "lang=fra"
{ "text": "Contenu extrait...", "pages": 3, "chars": 1842, "lang": "fra" }
POST/api/v1/process/compress-pdf→ PDF binaire

Compresse un PDF avec Ghostscript. Renvoie le PDF compressé directement en binaire.

ParamètreTypeValeur par défaut
fileform-data (requis)
qualityscreen · ebook · printer · prepressebook
curl -X POST https://webfiletools.com/api/v1/process/compress-pdf \
  -H "Authorization: Bearer wft_VOTRE_CLE" \
  -F "file=@rapport.pdf" \
  -F "quality=screen" \
  -o rapport-compresse.pdf

Headers de réponse utiles : X-Original-Size, X-Compressed-Size, X-Savings-Percent

POST/api/v1/process/pdf-to-images→ ZIP (PNG)

Convertit un PDF en images PNG dans une archive ZIP. Jusqu'à 30 pages.

ParamètreTypeValeur par défaut
fileform-data (requis)
dpientier 72–300150
curl -X POST https://webfiletools.com/api/v1/process/pdf-to-images \
  -H "Authorization: Bearer wft_VOTRE_CLE" \
  -F "file=@presentation.pdf" \
  -F "dpi=200" \
  -o images.zip

Headers de réponse : X-Page-Count, X-DPI

Workflows API

Endpoint orienté automatisation support (texte), utile pour classifier et reformuler des tickets sans upload de fichier. Authentification par clé API requise (scope read, upload ou process).

POST/api/workflows/support/auto→ JSON
Champ JSONTypeNotes
rawLogstring (requis)Log brut du ticket
ticketContextstringContexte libre optionnel
localefr | enDéfaut: fr
curl -X POST https://webfiletools.com/api/workflows/support/auto \
  -H "Authorization: Bearer wft_VOTRE_CLE" \
  -H "Content-Type: application/json" \
  -d '{
    "rawLog": "ERR 500 /checkout for tenant acme; customer cannot validate cart",
    "ticketContext": "Incident prioritaire B2B",
    "locale": "fr"
  }'
{
  "ok": true,
  "result": {
    "anonymized": "...",
    "summary": "...",
    "draftResponse": "...",
    "stats": {
      "ipv4": 2,
      "ipv6": 0,
      "email": 1,
      "domainUser": 1,
      "fqdn": 1,
      "total": 5
    }
  }
}

Headers possibles: X-RateLimit-Remaining

Recettes workflows

Tous les packs visibles sur /workflows ne disposent pas encore d'un endpoint public pour chaque etape. En revanche, plusieurs parcours peuvent deja etre partiellement automatises avec les endpoints exposes ci-dessus.

1. Support IT / MSP

API disponible pour l'etape d'anonymisation + generation de resume/reponse brouillon via /api/workflows/support/auto. L'etape de comparaison avant/apres et la finition du message restent cote web local.

2. Conformite documentaire

Automatisable aujourd'hui pour l'ingestion initiale avec /api/v1/process/ocr, puis pour une derivation visuelle via /api/v1/process/pdf-to-images ou une optimisation de sortie via /api/v1/process/compress-pdf. Les etapes de censure PDF et de conversion PDF/A restent guidees via l'interface web.

3. Partage securise multi-types

Pour un usage API, le point d'entree fiable est /api/upload pour deposer un fichier et recuperer un lien de partage. Les variantes one-time chiffrees et l'orchestration complete du secret separe restent aujourd'hui orientees interface web.

Non exposes en API publique a ce stade

Les packs Marketing social et Publication web express s'appuient surtout sur des outils navigateur 100% locaux. Ils sont excellents en auto web et assistant guide, mais il n'y a pas encore d'endpoint public dedie pour ces etapes.

Codes d'erreur

CodeCauseSolution
201SuccèsLire le champ url
400Fichier absent ou invalideVérifier le champ file
401Clé absente ou invalideVérifier Authorization
403Scope insuffisantRecréer la clé avec scope upload
413Quota stockage dépasséPasser au plan Pro
422Fichier refusé (antivirus)Le fichier contient une menace
429Quota journalier dépasséAttendre demain ou passer Pro
503Antivirus indisponibleRéessayer dans quelques secondes

Exemples

Cas d'usage typiques couvrant l'upload, le traitement et l'automatisation.

Upload

Backup quotidien (bash + cron)

#!/bin/bash
DATE=$(date +%Y-%m-%d)
pg_dump mydb > backup_$DATE.sql
URL=$(curl -s -X POST https://webfiletools.com/api/upload \
  -H "Authorization: Bearer wft_VOTRE_CLE" \
  -F "file=@backup_$DATE.sql" | jq -r '.url')
echo "Backup dispo : $URL"

Upload batch de factures PDF (Python)

import os, requests, time

API_KEY = "wft_VOTRE_CLE"
for nom in os.listdir("./factures"):
    if not nom.endswith(".pdf"):
        continue
    with open(f"./factures/{nom}", "rb") as f:
        r = requests.post(
            "https://webfiletools.com/api/upload",
            headers={"Authorization": f"Bearer {API_KEY}"},
            files={"file": f},
        )
    print(f"{nom} → {r.json().get('url')}")
    time.sleep(0.5)

GitHub Actions — publier un artefact de build

- name: Publier l'artefact
  run: |
    URL=$(curl -s -X POST https://webfiletools.com/api/upload \
      -H "Authorization: Bearer ${{ secrets.WFT_API_KEY }}" \
      -F "file=@dist/app.zip" | jq -r '.url')
    echo "Téléchargement : $URL" >> $GITHUB_STEP_SUMMARY
OCR

Indexer des scans de contrats dans une base de données (Python)

OCR d'un dossier entier, stockage du texte extrait dans PostgreSQL.

import os, requests, psycopg2

API_KEY = "wft_VOTRE_CLE"
conn = psycopg2.connect("dbname=docs user=admin")
cur = conn.cursor()

for pdf in os.listdir("./contrats"):
    if not pdf.endswith(".pdf"):
        continue
    with open(f"./contrats/{pdf}", "rb") as f:
        r = requests.post(
            "https://webfiletools.com/api/v1/process/ocr",
            headers={"Authorization": f"Bearer {API_KEY}"},
            files={"file": f},
            data={"lang": "fra"},
        )
    text = r.json()["text"]
    cur.execute("INSERT INTO contracts (filename, content) VALUES (%s, %s)", (pdf, text))

conn.commit()

Extraire le texte d'une capture d'écran (Node.js)

import FormData from "form-data";
import fs from "fs";

const form = new FormData();
form.append("file", fs.createReadStream("screenshot.png"));
form.append("lang", "fra+eng");

const res = await fetch("https://webfiletools.com/api/v1/process/ocr", {
  method: "POST",
  headers: { Authorization: "Bearer wft_VOTRE_CLE", ...form.getHeaders() },
  body: form,
});

const { text, chars } = await res.json();
console.log(`Extrait ${chars} caractères :`, text);
Compression PDF

Optimiser automatiquement les PDF avant envoi par email (Python)

Réduit le poids avant pièce jointe, affiche le taux de compression.

import requests

API_KEY = "wft_VOTRE_CLE"

with open("rapport-annuel.pdf", "rb") as f:
    r = requests.post(
        "https://webfiletools.com/api/v1/process/compress-pdf",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"file": f},
        data={"quality": "ebook"},
    )

with open("rapport-compresse.pdf", "wb") as out:
    out.write(r.content)

orig  = int(r.headers["X-Original-Size"])
comp  = int(r.headers["X-Compressed-Size"])
saved = r.headers["X-Savings-Percent"]
print(f"{orig//1024} KB → {comp//1024} KB (-{saved}%)")

Pipeline de compression en lot (bash)

#!/bin/bash
for f in ./rapports/*.pdf; do
  nom=$(basename "$f" .pdf)
  curl -s -X POST https://webfiletools.com/api/v1/process/compress-pdf \
    -H "Authorization: Bearer wft_VOTRE_CLE" \
    -F "file=@$f" \
    -F "quality=ebook" \
    -o "./rapports-reduits/$nom-compresse.pdf"
  echo "✓ $nom"
done
PDF vers images

Générer des miniatures de présentation (Node.js)

Convertit un PDF en PNG, extrait la première page comme miniature.

import FormData from "form-data";
import fs from "fs";
import AdmZip from "adm-zip";

const form = new FormData();
form.append("file", fs.createReadStream("slides.pdf"));
form.append("dpi", "96");  // léger pour miniatures

const res = await fetch("https://webfiletools.com/api/v1/process/pdf-to-images", {
  method: "POST",
  headers: { Authorization: "Bearer wft_VOTRE_CLE", ...form.getHeaders() },
  body: form,
});

const zipBuf = Buffer.from(await res.arrayBuffer());
const zip = new AdmZip(zipBuf);

// Sauvegarder uniquement la page 1 comme miniature
zip.extractEntryTo("page-001.png", "./thumbs", false, true);
console.log(`Pages totales : ${res.headers.get("X-Page-Count")}`);

Automatisation Make / n8n (cURL)

Dans un nœud HTTP de n8n ou Make, appelez directement l'endpoint.

curl -X POST https://webfiletools.com/api/v1/process/pdf-to-images \
  -H "Authorization: Bearer wft_VOTRE_CLE" \
  -F "file=@document.pdf" \
  -F "dpi=150" \
  -o pages.zip

# Décompresser les pages
unzip -o pages.zip -d ./pages/

Sécurité

  • Ne commitez jamais votre clé dans Gitutilisez des variables d'environnement (.env ou secrets CI)
  • Scope minimalactivez uniquement les permissions nécessaires (ex. upload seulement)
  • Une clé par projetisolez les accès — si une clé fuite, révoquez-en une sans impacter les autres
  • Révocation immédiatedepuis votre tableau de bord /dashboard/api-keys en quelques secondes
  • Surveillez le quotavérifiez X-RateLimit-Remaining pour anticiper les blocages

Prêt à automatiser ?

Créez votre compte et obtenez votre première clé API en moins d'une minute.