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

REST-API-Referenz

Interaktive API-Dokumentation mit Beispielen für Anfragen und Antworten ist verfügbar unter http://localhost:1349/api/docs.

Maschinenlesbare Spezifikationen:

  • /api/v1/openapi.yaml - OpenAPI-3.1-Spezifikation
  • /llms.txt - LLM-freundliche Zusammenfassung
  • /llms-full.txt - Vollständige LLM-freundliche Dokumentation

Authentifizierung

Alle Endpunkte erfordern eine Authentifizierung, sofern nicht AUTH_ENABLED=false.

Sitzungs-Token

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>"

Sitzungen laufen nach 7 Tagen ab (konfigurierbar über SESSION_DURATION_HOURS).

API-Schlüssel

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>"

Schlüssel erhalten das Präfix si_ und werden als scrypt-Hashes gespeichert. Der Rohschlüssel wird einmal angezeigt und ist danach nie wieder abrufbar.

Auth-Endpunkte

MethodePfadZugriffBeschreibung
POST/api/auth/loginÖffentlichAnmelden, Sitzungs-Token erhalten
POST/api/auth/logoutAuthAktuelle Sitzung beenden
GET/api/auth/sessionAuthAktuelle Sitzung validieren
POST/api/auth/change-passwordAuthEigenes Passwort ändern (macht alle anderen Sitzungen + API-Schlüssel ungültig)
GET/api/auth/usersAdminAlle Benutzer auflisten
POST/api/auth/registerAdminNeuen Benutzer erstellen
PUT/api/auth/users/:idAdminBenutzerrolle oder -team aktualisieren
POST/api/auth/users/:id/reset-passwordAdminPasswort eines Benutzers zurücksetzen
DELETE/api/auth/users/:idAdminEinen Benutzer löschen
GET/api/v1/config/authÖffentlichPrüfen, ob die Authentifizierung aktiviert ist ({ authEnabled: bool })
POST/api/auth/mfa/enrollAuthTOTP-MFA-Registrierung starten. Erfordert das Enterprise-Feature mfa
POST/api/auth/mfa/verifyAuthMFA-Registrierung mit einem TOTP-Code bestätigen
POST/api/auth/mfa/completeÖffentlichEine ausstehende MFA-Login-Challenge abschließen
POST/api/auth/mfa/disableAuthMFA für den aktuellen Benutzer deaktivieren
POST/api/auth/users/:id/mfa/resetAdmin (users:manage)MFA für einen Benutzer zurücksetzen
GET/api/auth/oidc/loginÖffentlichOIDC-Login starten, wenn OIDC aktiviert ist
GET/api/auth/oidc/callbackÖffentlichOIDC-Autorisierungs-Callback
GET/api/auth/saml/metadataÖffentlichSAML-SP-Metadaten-XML, wenn SAML aktiviert ist
GET/api/auth/saml/loginÖffentlichSAML-Login starten
POST/api/auth/saml/callbackÖffentlichSAML Assertion Consumer Service

