This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Référence de l'API REST

La documentation interactive de l'API, avec des exemples de requête et de réponse, est disponible sur http://localhost:1349/api/docs.

Spécifications lisibles par machine :

  • /api/v1/openapi.yaml - spécification OpenAPI 3.1
  • /llms.txt - résumé adapté aux LLM
  • /llms-full.txt - documentation complète adaptée aux LLM

Authentification

Tous les points de terminaison exigent une authentification, sauf lorsque AUTH_ENABLED=false.

Jeton de session

bash
# Login
curl -X POST http://localhost:1349/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin"}'
# Returns: {"token":"<session-token>"}

# Use token
curl http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer <session-token>"

Les sessions expirent au bout de 7 jours (configurable via SESSION_DURATION_HOURS).

Clés d'API

bash
# Create a key (returns key once - store it)
curl -X POST http://localhost:1349/api/v1/api-keys \
  -H "Authorization: Bearer <session-token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"my-script"}'
# Returns: {"key":"si_<96 hex chars>","id":"...","name":"my-script"}

# Use the key
curl http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer si_<your-key>"

Les clés sont préfixées par si_ et stockées sous forme de hachages scrypt : la clé brute est affichée une seule fois et ne peut plus jamais être récupérée.

Points de terminaison d'authentification

MéthodeCheminAccèsDescription
POST/api/auth/loginPublicConnexion, obtention d'un jeton de session
POST/api/auth/logoutAuthDétruire la session actuelle
GET/api/auth/sessionAuthValider la session actuelle
POST/api/auth/change-passwordAuthChanger son propre mot de passe (invalide toutes les autres sessions et clés d'API)
GET/api/auth/usersAdminLister tous les utilisateurs
POST/api/auth/registerAdminCréer un nouvel utilisateur
PUT/api/auth/users/:idAdminMettre à jour le rôle ou l'équipe d'un utilisateur
POST/api/auth/users/:id/reset-passwordAdminRéinitialiser le mot de passe d'un utilisateur
DELETE/api/auth/users/:idAdminSupprimer un utilisateur
GET/api/v1/config/authPublicVérifier si l'authentification est activée ({ authEnabled: bool })
POST/api/auth/mfa/enrollAuthDémarrer l'inscription à l'authentification multifacteur TOTP. Nécessite la fonctionnalité entreprise mfa
POST/api/auth/mfa/verifyAuthConfirmer l'inscription à l'authentification multifacteur avec un code TOTP
POST/api/auth/mfa/completePublicTerminer un défi de connexion multifacteur en attente
POST/api/auth/mfa/disableAuthDésactiver l'authentification multifacteur pour l'utilisateur actuel
POST/api/auth/users/:id/mfa/resetAdmin (users:manage)Réinitialiser l'authentification multifacteur d'un utilisateur
GET/api/auth/oidc/loginPublicDémarrer la connexion OIDC lorsque OIDC est activé
GET/api/auth/oidc/callbackPublicRappel d'autorisation OIDC
GET/api/auth/saml/metadataPublicXML de métadonnées SP SAML lorsque SAML est activé
GET/api/auth/saml/loginPublicDémarrer la connexion SAML
POST/api/auth/saml/callbackPublicService consommateur d'assertions SAML

Lorsque l'authentification multifacteur est activée pour un utilisateur, POST /api/auth/login renvoie {"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false} au lieu d'un jeton de session. Envoyez ce mfaToken accompagné d'un code TOTP ou d'un code de récupération à /api/auth/mfa/complete.

Autorisations

AutorisationAdminUtilisateur
Utiliser les outils
Ses propres fichiers/pipelines/clés d'API
Voir les fichiers/pipelines/clés de tous les utilisateurs-
Écrire les paramètres-
Gérer les utilisateurs et les équipes-
Gérer l'image de marque-

Vérification de l'état

MéthodeCheminAccèsDescription
GET/api/v1/healthPublicVérification de base de l'état. Renvoie {"status":"healthy","version":"..."} avec 200, ou {"status":"unhealthy"} avec 503 si la base de données est inaccessible.
GET/api/v1/readyzPublicSonde de disponibilité. Vérifie PostgreSQL, Redis, l'espace disque et S3 lorsqu'il est configuré. Renvoie 503 lorsque l'instance ne doit pas recevoir de trafic.
GET/api/v1/admin/healthAdmin (system:health)Diagnostics détaillés incluant la durée de fonctionnement, le mode de stockage, l'état de la base de données, l'état de la file d'attente et la disponibilité du GPU.

Utilisation des outils

Chaque outil suit le même schéma :

bash
# Single file
curl -X POST http://localhost:1349/api/v1/tools/<section>/<toolId> \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F 'settings={"width":800,"height":600}'

# Batch (returns ZIP)
curl -X POST http://localhost:1349/api/v1/tools/<section>/<toolId>/batch \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'settings={...}'

<section> est l'un de image, video, audio, pdf, ou files.

  • Le téléversement est multipart/form-data.
  • settings est une chaîne JSON contenant des options spécifiques à l'outil.
  • clientJobId est un champ de formulaire optionnel pour la corrélation de progression fournie par l'appelant.
  • fileId est un champ de formulaire optionnel référençant un élément existant de la bibliothèque de fichiers. Lorsqu'il est présent, la sortie traitée est enregistrée comme nouvelle version et la réponse inclut savedFileId.
  • Les outils rapides renvoient généralement du JSON en 200 : {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}. Récupérez le fichier traité depuis downloadUrl.
  • Tout outil mis en file d'attente peut renvoyer du JSON en 202 s'il est de longue durée ou dépasse la fenêtre d'attente synchrone : {"jobId":"...","async":true}. Connectez-vous au SSE pour suivre la progression, puis téléchargez une fois terminé (voir Suivi de la progression).
  • Les routes par lots renvoient une archive ZIP diffusée directement (avec l'en-tête X-Job-Id) pour les outils enregistrés dans le registre générique de traitement par lots.

Référence des outils

Préréglages de conversion

Le catalogue partagé inclut 83 points de terminaison de préréglages de conversion dédiés, tels que jpg-to-png, mov-to-mp4, m4a-to-mp3, pdf-to-jpg, et excel-to-csv. Les préréglages sont des routes d'outils de première classe :

POST /api/v1/tools/<section>/<presetId>

Chaque préréglage verrouille le format de sortie et délègue à un outil de base tel que convert, convert-video, extract-audio, convert-audio, image-to-pdf, pdf-to-image, svg-to-raster, ou convert-spreadsheet. Consultez Préréglages de conversion pour le tableau complet des routes et les paramètres optionnels.

Essentiels

ID de l'outilNomParamètres principaux
resizeRedimensionnerwidth, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, plus 23 préréglages pour les réseaux sociaux
cropRognerleft, top, width, height, unit (px/pourcentage)
rotatePivoter et retournerangle, horizontal (bool), vertical (bool)
convertConvertirformat (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compressCompressermode (quality/targetSize), quality (1–100), targetSizeKb

Optimisation

ID de l'outilNomParamètres principaux
optimize-for-webOptimiser pour le Webformat (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataSupprimer les métadonnées-
edit-metadataModifier les métadonnéestitle, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-renameRenommage en massepattern (prend en charge {n}, {date}, {original}), startIndex, padding
image-to-pdfImage vers PDFpageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
faviconGénérateur de faviconpadding, backgroundColor, borderRadius - génère toutes les tailles standard

Réglages

ID de l'outilNomParamètres principaux
adjust-colorsAjuster les couleursbrightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpeningAccentuationmethod (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-colorRemplacer une couleursourceColor, targetColor (remplacement), makeTransparent, tolerance
color-blindnessSimulation de daltonismesimulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, par défaut "deuteranomaly")
duotoneDuotoneshadow (hex), highlight (hex), intensity (0-100)
pixelatePixelliserblockSize (2-128), region ({left, top, width, height} pour une pixellisation partielle)
vignetteVignettagestrength (0.1-1), color (hex), radius, softness, roundness, centerX, centerY

Outils d'IA

Tous les outils d'IA s'exécutent sur votre matériel : CPU par défaut, ou NVIDIA CUDA lorsqu'un GPU NVIDIA compatible est disponible. L'accélération via iGPU Intel/AMD par VA-API, Quick Sync ou OpenCL n'est pas prise en charge aujourd'hui pour l'inférence d'IA. Aucune connexion Internet requise.

ID de l'outilNomModèle d'IAParamètres principaux
remove-backgroundSupprimer l'arrière-planrembg (BiRefNet / U2-Net)model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscaleAgrandissement d'imageRealESRGANscale (2/4), model, faceEnhance, denoise, format, quality
erase-objectGomme d'objetsLaMa (ONNX)Le masque est envoyé comme deuxième partie de fichier (nom de champ mask), format, quality
ocrOCR / Extraction de textePaddleOCR / Tesseractquality (fast/balanced/best), language, enhance
blur-facesFloutage des visages / données personnellesMediaPipeblurRadius, sensitivity
smart-cropRognage intelligentMediaPipe + Sharpmode (subject/face/trim), strategy (attention/entropy), width, height, padding, facePreset (closeup/head-shoulders/upper-body/half-body), sensitivity, threshold, padToSquare, padColor, targetSize, quality
image-enhancementAmélioration d'imageBasé sur l'analysemode (auto/exposure/contrast/color/sharpness), strength
enhance-facesAmélioration des visagesGFPGAN / CodeFormermodel (gfpgan/codeformer), strength, sensitivity, centerFace
colorizeColorisation par IADDColorintensity, model
noise-removalSuppression du bruitDébruitage à plusieurs niveauxtier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removalSuppression des yeux rougesPoints de repère du visage + analyse des couleurssensitivity, strength
restore-photoRestauration de photosPipeline multi-étapesmode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoPhoto d'identitéPoints de repère MediaPipeFlux en deux phases. L'analyse utilise le multipart file ; la génération utilise du JSON avec countryCode, bgColor, printLayout (none/4x6/a4), points de repère, dimensions de l'image
content-aware-resizeRedimensionnement adaptatif au contenuDécoupe par coutures (caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerCorrecteur de transparence PNGDétourage HR BiRefNetdefringe (0-100), outputFormat (png/webp)
background-replaceRemplacer l'arrière-planrembg (BiRefNet)backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-backgroundFlouter l'arrière-planrembg (BiRefNet)intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expandExtension de canevas par IALaMa (outpainting)extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Filigrane et superposition

ID de l'outilNomParamètres principaux
watermark-textFiligrane de textetext, font, fontSize, color, opacity, position, rotation, tile
watermark-imageFiligrane d'imageopacity, position, scale - le deuxième fichier est le filigrane
text-overlaySuperposition de textetext, font, fontSize, color, x, y, background, padding, borderRadius
composeComposition d'imagesx, y, opacity, blend - le deuxième fichier est superposé par-dessus
meme-generatorGénérateur de mèmestemplateId, textLayout (top-bottom/top-only/bottom-only/center/side-by-side), textBoxes ([{id, text}]), fontFamily (anton/arial-black/comic-sans/montserrat/bebas-neue/permanent-marker/roboto), fontSize, textColor, strokeColor, textAlign, allCaps. Prend en charge le mode modèle (corps JSON avec templateId) ou le mode image personnalisée (multipart avec fichier).

Utilitaires

ID de l'outilNomParamètres principaux
infoInfos sur l'image- (renvoie width, height, format, size, channels, hasAlpha, DPI, EXIF)
compareComparer des imagesmode (side-by-side/overlay/diff), diffThreshold - le deuxième fichier est la cible de comparaison
find-duplicatesTrouver les doublonsthreshold (distance de hachage perceptuel, par défaut 8) - multi-fichiers
color-palettePalette de couleurscount (nombre de couleurs dominantes), format (hex/rgb)
qr-generateGénérateur de code QRdata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (fichier optionnel)
barcode-readLecteur de code-barres- (détecte automatiquement QR, EAN, Code128, DataMatrix, etc.)
image-to-base64Image vers Base64format (data-uri/plain), mimeType
html-to-imageHTML vers imageurl, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramHistogrammescale (linear/log) - renvoie un graphique d'histogramme RGB + statistiques par canal
lqip-placeholderEspace réservé LQIPwidth (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generateGénérateur de code-barrestext, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). Corps JSON, aucun téléversement de fichier.

Mise en page et composition

ID de l'outilNomParamètres principaux
collageCollage / Grilletemplate (plus de 25 dispositions), gap, backgroundColor, borderRadius - multi-fichiers
stitchAssembler / Combinerdirection (horizontal/vertical/grid), gap, backgroundColor, alignment - multi-fichiers
splitDécoupe d'imagemode (grid/rows/cols), rows, cols, tileWidth, tileHeight
borderBordure et cadrewidth, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautifyEmbellir une capture d'écranbackgroundType (solid/linear-gradient/radial-gradient/image/transparent), gradientStops, padding, borderRadius, shadowPreset, frame (none/macos-light/macos-dark/windows-light/windows-dark/browser-light/browser-dark/iphone/macbook/ipad/...), socialPreset (none/twitter/linkedin/instagram-square/instagram-story/facebook/producthunt), watermarkText, outputFormat
circle-cropRognage circulairezoom (1-5), offsetX, offsetY, borderWidth, borderColor, background (transparent/hex), outputSize
image-padMarges d'imagetarget (16:9/9:16/1:1/4:3/3:4/custom), ratioW, ratioH, background (color/transparent/blur), color (hex), padding (0-50%)
sprite-sheetFeuille de spritescolumns (1-16), padding, background (hex), format (png/webp/jpeg), quality - multi-fichiers (2-64 images)

Format et conversion

ID de l'outilNomParamètres principaux
svg-to-rasterSVG vers matricielformat (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorizeImage vers SVGcolorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-toolsOutils GIFaction (resize/optimize/reverse/speed/extract-frames/rotate/add-text), paramètres spécifiques à l'action
gif-webpConvertisseur GIF/WebPquality (1-100), lossless (bool), resizePercent (10-100)

Outils vidéo

ID de l'outilNomParamètres principaux
convert-videoConvertir une vidéoformat (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-videoCompresser une vidéoquality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-videoDécouper une vidéostartS, endS, precise (bool, coupe précise à l'image près)
mute-videoCouper le son d'une vidéo-
video-to-gifVidéo vers GIFfps (1-30), width, startS, durationS (max 60 s)
resize-videoRedimensionner une vidéowidth, height, preset (custom/2160p/1440p/1080p/720p/480p/360p)
crop-videoRogner une vidéowidth, height, x, y
rotate-videoPivoter une vidéotransform (cw90/ccw90/180/hflip/vflip)
change-fpsModifier les images par secondefps (1-120)
video-colorCouleur de la vidéobrightness, contrast, saturation, gamma
video-speedVitesse de la vidéofactor (0.25-4), keepPitch (bool)
reverse-videoInverser une vidéo- (max 5 minutes)
video-loudnormNormaliser l'audio- (EBU R128)
aspect-padMarges au formattarget (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-padMarges floutéestarget (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-videoFiligrane sur vidéotext, position, fontSize, opacity, color
stabilize-videoStabiliser une vidéosmoothing (5-60, en images)
gif-to-videoGIF vers vidéoformat (mp4/webm/mov)
video-to-webpVidéo vers WebPfps, width, quality, loop (bool)
video-to-framesVidéo vers imagesmode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videosFusionner des vidéos- (multi-fichiers, normalisées à la résolution de la première vidéo)
replace-audioRemplacer l'audio- (vidéo + fichier audio, deux fichiers)
burn-subtitlesIncruster des sous-titresfontSize (8-72) - vidéo + fichier de sous-titres
embed-subtitlesIntégrer des sous-titreslanguage (code ISO 639-2/B) - vidéo + fichier de sous-titres
extract-subtitlesExtraire des sous-titres- (produit du SRT)
images-to-videoImages vers vidéosecondsPerImage (0.5-10), resolution (1080p/720p/square), fps - multi-fichiers
video-metadataNettoyer les métadonnées vidéo-
auto-subtitlesSous-titres automatiques (IA)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audioExtraire l'audioformat (mp3/wav/m4a/ogg)

Outils audio

ID de l'outilNomParamètres principaux
convert-audioConvertir l'audioformat (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audioDécouper l'audiostartS, endS
volume-adjustAjuster le volumegainDb (-30 à 30)
normalize-audioNormaliser l'audio- (EBU R128, -16 LUFS)
fade-audioFondu audiofadeInS (0-30), fadeOutS (0-30)
reverse-audioInverser l'audio-
audio-speedVitesse de l'audiofactor (0.25-4)
pitch-shiftDécalage de hauteursemitones (-12 à 12)
audio-channelsCanaux audiomode (stereo-to-mono/mono-to-stereo/swap)
silence-removalSuppression des silencesthresholdDb (-80 à -20), minSilenceS (0.1-5)
noise-reductionRéduction du bruitstrength (light/medium/strong)
merge-audioFusionner l'audioformat (mp3/wav/flac/m4a) - multi-fichiers
split-audioDiviser l'audiomode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-makerCréateur de sonneriestartS, durationS (1-30)
waveform-imageImage de forme d'ondewidth, height, color (hex)
audio-metadataMétadonnées audiostrip (bool), title, artist, album
transcribe-audioTranscrire l'audio (IA)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Outils de documents

ID de l'outilNomParamètres principaux
merge-pdfFusionner des PDF- (multi-fichiers, jusqu'à 20 PDF)
split-pdfDiviser un PDFmode (range/every), range, everyN (1-500)
compress-pdfCompresser un PDFmode (quality/targetSize), quality (1-100), targetSizeKb
rotate-pdfPivoter un PDFangle (90/180/270), range (plage de pages)
extract-pagesExtraire des pagesrange (syntaxe qpdf, par exemple "1-5,8,10-z")
remove-pagesSupprimer des pagespages (plage qpdf à supprimer)
organize-pdfOrganiser un PDForder (ordre des pages qpdf, par exemple "3,1,2,5-z")
protect-pdfProtéger un PDFuserPassword, ownerPassword (AES-256)
unlock-pdfDéverrouiller un PDFpassword
repair-pdfRéparer un PDF-
linearize-pdfOptimiser un PDF pour le Web- (linéariser pour un affichage web rapide)
grayscale-pdfPDF en niveaux de gris-
pdfa-convertConvertir en PDF/A- (PDF/A-2 d'archivage)
crop-pdfRogner un PDFmargin (0-2000 points)
nup-pdfPDF N pages par feuilleperSheet (2/3/4/8/9/12/16)
booklet-pdfPDF en livretperSheet (2/4/6/8)
watermark-pdfFiligrane sur PDFtext, position, fontSize, opacity, rotation
pdf-page-numbersNuméros de page du PDFposition (bl/bc/br/tl/tc/tr), fontSize
flatten-pdfAplatir un PDF- (intègre les formulaires et les annotations)
redact-pdfCaviarder un PDFterms (string[]), caseSensitive (bool)
sign-pdfSigner un PDFRoute multipart personnalisée avec le PDF file, les fichiers de signature sig0, sig1, et le tableau JSON placements
pdf-to-textPDF vers texte-
pdf-to-wordPDF vers Word-
pdf-metadataMétadonnées du PDFtitle, author, subject, keywords
convert-documentConvertir un documentformat (docx/odt/rtf/txt)
convert-presentationConvertir une présentationformat (pptx/odp)
convert-spreadsheetConvertir une feuille de calculformat (xlsx/ods/csv)
excel-to-pdfExcel vers PDF-
word-to-pdfWord vers PDF-
powerpoint-to-pdfPowerPoint vers PDF-
html-to-pdfHTML vers PDF- (ressources distantes désactivées)
markdown-to-docxMarkdown vers Word-
markdown-to-htmlMarkdown vers HTML-
markdown-to-pdfMarkdown vers PDF- (ressources distantes désactivées)
epub-convertConvertir un EPUBformat (pdf/docx/html/md)
to-epubConvertir en EPUB- (accepte .docx, .md, .html, .txt)
ocr-pdfOCR de PDF (IA)quality (fast/balanced/best), language (auto/en/de/fr/es/zh/ja/ko), pages
pdf-to-imagePDF vers imagepages (all/range), format, dpi, quality
pdf-to-jpgPDF vers JPGpages, dpi, quality, colorMode
pdf-to-pngPDF vers PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF vers TIFFpages, dpi, quality, colorMode

Outils de fichiers

ID de l'outilNomParamètres principaux
chart-makerCréateur de graphiqueskind (bar/line/pie), title, width, height
csv-excelCSV vers Excelsheet (numéro de feuille de calcul pour l'entrée XLSX) - bidirectionnel
csv-jsonCSV vers JSONpretty (bool) - bidirectionnel
json-xmlJSON vers XMLpretty (bool) - bidirectionnel
split-csvDiviser un CSVrowsPerFile (1-1000000), keepHeader (bool)
merge-csvsFusionner des CSV- (multi-fichiers, colonnes correspondantes)
yaml-jsonYAML / JSON- (bidirectionnel)
xml-to-csvXML vers CSV- (trouve automatiquement les éléments répétés)
excel-to-csvExcel vers CSVpréréglage de conversion dédié adossé à convert-spreadsheet
create-zipCréer un ZIP- (multi-fichiers, 2-50 fichiers)
extract-zipExtraire un ZIP- (protégé contre les bombes)

HTML vers image

Capturez une page web sous forme d'image. Contrairement aux autres outils, ce point de terminaison accepte application/json au lieu de données de formulaire multipart (aucun téléversement de fichier nécessaire).

Point de terminaison : POST /api/v1/tools/image/html-to-image

Content-Type : application/json

ParamètreTypePar défautDescription
urlstring(requis)URL à capturer (http/https uniquement)
formatstring"png"Format de sortie : jpg, png, webp
qualitynumber90Qualité 1-100 (JPG/WebP uniquement)
fullPagebooleanfalseCapturer la page entière défilable
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280Largeur personnalisée de la fenêtre d'affichage 320-3840
viewportHeightnumber720Hauteur personnalisée de la fenêtre d'affichage 320-2160

Exemple :

bash
curl -X POST http://localhost:1349/api/v1/tools/image/html-to-image \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://snapotter.com", "format": "png", "devicePreset": "desktop"}'

Réponse :

json
{
  "jobId": "uuid",
  "downloadUrl": "/api/v1/download/{jobId}/screenshot.png",
  "originalSize": 0,
  "processedSize": 54321
}

Sous-routes des outils

Certains outils exposent des points de terminaison supplémentaires au-delà du POST /api/v1/tools/<section>/<toolId> standard :

MéthodeCheminDescription
GET/api/v1/tools/popularRenvoie les ID d'outils populaires, en se rabattant sur une liste par défaut sélectionnée lorsque les données d'utilisation sont rares
POST/api/v1/tools/image/remove-background/effectsApplique des effets d'arrière-plan (couleur/dégradé/flou/ombre) sans réexécuter l'IA. Utilise le masque mis en cache lors de la suppression initiale.
POST/api/v1/tools/image/edit-metadata/inspectLit les métadonnées EXIF/IPTC/XMP existantes d'une image
POST/api/v1/tools/image/strip-metadata/inspectInspecte les champs de métadonnées avant leur suppression
POST/api/v1/tools/image/passport-photo/analyzePhase 1 : détection de visage par IA + suppression de l'arrière-plan. Renvoie les points de repère du visage et les données mises en cache.
POST/api/v1/tools/image/passport-photo/generatePhase 2 : rognage, redimensionnement et disposition en mosaïque à partir de l'analyse mise en cache. Aucune réexécution de l'IA.
POST/api/v1/tools/image/gif-tools/infoRécupère les métadonnées du GIF (nombre d'images, dimensions, durée)
POST/api/v1/tools/pdf/pdf-to-image/infoRécupère les métadonnées du PDF (nombre de pages, dimensions)
POST/api/v1/tools/pdf/pdf-to-image/previewGénère un aperçu d'une page PDF spécifique
POST/api/v1/tools/pdf/pdf-to-jpg/infoRécupère les métadonnées du PDF pour le préréglage JPG dédié
POST/api/v1/tools/pdf/pdf-to-jpg/previewGénère un aperçu de page PDF au format préréglé JPG
POST/api/v1/tools/pdf/pdf-to-png/infoRécupère les métadonnées du PDF pour le préréglage PNG dédié
POST/api/v1/tools/pdf/pdf-to-png/previewGénère un aperçu de page PDF au format préréglé PNG
POST/api/v1/tools/pdf/pdf-to-tiff/infoRécupère les métadonnées du PDF pour le préréglage TIFF dédié
POST/api/v1/tools/pdf/pdf-to-tiff/previewGénère un aperçu de page PDF au format préréglé TIFF
POST/api/v1/tools/image/svg-to-raster/batchConvertit en lot plusieurs SVG vers du matriciel
POST/api/v1/tools/image/image-enhancement/analyzeAnalyse la qualité de l'image et renvoie des recommandations d'amélioration
POST/api/v1/tools/image/optimize-for-web/previewAperçu léger pour l'ajustement en direct des paramètres. Renvoie une image optimisée avec des en-têtes de taille.

Traitement par lots

Appliquez un outil générique compatible avec le traitement par lots à plusieurs fichiers à la fois. Renvoie une archive ZIP. Les routes personnalisées multi-fichiers ou multi-étapes, telles que la signature de PDF, l'OCR de PDF et les routes de préréglage PDF vers image, utilisent leur propre contrat de point de terminaison au lieu de la route générique /batch.

bash
curl -X POST http://localhost:1349/api/v1/tools/image/compress/batch \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'settings={"quality":80}'

La concurrence est contrôlée par CONCURRENT_JOBS (par défaut : détecté automatiquement à partir des cœurs CPU). MAX_BATCH_SIZE limite le nombre de fichiers par lot (par défaut : 100 ; définissez 0 pour illimité).

Pipelines

Exécuter un pipeline

bash
# Single file
curl -X POST http://localhost:1349/api/v1/pipeline/execute \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F 'pipeline={"steps":[
    {"toolId":"resize","settings":{"width":1200}},
    {"toolId":"compress","settings":{"quality":80}},
    {"toolId":"watermark-text","settings":{"text":"© 2025"}}
  ]}'

# Batch (multiple files → ZIP)
curl -X POST http://localhost:1349/api/v1/pipeline/batch \
  -H "Authorization: Bearer <token>" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'pipeline={"steps":[{"toolId":"resize","settings":{"width":800}}]}'

La sortie de chaque étape constitue l'entrée de l'étape suivante. Les pipelines autorisent 20 étapes par défaut, configurable via MAX_PIPELINE_STEPS. Définissez MAX_PIPELINE_STEPS=0 pour supprimer la limite.

Enregistrer et gérer les pipelines

MéthodeCheminDescription
POST/api/v1/pipeline/saveEnregistre un pipeline nommé (name, description, steps[])
GET/api/v1/pipeline/listListe les pipelines enregistrés (les administrateurs voient tout ; les utilisateurs voient les leurs)
DELETE/api/v1/pipeline/:idSupprime (propriétaire ou administrateur)
GET/api/v1/pipeline/toolsListe les ID d'outils valides pour les étapes de pipeline

Suivi de la progression

Les tâches de longue durée, les outils mis en file d'attente, les tâches par lots et les pipelines émettent une progression en temps réel via Server-Sent Events. Le flux de progression est public et indexé par ID de tâche, de sorte que les clients n'ont pas besoin d'envoyer d'en-tête d'autorisation pour le lire.

bash
# Connect to the SSE stream (jobId is in the JSON response body from the tool endpoint)
curl -N http://localhost:1349/api/v1/jobs/<jobId>/progress

Format des événements :

data: {"jobId":"...","type":"single","phase":"processing","stage":"Upscaling","percent":42}
data: {"jobId":"...","type":"single","phase":"complete","percent":100,"result":{"downloadUrl":"/api/v1/download/..."}}
data: {"jobId":"...","type":"batch","status":"processing","completedFiles":2,"totalFiles":5,"failedFiles":0,"errors":[]}

Vous pouvez demander l'annulation d'une tâche en file d'attente ou en cours d'exécution avec POST /api/v1/jobs/:jobId/cancel. La réponse est {"canceled":true|false}.

Bibliothèque de fichiers

Stockage de fichiers persistant avec historique des versions.

MéthodeCheminDescription
POST/api/v1/uploadTéléverse des fichiers dans l'espace de travail (traitement temporaire)
POST/api/v1/files/uploadTéléverse des fichiers dans la bibliothèque de fichiers persistante
POST/api/v1/files/save-resultEnregistre le résultat du traitement d'un outil comme nouvelle version de fichier
GET/api/v1/filesListe les fichiers enregistrés (paginé, avec recherche)
GET/api/v1/files/:idRécupère les métadonnées du fichier + la chaîne de versions
GET/api/v1/files/:id/downloadTélécharge un fichier
GET/api/v1/files/:id/thumbnailRécupère une miniature JPEG de 300 px
DELETE/api/v1/filesSupprime en masse des fichiers et leurs chaînes de versions (corps : { ids: [...] })
POST/api/v1/fetch-urlsRécupère des URL distantes dans l'espace de travail pour les imports basés sur URL
POST/api/v1/previewGénère un aperçu WebP compatible avec le navigateur (pour les formats HEIC/HEIF/RAW)
GET/api/v1/files/:id/previewDiffuse un aperçu mis en cache ou généré, compatible avec le navigateur, pour un PDF, un document bureautique, une vidéo ou un fichier audio enregistré
POST/api/v1/preview/generateGénère à la demande un aperçu MP4 ou MP3 pour un fichier multimédia téléversé sans l'enregistrer au préalable
GET/api/v1/download/:jobId/:filenameTélécharge un fichier traité depuis un espace de travail

Pour enregistrer automatiquement le résultat d'un outil dans la bibliothèque, incluez fileId comme champ de formulaire multipart référençant un fichier existant de la bibliothèque. Le résultat traité sera enregistré comme nouvelle version.

Gestion des clés d'API

MéthodeCheminAccèsDescription
POST/api/v1/api-keysAuthGénère une nouvelle clé - affichée une seule fois
GET/api/v1/api-keysAuthListe les clés (name, id, lastUsedAt - pas la clé brute)
DELETE/api/v1/api-keys/:idAuthSupprime une clé

Équipes

MéthodeCheminAccèsDescription
GET/api/v1/teamsAdmin (teams:manage)Liste les équipes
POST/api/v1/teamsAdmin (teams:manage)Crée une équipe
PUT/api/v1/teams/:idAdmin (teams:manage)Renomme une équipe
DELETE/api/v1/teams/:idAdmin (teams:manage)Supprime une équipe (impossible de supprimer l'équipe par défaut ou les équipes ayant des membres)

Paramètres

Configuration clé-valeur d'exécution (lecture par tout utilisateur authentifié, écriture par l'administrateur uniquement).

MéthodeCheminDescription
GET/api/v1/settingsRécupère tous les paramètres
PUT/api/v1/settingsMet à jour en masse les paramètres (corps JSON avec des paires clé-valeur)
GET/api/v1/settings/:keyRécupère un paramètre spécifique par clé

Clés connues : disabledTools (tableau JSON d'ID d'outils), enableExperimentalTools (chaîne booléenne), loginAttemptLimit (nombre).

Préférences

Les préférences par utilisateur sont distinctes des paramètres de l'instance. Tout utilisateur authentifié peut lire et mettre à jour sa propre carte de préférences.

MéthodeCheminDescription
GET/api/v1/preferencesRécupère les préférences de l'utilisateur actuel sous forme de { "preferences": { ... } }
PUT/api/v1/preferencesInsère ou met à jour une ou plusieurs clés de préférence pour l'utilisateur actuel

Rôles

Gestion de rôles personnalisés avec des autorisations granulaires.

MéthodeCheminAccèsDescription
GET/api/v1/rolesAdmin (audit:read)Liste tous les rôles avec le nombre d'utilisateurs
POST/api/v1/rolesAdmin (security:manage)Crée un rôle personnalisé (name, description, permissions)
PUT/api/v1/roles/:idAdmin (security:manage)Met à jour un rôle personnalisé (impossible de modifier les rôles intégrés)
DELETE/api/v1/roles/:idAdmin (security:manage)Supprime un rôle personnalisé (impossible de supprimer les rôles intégrés ; les utilisateurs concernés reviennent au rôle user)

Autorisations disponibles (17) : tools:use, files:own, files:all, apikeys:own, apikeys:all, pipelines:own, pipelines:all, settings:read, settings:write, users:manage, teams:manage, features:manage, system:health, audit:read, compliance:manage, webhooks:manage, security:manage.

Journal d'audit

Point de terminaison réservé aux administrateurs pour examiner les actions pertinentes en matière de sécurité.

MéthodeCheminAccèsDescription
GET/api/v1/audit-logAdmin (audit:read)Journal d'audit paginé avec filtres optionnels

Paramètres de requête :

ParamètreDescription
pageNuméro de page (par défaut : 1)
limitEntrées par page (par défaut : 50, max : 100)
actionFiltre par type d'action (par exemple ROLE_CREATED, ROLE_DELETED)
ipFiltre par adresse IP source
fromFiltre les entrées postérieures à cette date ISO 8601
toFiltre les entrées antérieures à cette date ISO 8601

Analytique

MéthodeCheminAccèsDescription
GET/api/v1/config/analyticsPublicRécupère la configuration d'analytique effective (clé PostHog, DSN Sentry, taux d'échantillonnage). Les clés, le DSN et l'ID d'instance sont vides lorsque l'analytique est désactivée, que ce soit par la compilation ou par le paramètre d'instance analyticsEnabled.
POST/api/v1/feedbackAuthSoumet un retour utilisateur explicite au projet PostHog configuré sous forme de feedback_submitted. La route respecte le verrou d'analytique, limite le débit des soumissions, retire les champs de contact sauf si contactOk est vrai, et n'accepte jamais le contenu des fichiers, les noms de fichiers, les chemins de téléversement ni le texte d'erreur privé brut. Lorsque l'analytique est désactivée, elle renvoie { "ok": true, "accepted": false }.
PUT/api/v1/settingsAdmin (settings:write)Définit le refus à l'échelle de l'instance. Envoyez un corps JSON { "analyticsEnabled": "false" } pour désactiver l'analytique pour tout le monde, ou "true" pour la réactiver.

Fonctionnalités / Bundles d'IA

Gérez les bundles de fonctionnalités d'IA (installez/désinstallez des packages de modèles d'IA dans l'environnement Docker). Préférez le point de terminaison d'installation au niveau de l'outil lorsque vous activez un outil depuis une automatisation personnalisée : certains outils d'IA nécessitent plus d'un bundle partagé, et ce point de terminaison ignore les bundles déjà installés en ne mettant en file d'attente que ceux qui manquent.

MéthodeCheminAccèsDescription
GET/api/v1/featuresAuthListe tous les bundles de fonctionnalités et leur état d'installation
POST/api/v1/admin/features/:bundleId/installAdmin (features:manage)Installe un bundle de fonctionnalités (asynchrone, renvoie jobId pour le suivi de la progression)
POST/api/v1/admin/tools/:toolId/features/installAdmin (features:manage)Installe chaque bundle requis par un outil ; renvoie l'état par bundle (mis en file d'attente/ignoré)
POST/api/v1/admin/features/:bundleId/uninstallAdmin (features:manage)Désinstalle un bundle de fonctionnalités et nettoie les fichiers de modèle
GET/api/v1/admin/features/disk-usageAdmin (features:manage)Récupère l'utilisation totale du disque par les modèles d'IA
POST/api/v1/admin/features/importAdmin (features:manage)Importe une archive de bundle d'IA hors ligne

Opérations d'administration

Points de terminaison opérationnels pour l'observabilité, l'assistance, les rapports d'utilisation et l'état des sauvegardes.

MéthodeCheminAccèsDescription
GET/api/v1/admin/log-levelAdmin (settings:write)Lit le niveau de journalisation d'exécution actuel
POST/api/v1/admin/log-levelAdmin (settings:write)Change le niveau de journalisation d'exécution (fatal, error, warn, info, debug, trace, ou silent)
GET/api/v1/metricsAdmin (system:health)Métriques Prometheus au format texte
GET/api/v1/admin/support-bundleAdmin (system:health)Télécharge un ZIP de bundle de diagnostic d'assistance caviardé
GET/api/v1/admin/usageAdmin (audit:read)Données du tableau de bord d'utilisation, avec un paramètre de requête days optionnel
GET/api/v1/admin/backup-statusAdmin (system:health)Lit les métadonnées de la dernière sauvegarde et l'état de fraîcheur
POST/api/v1/admin/backup-statusAdmin (system:health)Enregistre une sauvegarde terminée (type, sizeBytes optionnel, notes optionnel)

API d'entreprise

Ces routes sont verrouillées par licence selon leur fonctionnalité d'entreprise associée. Elles exigent toujours l'autorisation SnapOtter indiquée.

MéthodeCheminAccèsDescription
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Exporte les entrées d'audit au format JSON ou CSV avec des filtres
GET/api/v1/enterprise/config/exportAdmin (system:health)Exporte la configuration d'instance caviardée, les rôles personnalisés et les équipes
POST/api/v1/enterprise/config/importAdmin (system:health)Importe une configuration, avec exécution à blanc optionnelle
GET/api/v1/enterprise/ip-allowlistAdmin (security:manage)Lit la liste d'autorisation CIDR configurée
PUT/api/v1/enterprise/ip-allowlistAdmin (security:manage)Met à jour la liste d'autorisation CIDR avec prévention de l'auto-verrouillage
GET/api/v1/enterprise/legal-holdAdmin (compliance:manage)Liste les blocages juridiques des utilisateurs et des équipes
PUT/api/v1/enterprise/legal-holdAdmin (compliance:manage)Applique ou lève un blocage juridique sur un utilisateur ou une équipe
POST/api/v1/enterprise/scim/tokenAdmin (users:manage)Génère un jeton bearer SCIM, renvoyé une seule fois
DELETE/api/v1/enterprise/scim/tokenAdmin (users:manage)Révoque le jeton bearer SCIM actuel
GET/api/v1/enterprise/siem/configAdmin (webhooks:manage)Lit la configuration de transfert SIEM
PUT/api/v1/enterprise/siem/configAdmin (webhooks:manage)Met à jour la configuration de transfert SIEM
GET/api/v1/enterprise/webhooksAdmin (webhooks:manage)Liste les destinations de webhook
POST/api/v1/enterprise/webhooksAdmin (webhooks:manage)Crée une destination de webhook
PUT/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Met à jour une destination de webhook
DELETE/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Supprime une destination de webhook
POST/api/v1/enterprise/webhooks/:index/testAdmin (webhooks:manage)Envoie une charge utile de webhook de test
POST/api/v1/enterprise/users/:id/exportAdmin (compliance:manage)Démarre une tâche d'export d'utilisateur RGPD
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin (compliance:manage)Lit l'état de l'export RGPD et l'URL de téléchargement
DELETE/api/v1/enterprise/users/:id/purgeAdmin (compliance:manage)Purge définitivement les données d'un utilisateur après confirmation
DELETE/api/v1/enterprise/teams/:id/purgeAdmin (compliance:manage)Purge définitivement les données d'une équipe après confirmation
GET/api/v1/admin/versionAdmin (system:health)Lit les métadonnées de version de l'application, de la build, de Node et du schéma
GET/api/v1/admin/migrations/pendingAdmin (system:health)Compare les migrations packagées avec les migrations appliquées
GET/api/v1/admin/upgrade-checkAdmin (system:health)Exécute les vérifications de préparation à la mise à niveau

SCIM 2.0

Les points de terminaison de découverte SCIM sont publics. Les points de terminaison d'utilisateurs et de groupes exigent le jeton bearer SCIM généré ci-dessus.

MéthodeCheminAccèsDescription
GET/api/v1/scim/v2/ServiceProviderConfigPublicCapacités du serveur SCIM
GET/api/v1/scim/v2/SchemasPublicDécouverte du schéma SCIM
GET/api/v1/scim/v2/ResourceTypesPublicDécouverte des types de ressources SCIM
GET/api/v1/scim/v2/UsersJeton SCIMListe les utilisateurs, avec un filtre SCIM optionnel
POST/api/v1/scim/v2/UsersJeton SCIMCrée un utilisateur
GET/api/v1/scim/v2/Users/:idJeton SCIMRécupère un utilisateur
PUT/api/v1/scim/v2/Users/:idJeton SCIMRemplace un utilisateur
DELETE/api/v1/scim/v2/Users/:idJeton SCIMDésactive un utilisateur en douceur
GET/api/v1/scim/v2/GroupsJeton SCIMListe les équipes en tant que groupes SCIM
POST/api/v1/scim/v2/GroupsJeton SCIMCrée une équipe
GET/api/v1/scim/v2/Groups/:idJeton SCIMRécupère une équipe
PUT/api/v1/scim/v2/Groups/:idJeton SCIMRemplace une équipe et l'appartenance au groupe
DELETE/api/v1/scim/v2/Groups/:idJeton SCIMSupprime une équipe

Modèles de mèmes

API d'appui pour l'outil de génération de mèmes.

MéthodeCheminAccèsDescription
GET/api/v1/meme-templatesAuthListe tous les modèles de mèmes disponibles avec les positions des zones de texte
GET/api/v1/meme-templates/full/:filenameAuthSert l'image du modèle en taille réelle
GET/api/v1/meme-templates/thumbs/:filenameAuthSert la miniature du modèle
GET/api/v1/meme-templates/fonts/:filenameAuthSert le fichier de police utilisé pour le rendu du texte des mèmes

Réponses d'erreur

Toutes les erreurs renvoient du JSON :

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
StatutSignification
400Requête invalide / échec de la validation
401Non authentifié
403Autorisations insuffisantes
404Ressource introuvable
413Fichier trop volumineux (voir MAX_UPLOAD_SIZE_MB)
422Échec du traitement après validation
429Débit limité (voir RATE_LIMIT_PER_MIN)
501Le bundle de fonctionnalités d'IA requis n'est pas installé (FEATURE_NOT_INSTALLED)
500Erreur interne du serveur