Wenn MFA für einen Benutzer aktiviert ist, gibt POST /api/auth/login statt eines Sitzungs-Tokens {"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false} zurück. Senden Sie dieses mfaToken zusammen mit einem TOTP- oder Wiederherstellungscode an /api/auth/mfa/complete.

Berechtigungen

BerechtigungAdminBenutzer
Tools verwenden
Eigene Dateien/Pipelines/API-Schlüssel
Dateien/Pipelines/Schlüssel aller Benutzer sehen-
Einstellungen schreiben-
Benutzer & Teams verwalten-
Branding verwalten-

Health-Check

MethodePfadZugriffBeschreibung
GET/api/v1/healthÖffentlichGrundlegender Health-Check. Gibt {"status":"healthy","version":"..."} mit 200 zurück oder {"status":"unhealthy"} mit 503, wenn die Datenbank nicht erreichbar ist.
GET/api/v1/readyzÖffentlichReadiness-Probe. Prüft PostgreSQL, Redis, Speicherplatz und S3, sofern konfiguriert. Gibt 503 zurück, wenn die Instanz keinen Datenverkehr erhalten sollte.
GET/api/v1/admin/healthAdmin (system:health)Detaillierte Diagnose einschließlich Betriebszeit, Speichermodus, Datenbankstatus, Warteschlangenstatus und GPU-Verfügbarkeit.

Tools verwenden

Jedes Tool folgt demselben Muster:

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> ist einer der Werte image, video, audio, pdf oder files.

  • Der Upload ist multipart/form-data.
  • settings ist ein JSON-String mit tool-spezifischen Optionen.
  • clientJobId ist ein optionales Formularfeld für vom Aufrufer bereitgestellte Fortschrittskorrelation.
  • fileId ist ein optionales Formularfeld, das auf ein vorhandenes Element der Dateibibliothek verweist. Wenn vorhanden, wird die verarbeitete Ausgabe als neue Version gespeichert und die Antwort enthält savedFileId.
  • Schnelle Tools geben in der Regel 200-JSON zurück: {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}. Rufen Sie die verarbeitete Datei von downloadUrl ab.
  • Jedes eingereihte Tool kann 202-JSON zurückgeben, wenn es lange läuft oder das synchrone Warte-Zeitfenster überschreitet: {"jobId":"...","async":true}. Verbinden Sie sich mit SSE für den Fortschritt und laden Sie die Datei nach Abschluss herunter (siehe Fortschrittsverfolgung).
  • Batch-Routen geben ein direkt gestreamtes ZIP-Archiv zurück (mit X-Job-Id-Header) für Tools, die im generischen Batch-Register registriert sind.

Tools-Referenz

Konvertierungs-Presets

Der gemeinsame Katalog enthält 83 dedizierte Konvertierungs-Preset-Endpunkte wie jpg-to-png, mov-to-mp4, m4a-to-mp3, pdf-to-jpg und excel-to-csv. Presets sind vollwertige Tool-Routen:

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

Jedes Preset legt das Ausgabeformat fest und delegiert an ein Basis-Tool wie convert, convert-video, extract-audio, convert-audio, image-to-pdf, pdf-to-image, svg-to-raster oder convert-spreadsheet. Die vollständige Routentabelle und die optionalen Einstellungen finden Sie unter Konvertierungs-Presets.

Grundlagen

Tool-IDNameWichtige Einstellungen
resizeGröße ändernwidth, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, plus 23 Social-Media-Presets
cropZuschneidenleft, top, width, height, unit (px/Prozent)
rotateDrehen & Spiegelnangle, horizontal (bool), vertical (bool)
convertKonvertierenformat (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compressKomprimierenmode (quality/targetSize), quality (1–100), targetSizeKb

Optimierung

Tool-IDNameWichtige Einstellungen
optimize-for-webFür Web optimierenformat (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataMetadaten entfernen-
edit-metadataMetadaten bearbeitentitle, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-renameMassen-Umbenennungpattern (unterstützt {n}, {date}, {original}), startIndex, padding
image-to-pdfBild zu PDFpageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
faviconFavicon-Generatorpadding, backgroundColor, borderRadius - generiert alle Standardgrößen

Anpassungen

Tool-IDNameWichtige Einstellungen
adjust-colorsFarben anpassenbrightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpeningSchärfenmethod (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-colorFarbe ersetzensourceColor, targetColor (Ersatz), makeTransparent, tolerance
color-blindnessFarbenblindheits-SimulationsimulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, Standard "deuteranomaly")
duotoneDuotoneshadow (hex), highlight (hex), intensity (0-100)
pixelateVerpixelnblockSize (2-128), region ({left, top, width, height} für teilweise Verpixelung)
vignetteVignettestrength (0.1-1), color (hex), radius, softness, roundness, centerX, centerY

KI-Tools

Alle KI-Tools laufen auf Ihrer Hardware: standardmäßig auf der CPU oder auf NVIDIA CUDA, wenn eine unterstützte NVIDIA-GPU verfügbar ist. Intel/AMD-iGPU-Beschleunigung über VA-API, Quick Sync oder OpenCL wird für KI-Inferenz derzeit nicht unterstützt. Keine Internetverbindung erforderlich.

Tool-IDNameKI-ModellWichtige Einstellungen
remove-backgroundHintergrund entfernenrembg (BiRefNet / U2-Net)model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscaleBild-HochskalierungRealESRGANscale (2/4), model, faceEnhance, denoise, format, quality
erase-objectObjekt-RadiererLaMa (ONNX)Maske als zweiter Datei-Teil gesendet (Feldname mask), format, quality
ocrOCR / TextextraktionPaddleOCR / Tesseractquality (fast/balanced/best), language, enhance
blur-facesGesichts-/PII-UnschärfeMediaPipeblurRadius, sensitivity
smart-cropSmart CropMediaPipe + 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-enhancementBildverbesserungAnalysebasiertmode (auto/exposure/contrast/color/sharpness), strength
enhance-facesGesichtsverbesserungGFPGAN / CodeFormermodel (gfpgan/codeformer), strength, sensitivity, centerFace
colorizeKI-KolorierungDDColorintensity, model
noise-removalRauschentfernungGestufte Entrauschungtier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removalRote-Augen-EntfernungGesichts-Landmarken + Farbanalysesensitivity, strength
restore-photoFotorestaurierungMehrstufige Pipelinemode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoPassfotoMediaPipe-LandmarkenZweiphasiger Ablauf. Die Analyse verwendet multipart file; die Generierung verwendet JSON mit countryCode, bgColor, printLayout (none/4x6/a4), Landmarken, Bildabmessungen
content-aware-resizeInhaltsbasierte GrößenänderungSeam Carving (caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerPNG-Transparenz-KorrekturBiRefNet HR-Mattingdefringe (0-100), outputFormat (png/webp)
background-replaceHintergrund ersetzenrembg (BiRefNet)backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-backgroundHintergrund weichzeichnenrembg (BiRefNet)intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expandKI-Leinwand-ErweiterungLaMa (Outpainting)extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Wasserzeichen & Overlay

Tool-IDNameWichtige Einstellungen
watermark-textText-Wasserzeichentext, font, fontSize, color, opacity, position, rotation, tile
watermark-imageBild-Wasserzeichenopacity, position, scale - die zweite Datei ist das Wasserzeichen
text-overlayText-Overlaytext, font, fontSize, color, x, y, background, padding, borderRadius
composeBildkompositionx, y, opacity, blend - die zweite Datei wird darübergelegt
meme-generatorMeme-GeneratortemplateId, 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. Unterstützt den Vorlagenmodus (JSON-Body mit templateId) oder den benutzerdefinierten Bildmodus (multipart mit Datei).

Dienstprogramme

Tool-IDNameWichtige Einstellungen
infoBildinformationen- (gibt Breite, Höhe, Format, Größe, Kanäle, hasAlpha, DPI, EXIF zurück)
compareBildvergleichmode (side-by-side/overlay/diff), diffThreshold - die zweite Datei ist das Vergleichsziel
find-duplicatesDuplikate findenthreshold (Abstand des perzeptuellen Hashs, Standard 8) - Mehrfachdatei
color-paletteFarbpalettecount (Anzahl der dominanten Farben), format (hex/rgb)
qr-generateQR-Code-Generatordata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (optionale Datei)
barcode-readBarcode-Leser- (erkennt automatisch QR, EAN, Code128, DataMatrix usw.)
image-to-base64Bild zu Base64format (data-uri/plain), mimeType
html-to-imageHTML zu Bildurl, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramHistogrammscale (linear/log) - gibt RGB-Histogramm-Diagramm + Statistiken pro Kanal zurück
lqip-placeholderLQIP-Platzhalterwidth (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generateBarcode-Generatortext, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). JSON-Body, kein Datei-Upload.

Layout & Komposition

Tool-IDNameWichtige Einstellungen
collageCollage / Rastertemplate (25+ Layouts), gap, backgroundColor, borderRadius - Mehrfachdatei
stitchZusammenfügen / Kombinierendirection (horizontal/vertical/grid), gap, backgroundColor, alignment - Mehrfachdatei
splitBildaufteilungmode (grid/rows/cols), rows, cols, tileWidth, tileHeight
borderRand & Rahmenwidth, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautifyScreenshot verschönernbackgroundType (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-cropKreis-Zuschnittzoom (1-5), offsetX, offsetY, borderWidth, borderColor, background (transparent/hex), outputSize
image-padBild auffüllentarget (16:9/9:16/1:1/4:3/3:4/custom), ratioW, ratioH, background (color/transparent/blur), color (hex), padding (0-50%)
sprite-sheetSprite-Sheetcolumns (1-16), padding, background (hex), format (png/webp/jpeg), quality - Mehrfachdatei (2-64 Bilder)

Format & Konvertierung

Tool-IDNameWichtige Einstellungen
svg-to-rasterSVG zu Rasterformat (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorizeBild zu SVGcolorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-toolsGIF-Toolsaction (resize/optimize/reverse/speed/extract-frames/rotate/add-text), aktionsspezifische Parameter
gif-webpGIF/WebP-Konverterquality (1-100), lossless (bool), resizePercent (10-100)

Video-Tools

Tool-IDNameWichtige Einstellungen
convert-videoVideo konvertierenformat (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-videoVideo komprimierenquality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-videoVideo zuschneidenstartS, endS, precise (bool, bildgenauer Schnitt)
mute-videoVideo stummschalten-
video-to-gifVideo zu GIFfps (1-30), width, startS, durationS (max. 60s)
resize-videoVideo-Größe ändernwidth, height, preset (custom/2160p/1440p/1080p/720p/480p/360p)
crop-videoVideo zuschneiden (Crop)width, height, x, y
rotate-videoVideo drehentransform (cw90/ccw90/180/hflip/vflip)
change-fpsFPS ändernfps (1-120)
video-colorVideo-Farbebrightness, contrast, saturation, gamma
video-speedVideo-Geschwindigkeitfactor (0.25-4), keepPitch (bool)
reverse-videoVideo umkehren- (max. 5 Minuten)
video-loudnormAudio normalisieren- (EBU R128)
aspect-padSeitenverhältnis auffüllentarget (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-padUnschärfe-Auffüllungtarget (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-videoVideo mit Wasserzeichentext, position, fontSize, opacity, color
stabilize-videoVideo stabilisierensmoothing (5-60, in Frames)
gif-to-videoGIF zu Videoformat (mp4/webm/mov)
video-to-webpVideo zu WebPfps, width, quality, loop (bool)
video-to-framesVideo zu Framesmode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videosVideos zusammenführen- (Mehrfachdatei, auf die Auflösung des ersten Videos normalisiert)
replace-audioAudio ersetzen- (Video- + Audiodatei, zwei Dateien)
burn-subtitlesUntertitel einbrennenfontSize (8-72) - Video- + Untertiteldatei
embed-subtitlesUntertitel einbettenlanguage (ISO-639-2/B-Code) - Video- + Untertiteldatei
extract-subtitlesUntertitel extrahieren- (gibt SRT aus)
images-to-videoBilder zu VideosecondsPerImage (0.5-10), resolution (1080p/720p/square), fps - Mehrfachdatei
video-metadataVideo-Metadaten bereinigen-
auto-subtitlesAuto-Untertitel (KI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audioAudio extrahierenformat (mp3/wav/m4a/ogg)

Audio-Tools

Tool-IDNameWichtige Einstellungen
convert-audioAudio konvertierenformat (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audioAudio zuschneidenstartS, endS
volume-adjustLautstärke anpassengainDb (-30 bis 30)
normalize-audioAudio normalisieren- (EBU R128, -16 LUFS)
fade-audioAudio ein-/ausblendenfadeInS (0-30), fadeOutS (0-30)
reverse-audioAudio umkehren-
audio-speedAudio-Geschwindigkeitfactor (0.25-4)
pitch-shiftTonhöhe verschiebensemitones (-12 bis 12)
audio-channelsAudio-Kanälemode (stereo-to-mono/mono-to-stereo/swap)
silence-removalStille entfernenthresholdDb (-80 bis -20), minSilenceS (0.1-5)
noise-reductionRauschunterdrückungstrength (light/medium/strong)
merge-audioAudio zusammenführenformat (mp3/wav/flac/m4a) - Mehrfachdatei
split-audioAudio aufteilenmode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-makerKlingelton-ErstellerstartS, durationS (1-30)
waveform-imageWellenform-Bildwidth, height, color (hex)
audio-metadataAudio-Metadatenstrip (bool), title, artist, album
transcribe-audioAudio transkribieren (KI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Dokument-Tools

Tool-IDNameWichtige Einstellungen
merge-pdfPDFs zusammenführen- (Mehrfachdatei, bis zu 20 PDFs)
split-pdfPDF aufteilenmode (range/every), range, everyN (1-500)
compress-pdfPDF komprimierenmode (quality/targetSize), quality (1-100), targetSizeKb
rotate-pdfPDF drehenangle (90/180/270), range (Seitenbereich)
extract-pagesSeiten extrahierenrange (qpdf-Syntax, z.B. "1-5,8,10-z")
remove-pagesSeiten entfernenpages (zu entfernender qpdf-Bereich)
organize-pdfPDF organisierenorder (qpdf-Seitenreihenfolge, z.B. "3,1,2,5-z")
protect-pdfPDF schützenuserPassword, ownerPassword (AES-256)
unlock-pdfPDF entsperrenpassword
repair-pdfPDF reparieren-
linearize-pdfPDF für Web optimieren- (linearisieren für schnelle Web-Anzeige)
grayscale-pdfPDF in Graustufen-
pdfa-convertPDF/A konvertieren- (Archiv-PDF/A-2)
crop-pdfPDF zuschneidenmargin (0-2000 Punkte)
nup-pdfN-up PDFperSheet (2/3/4/8/9/12/16)
booklet-pdfBroschüren-PDFperSheet (2/4/6/8)
watermark-pdfPDF mit Wasserzeichentext, position, fontSize, opacity, rotation
pdf-page-numbersPDF-Seitenzahlenposition (bl/bc/br/tl/tc/tr), fontSize
flatten-pdfPDF reduzieren (Flatten)- (fixiert Formulare und Anmerkungen)
redact-pdfPDF schwärzen (Redact)terms (string[]), caseSensitive (bool)
sign-pdfPDF signierenBenutzerdefinierte multipart-Route mit PDF file, Signaturdateien sig0, sig1 und placements JSON-Array
pdf-to-textPDF zu Text-
pdf-to-wordPDF zu Word-
pdf-metadataPDF-Metadatentitle, author, subject, keywords
convert-documentDokument konvertierenformat (docx/odt/rtf/txt)
convert-presentationPräsentation konvertierenformat (pptx/odp)
convert-spreadsheetTabellenkalkulation konvertierenformat (xlsx/ods/csv)
excel-to-pdfExcel zu PDF-
word-to-pdfWord zu PDF-
powerpoint-to-pdfPowerPoint zu PDF-
html-to-pdfHTML zu PDF- (Remote-Ressourcen deaktiviert)
markdown-to-docxMarkdown zu Word-
markdown-to-htmlMarkdown zu HTML-
markdown-to-pdfMarkdown zu PDF- (Remote-Ressourcen deaktiviert)
epub-convertEPUB konvertierenformat (pdf/docx/html/md)
to-epubZu EPUB konvertieren- (akzeptiert .docx, .md, .html, .txt)
ocr-pdfPDF-OCR (KI)quality (fast/balanced/best), language (auto/en/de/fr/es/zh/ja/ko), pages
pdf-to-imagePDF zu Bildpages (all/range), format, dpi, quality
pdf-to-jpgPDF zu JPGpages, dpi, quality, colorMode
pdf-to-pngPDF zu PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF zu TIFFpages, dpi, quality, colorMode

Datei-Tools

Tool-IDNameWichtige Einstellungen
chart-makerDiagramm-Erstellerkind (bar/line/pie), title, width, height
csv-excelCSV zu Excelsheet (Arbeitsblattnummer für XLSX-Eingabe) - bidirektional
csv-jsonCSV zu JSONpretty (bool) - bidirektional
json-xmlJSON zu XMLpretty (bool) - bidirektional
split-csvCSV aufteilenrowsPerFile (1-1000000), keepHeader (bool)
merge-csvsCSVs zusammenführen- (Mehrfachdatei, übereinstimmende Spalten)
yaml-jsonYAML / JSON- (bidirektional)
xml-to-csvXML zu CSV- (findet automatisch sich wiederholende Elemente)
excel-to-csvExcel zu CSVdediziertes Konvertierungs-Preset, gestützt auf convert-spreadsheet
create-zipZIP erstellen- (Mehrfachdatei, 2-50 Dateien)
extract-zipZIP extrahieren- (Bomben-geschützt)

HTML zu Bild

Eine Webseite als Bild erfassen. Anders als andere Tools akzeptiert dieser Endpunkt application/json statt multipart-Formulardaten (kein Datei-Upload erforderlich).

Endpunkt: POST /api/v1/tools/image/html-to-image

Content-Type: application/json

ParameterTypStandardBeschreibung
urlstring(erforderlich)Zu erfassende URL (nur http/https)
formatstring"png"Ausgabeformat: jpg, png, webp
qualitynumber90Qualität 1-100 (nur JPG/WebP)
fullPagebooleanfalseVollständige scrollbare Seite erfassen
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280Benutzerdefinierte Viewport-Breite 320-3840
viewportHeightnumber720Benutzerdefinierte Viewport-Höhe 320-2160

Beispiel:

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"}'

Antwort:

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

Tool-Unterrouten

Einige Tools stellen zusätzliche Endpunkte über die Standard-POST /api/v1/tools/<section>/<toolId> hinaus bereit:

MethodePfadBeschreibung
GET/api/v1/tools/popularBeliebte Tool-IDs zurückgeben, mit Rückfall auf eine kuratierte Standardliste, wenn Nutzungsdaten spärlich sind
POST/api/v1/tools/image/remove-background/effectsHintergrundeffekte (color/gradient/blur/shadow) anwenden, ohne die KI erneut auszuführen. Verwendet die zwischengespeicherte Maske aus der ursprünglichen Entfernung.
POST/api/v1/tools/image/edit-metadata/inspectVorhandene EXIF/IPTC/XMP-Metadaten aus einem Bild lesen
POST/api/v1/tools/image/strip-metadata/inspectMetadatenfelder vor dem Entfernen prüfen
POST/api/v1/tools/image/passport-photo/analyzePhase 1: KI-Gesichtserkennung + Hintergrundentfernung. Gibt Gesichts-Landmarken und zwischengespeicherte Daten zurück.
POST/api/v1/tools/image/passport-photo/generatePhase 2: Zuschneiden, Größe ändern und Kacheln mit zwischengespeicherter Analyse. Keine erneute KI-Ausführung.
POST/api/v1/tools/image/gif-tools/infoGIF-Metadaten abrufen (Frame-Anzahl, Abmessungen, Dauer)
POST/api/v1/tools/pdf/pdf-to-image/infoPDF-Metadaten abrufen (Seitenanzahl, Abmessungen)
POST/api/v1/tools/pdf/pdf-to-image/previewEine Vorschau einer bestimmten PDF-Seite erzeugen
POST/api/v1/tools/pdf/pdf-to-jpg/infoPDF-Metadaten für das dedizierte JPG-Preset abrufen
POST/api/v1/tools/pdf/pdf-to-jpg/previewEine JPG-Preset-PDF-Seitenvorschau erzeugen
POST/api/v1/tools/pdf/pdf-to-png/infoPDF-Metadaten für das dedizierte PNG-Preset abrufen
POST/api/v1/tools/pdf/pdf-to-png/previewEine PNG-Preset-PDF-Seitenvorschau erzeugen
POST/api/v1/tools/pdf/pdf-to-tiff/infoPDF-Metadaten für das dedizierte TIFF-Preset abrufen
POST/api/v1/tools/pdf/pdf-to-tiff/previewEine TIFF-Preset-PDF-Seitenvorschau erzeugen
POST/api/v1/tools/image/svg-to-raster/batchMehrere SVGs im Stapel in Raster konvertieren
POST/api/v1/tools/image/image-enhancement/analyzeBildqualität analysieren und Verbesserungsempfehlungen zurückgeben
POST/api/v1/tools/image/optimize-for-web/previewLeichtgewichtige Vorschau für die Live-Parameteranpassung. Gibt ein optimiertes Bild mit Größen-Headern zurück.

Stapelverarbeitung

Wenden Sie ein generisches batch-fähiges Tool auf mehrere Dateien gleichzeitig an. Gibt ein ZIP-Archiv zurück. Benutzerdefinierte Mehrfachdatei- oder mehrstufige Routen wie PDF-Signierung, PDF-OCR und PDF-zu-Bild-Preset-Routen verwenden ihren eigenen Endpunkt-Vertrag anstelle der generischen /batch-Route.

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}'

Die Nebenläufigkeit wird durch CONCURRENT_JOBS gesteuert (Standard: automatisch anhand der CPU-Kerne erkannt). MAX_BATCH_SIZE begrenzt die Anzahl der Dateien pro Stapel (Standard: 100; 0 für unbegrenzt setzen).

Pipelines

Eine Pipeline ausführen

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}}]}'

Die Ausgabe jedes Schritts ist die Eingabe des nächsten Schritts. Pipelines erlauben standardmäßig 20 Schritte, konfigurierbar über MAX_PIPELINE_STEPS. Setzen Sie MAX_PIPELINE_STEPS=0, um das Limit aufzuheben.

Pipelines speichern und verwalten

MethodePfadBeschreibung
POST/api/v1/pipeline/saveEine benannte Pipeline speichern (name, description, steps[])
GET/api/v1/pipeline/listGespeicherte Pipelines auflisten (Admins sehen alle; Benutzer sehen eigene)
DELETE/api/v1/pipeline/:idLöschen (Eigentümer oder Admin)
GET/api/v1/pipeline/toolsTool-IDs auflisten, die für Pipeline-Schritte gültig sind

Fortschrittsverfolgung

Lang laufende Jobs, eingereihte Tools, Batch-Jobs und Pipelines geben Echtzeit-Fortschritt über Server-Sent Events aus. Der Fortschritts-Stream ist öffentlich und wird über die Job-ID gekennzeichnet, sodass Clients keinen Authorization-Header senden müssen, um ihn zu lesen.

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

Ereignisformat:

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":[]}

Sie können den Abbruch eines eingereihten oder laufenden Jobs mit POST /api/v1/jobs/:jobId/cancel anfordern. Die Antwort ist {"canceled":true|false}.

Dateibibliothek

Dauerhafte Dateispeicherung mit Versionsverlauf.

MethodePfadBeschreibung
POST/api/v1/uploadDateien in den Arbeitsbereich hochladen (temporäre Verarbeitung)
POST/api/v1/files/uploadDateien in die dauerhafte Dateibibliothek hochladen
POST/api/v1/files/save-resultEin Tool-Verarbeitungsergebnis als neue Dateiversion speichern
GET/api/v1/filesGespeicherte Dateien auflisten (paginiert, mit Suche)
GET/api/v1/files/:idDateimetadaten + Versionskette abrufen
GET/api/v1/files/:id/downloadDatei herunterladen
GET/api/v1/files/:id/thumbnail300px-JPEG-Thumbnail abrufen
DELETE/api/v1/filesDateien und ihre Versionsketten massenhaft löschen (Body: { ids: [...] })
POST/api/v1/fetch-urlsRemote-URLs in den Arbeitsbereich abrufen für URL-basierte Importe
POST/api/v1/previewEine browserkompatible WebP-Vorschau erzeugen (für HEIC/HEIF/RAW-Formate)
GET/api/v1/files/:id/previewEine zwischengespeicherte oder erzeugte browserkompatible Vorschau für eine gespeicherte PDF-, Office-Dokument-, Video- oder Audiodatei streamen
POST/api/v1/preview/generateEine On-Demand-MP4- oder -MP3-Vorschau für eine hochgeladene Mediendatei erzeugen, ohne sie zuerst zu speichern
GET/api/v1/download/:jobId/:filenameEine verarbeitete Datei aus einem Arbeitsbereich herunterladen

Um ein Tool-Ergebnis automatisch in der Bibliothek zu speichern, fügen Sie fileId als multipart-Formularfeld hinzu, das auf eine vorhandene Bibliotheksdatei verweist. Das verarbeitete Ergebnis wird als neue Version gespeichert.

API-Schlüssel-Verwaltung

MethodePfadZugriffBeschreibung
POST/api/v1/api-keysAuthNeuen Schlüssel generieren - einmal angezeigt
GET/api/v1/api-keysAuthSchlüssel auflisten (Name, id, lastUsedAt - nicht der Rohschlüssel)
DELETE/api/v1/api-keys/:idAuthSchlüssel löschen

Teams

MethodePfadZugriffBeschreibung
GET/api/v1/teamsAdmin (teams:manage)Teams auflisten
POST/api/v1/teamsAdmin (teams:manage)Team erstellen
PUT/api/v1/teams/:idAdmin (teams:manage)Team umbenennen
DELETE/api/v1/teams/:idAdmin (teams:manage)Team löschen (Standard-Team oder Teams mit Mitgliedern können nicht gelöscht werden)

Einstellungen

Laufzeit-Schlüssel-Wert-Konfiguration (von jedem authentifizierten Benutzer lesbar, nur vom Admin schreibbar).

MethodePfadBeschreibung
GET/api/v1/settingsAlle Einstellungen abrufen
PUT/api/v1/settingsEinstellungen massenhaft aktualisieren (JSON-Body mit Schlüssel-Wert-Paaren)
GET/api/v1/settings/:keyEine bestimmte Einstellung nach Schlüssel abrufen

Bekannte Schlüssel: disabledTools (JSON-Array von Tool-IDs), enableExperimentalTools (bool-String), loginAttemptLimit (Zahl).

Einstellungen (Preferences)

Benutzerspezifische Einstellungen sind von den Instanzeinstellungen getrennt. Jeder authentifizierte Benutzer kann seine eigene Einstellungs-Map lesen und aktualisieren.

MethodePfadBeschreibung
GET/api/v1/preferencesDie Einstellungen des aktuellen Benutzers als { "preferences": { ... } } abrufen
PUT/api/v1/preferencesEinen oder mehrere Einstellungsschlüssel für den aktuellen Benutzer per Upsert setzen

Rollen

Benutzerdefinierte Rollenverwaltung mit granularen Berechtigungen.

MethodePfadZugriffBeschreibung
GET/api/v1/rolesAdmin (audit:read)Alle Rollen mit Benutzeranzahl auflisten
POST/api/v1/rolesAdmin (security:manage)Eine benutzerdefinierte Rolle erstellen (name, description, permissions)
PUT/api/v1/roles/:idAdmin (security:manage)Eine benutzerdefinierte Rolle aktualisieren (integrierte Rollen können nicht geändert werden)
DELETE/api/v1/roles/:idAdmin (security:manage)Eine benutzerdefinierte Rolle löschen (integrierte Rollen können nicht gelöscht werden; betroffene Benutzer fallen auf die Rolle user zurück)

Verfügbare Berechtigungen (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.

Audit-Log

Nur für Admins verfügbarer Endpunkt zur Überprüfung sicherheitsrelevanter Aktionen.

MethodePfadZugriffBeschreibung
GET/api/v1/audit-logAdmin (audit:read)Paginiertes Audit-Log mit optionalen Filtern

Abfrageparameter:

ParameterBeschreibung
pageSeitennummer (Standard: 1)
limitEinträge pro Seite (Standard: 50, max.: 100)
actionNach Aktionstyp filtern (z.B. ROLE_CREATED, ROLE_DELETED)
ipNach Quell-IP-Adresse filtern
fromEinträge nach diesem ISO-8601-Datum filtern
toEinträge vor diesem ISO-8601-Datum filtern

Analytics

MethodePfadZugriffBeschreibung
GET/api/v1/config/analyticsÖffentlichDie effektive Analytics-Konfiguration abrufen (PostHog-Schlüssel, Sentry-DSN, Abtastrate). Schlüssel, DSN und Instanz-ID sind leer, wenn Analytics deaktiviert ist, entweder durch das Kompilierzeit-Baking oder die Instanzeinstellung analyticsEnabled.
POST/api/v1/feedbackAuthExplizites Benutzer-Feedback an das konfigurierte PostHog-Projekt als feedback_submitted übermitteln. Die Route beachtet das Analytics-Gate, begrenzt die Übermittlungsrate, entfernt Kontaktfelder, sofern contactOk nicht true ist, und akzeptiert niemals Dateiinhalte, Dateinamen, Upload-Pfade oder rohen privaten Fehlertext. Wenn Analytics deaktiviert ist, gibt sie { "ok": true, "accepted": false } zurück.
PUT/api/v1/settingsAdmin (settings:write)Den instanzweiten Opt-out setzen. Senden Sie einen JSON-Body { "analyticsEnabled": "false" }, um Analytics für alle zu deaktivieren, oder "true", um es wieder zu aktivieren.

Features / KI-Bundles

KI-Feature-Bundles verwalten (KI-Modellpakete in der Docker-Umgebung installieren/deinstallieren). Bevorzugen Sie den Tool-Level-Installationsendpunkt, wenn Sie ein Tool aus benutzerdefinierter Automatisierung aktivieren: Einige KI-Tools benötigen mehr als ein gemeinsames Bundle, und dieser Endpunkt überspringt bereits installierte Bundles und reiht nur die fehlenden ein.

MethodePfadZugriffBeschreibung
GET/api/v1/featuresAuthAlle Feature-Bundles und ihren Installationsstatus auflisten
POST/api/v1/admin/features/:bundleId/installAdmin (features:manage)Ein Feature-Bundle installieren (asynchron, gibt jobId zur Fortschrittsverfolgung zurück)
POST/api/v1/admin/tools/:toolId/features/installAdmin (features:manage)Jedes von einem Tool benötigte Bundle installieren; gibt den Status queued/skipped pro Bundle zurück
POST/api/v1/admin/features/:bundleId/uninstallAdmin (features:manage)Ein Feature-Bundle deinstallieren und Modelldateien bereinigen
GET/api/v1/admin/features/disk-usageAdmin (features:manage)Den gesamten Speicherplatzverbrauch der KI-Modelle abrufen
POST/api/v1/admin/features/importAdmin (features:manage)Ein Offline-KI-Bundle-Archiv importieren

Admin-Operationen

Operative Endpunkte für Observability, Support, Nutzungsberichte und Backup-Status.

MethodePfadZugriffBeschreibung
GET/api/v1/admin/log-levelAdmin (settings:write)Das aktuelle Laufzeit-Log-Level lesen
POST/api/v1/admin/log-levelAdmin (settings:write)Das Laufzeit-Log-Level ändern (fatal, error, warn, info, debug, trace oder silent)
GET/api/v1/metricsAdmin (system:health)Prometheus-Metriken im Textformat
GET/api/v1/admin/support-bundleAdmin (system:health)Ein redigiertes diagnostisches Support-Bundle-ZIP herunterladen
GET/api/v1/admin/usageAdmin (audit:read)Daten des Nutzungs-Dashboards, mit optionalem Abfrageparameter days
GET/api/v1/admin/backup-statusAdmin (system:health)Metadaten und Aktualitätsstatus des letzten Backups lesen
POST/api/v1/admin/backup-statusAdmin (system:health)Ein abgeschlossenes Backup erfassen (type, optional sizeBytes, optional notes)

Enterprise-APIs

Diese Routen sind durch das zugehörige Enterprise-Feature lizenzgesteuert. Sie erfordern weiterhin die aufgeführte SnapOtter-Berechtigung.

MethodePfadZugriffBeschreibung
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Audit-Einträge als JSON oder CSV mit Filtern exportieren
GET/api/v1/enterprise/config/exportAdmin (system:health)Redigierte Instanzkonfiguration, benutzerdefinierte Rollen und Teams exportieren
POST/api/v1/enterprise/config/importAdmin (system:health)Konfiguration importieren, mit optionalem Probelauf
GET/api/v1/enterprise/ip-allowlistAdmin (security:manage)Konfigurierte CIDR-Erlaubnisliste lesen
PUT/api/v1/enterprise/ip-allowlistAdmin (security:manage)CIDR-Erlaubnisliste mit Selbstsperrungs-Prävention aktualisieren
GET/api/v1/enterprise/legal-holdAdmin (compliance:manage)Legal Holds für Benutzer und Teams auflisten
PUT/api/v1/enterprise/legal-holdAdmin (compliance:manage)Einen Legal Hold auf einen Benutzer oder ein Team anwenden oder aufheben
POST/api/v1/enterprise/scim/tokenAdmin (users:manage)Ein SCIM-Bearer-Token generieren, einmal zurückgegeben
DELETE/api/v1/enterprise/scim/tokenAdmin (users:manage)Das aktuelle SCIM-Bearer-Token widerrufen
GET/api/v1/enterprise/siem/configAdmin (webhooks:manage)SIEM-Weiterleitungskonfiguration lesen
PUT/api/v1/enterprise/siem/configAdmin (webhooks:manage)SIEM-Weiterleitungskonfiguration aktualisieren
GET/api/v1/enterprise/webhooksAdmin (webhooks:manage)Webhook-Ziele auflisten
POST/api/v1/enterprise/webhooksAdmin (webhooks:manage)Ein Webhook-Ziel erstellen
PUT/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Ein Webhook-Ziel aktualisieren
DELETE/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Ein Webhook-Ziel löschen
POST/api/v1/enterprise/webhooks/:index/testAdmin (webhooks:manage)Eine Test-Webhook-Nutzlast senden
POST/api/v1/enterprise/users/:id/exportAdmin (compliance:manage)Einen GDPR-Benutzerexport-Job starten
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin (compliance:manage)GDPR-Exportstatus und Download-URL lesen
DELETE/api/v1/enterprise/users/:id/purgeAdmin (compliance:manage)Die Daten eines Benutzers nach Bestätigung dauerhaft löschen
DELETE/api/v1/enterprise/teams/:id/purgeAdmin (compliance:manage)Die Daten eines Teams nach Bestätigung dauerhaft löschen
GET/api/v1/admin/versionAdmin (system:health)App-, Build-, Node- und Schema-Versionsmetadaten lesen
GET/api/v1/admin/migrations/pendingAdmin (system:health)Verpackte Migrationen mit angewendeten Migrationen vergleichen
GET/api/v1/admin/upgrade-checkAdmin (system:health)Upgrade-Bereitschaftsprüfungen ausführen

SCIM 2.0

SCIM-Discovery-Endpunkte sind öffentlich. Benutzer- und Gruppenendpunkte erfordern das oben generierte SCIM-Bearer-Token.

MethodePfadZugriffBeschreibung
GET/api/v1/scim/v2/ServiceProviderConfigÖffentlichSCIM-Server-Fähigkeiten
GET/api/v1/scim/v2/SchemasÖffentlichSCIM-Schema-Discovery
GET/api/v1/scim/v2/ResourceTypesÖffentlichSCIM-Ressourcentyp-Discovery
GET/api/v1/scim/v2/UsersSCIM-TokenBenutzer auflisten, mit optionalem SCIM-Filter
POST/api/v1/scim/v2/UsersSCIM-TokenEinen Benutzer erstellen
GET/api/v1/scim/v2/Users/:idSCIM-TokenEinen Benutzer abrufen
PUT/api/v1/scim/v2/Users/:idSCIM-TokenEinen Benutzer ersetzen
DELETE/api/v1/scim/v2/Users/:idSCIM-TokenEinen Benutzer soft deaktivieren
GET/api/v1/scim/v2/GroupsSCIM-TokenTeams als SCIM-Gruppen auflisten
POST/api/v1/scim/v2/GroupsSCIM-TokenEin Team erstellen
GET/api/v1/scim/v2/Groups/:idSCIM-TokenEin Team abrufen
PUT/api/v1/scim/v2/Groups/:idSCIM-TokenEin Team und die Gruppenmitgliedschaft ersetzen
DELETE/api/v1/scim/v2/Groups/:idSCIM-TokenEin Team löschen

Meme-Vorlagen

Unterstützende API für das Meme-Generator-Tool.

MethodePfadZugriffBeschreibung
GET/api/v1/meme-templatesAuthAlle verfügbaren Meme-Vorlagen mit Textfeld-Positionen auflisten
GET/api/v1/meme-templates/full/:filenameAuthVollständiges Vorlagenbild bereitstellen
GET/api/v1/meme-templates/thumbs/:filenameAuthVorlagen-Thumbnail bereitstellen
GET/api/v1/meme-templates/fonts/:filenameAuthSchriftdatei für das Rendering von Meme-Text bereitstellen

Fehlerantworten

Alle Fehler geben JSON zurück:

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
StatusBedeutung
400Ungültige Anfrage / Validierung fehlgeschlagen
401Nicht authentifiziert
403Unzureichende Berechtigungen
404Ressource nicht gefunden
413Datei zu groß (siehe MAX_UPLOAD_SIZE_MB)
422Verarbeitung nach der Validierung fehlgeschlagen
429Ratenbegrenzt (siehe RATE_LIMIT_PER_MIN)
501Erforderliches KI-Feature-Bundle ist nicht installiert (FEATURE_NOT_INSTALLED)
500Interner Serverfehler