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

REST API-referentie

Interactieve API-documentatie met voorbeelden van requests en responses is beschikbaar op http://localhost:1349/api/docs.

Machineleesbare specificaties:

  • /api/v1/openapi.yaml - OpenAPI 3.1-spec
  • /llms.txt - LLM-vriendelijke samenvatting
  • /llms-full.txt - Volledige LLM-vriendelijke documentatie

Authenticatie

Alle endpoints vereisen authenticatie, tenzij AUTH_ENABLED=false.

Sessietoken

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

Sessies verlopen na 7 dagen (configureerbaar via SESSION_DURATION_HOURS).

API-sleutels

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

Sleutels krijgen het voorvoegsel si_ en worden opgeslagen als scrypt-hashes. De ruwe sleutel wordt eenmaal getoond en is daarna nooit meer op te vragen.

Auth-endpoints

MethodePadToegangBeschrijving
POST/api/auth/loginPubliekInloggen, sessietoken ophalen
POST/api/auth/logoutAuthHuidige sessie beëindigen
GET/api/auth/sessionAuthHuidige sessie valideren
POST/api/auth/change-passwordAuthEigen wachtwoord wijzigen (maakt alle andere sessies + API-sleutels ongeldig)
GET/api/auth/usersAdminAlle gebruikers weergeven
POST/api/auth/registerAdminEen nieuwe gebruiker aanmaken
PUT/api/auth/users/:idAdminRol of team van gebruiker bijwerken
POST/api/auth/users/:id/reset-passwordAdminWachtwoord van gebruiker opnieuw instellen
DELETE/api/auth/users/:idAdminEen gebruiker verwijderen
GET/api/v1/config/authPubliekControleren of authenticatie is ingeschakeld ({ authEnabled: bool })
POST/api/auth/mfa/enrollAuthTOTP MFA-registratie starten. Vereist de enterprise-functie mfa
POST/api/auth/mfa/verifyAuthMFA-registratie bevestigen met een TOTP-code
POST/api/auth/mfa/completePubliekEen openstaande MFA-inlogverificatie voltooien
POST/api/auth/mfa/disableAuthMFA uitschakelen voor de huidige gebruiker
POST/api/auth/users/:id/mfa/resetAdmin (users:manage)MFA opnieuw instellen voor een gebruiker
GET/api/auth/oidc/loginPubliekOIDC-login starten wanneer OIDC is ingeschakeld
GET/api/auth/oidc/callbackPubliekOIDC-autorisatiecallback
GET/api/auth/saml/metadataPubliekSAML SP-metadata-XML wanneer SAML is ingeschakeld
GET/api/auth/saml/loginPubliekSAML-login starten
POST/api/auth/saml/callbackPubliekSAML assertion consumer service

Wanneer MFA is ingeschakeld voor een gebruiker, retourneert POST /api/auth/login een {"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false} in plaats van een sessietoken. Stuur die mfaToken samen met een TOTP- of herstelcode naar /api/auth/mfa/complete.

Permissies

PermissieAdminGebruiker
Tools gebruiken
Eigen bestanden/pipelines/API-sleutels
Bestanden/pipelines/sleutels van alle gebruikers bekijken-
Instellingen schrijven-
Gebruikers & teams beheren-
Branding beheren-

Health check

MethodePadToegangBeschrijving
GET/api/v1/healthPubliekBasale health check. Retourneert {"status":"healthy","version":"..."} met 200, of {"status":"unhealthy"} met 503 als de database onbereikbaar is.
GET/api/v1/readyzPubliekReadiness-probe. Controleert PostgreSQL, Redis, schijfruimte en S3 indien geconfigureerd. Retourneert 503 wanneer de instance geen verkeer zou moeten ontvangen.
GET/api/v1/admin/healthAdmin (system:health)Gedetailleerde diagnostiek, inclusief uptime, opslagmodus, databasestatus, queue-status en GPU-beschikbaarheid.

Tools gebruiken

Elke tool volgt hetzelfde patroon:

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> is een van image, video, audio, pdf of files.

  • Uploaden gebeurt met multipart/form-data.
  • settings is een JSON-string met tool-specifieke opties.
  • clientJobId is een optioneel formulierveld voor door de aanroeper aangeleverde voortgangscorrelatie.
  • fileId is een optioneel formulierveld dat verwijst naar een bestaand item in de bestandsbibliotheek. Wanneer aanwezig, wordt de verwerkte uitvoer opgeslagen als een nieuwe versie en bevat de response savedFileId.
  • Snelle tools retourneren meestal 200 JSON: {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}. Haal het verwerkte bestand op via downloadUrl.
  • Elke tool in de wachtrij kan 202 JSON retourneren als deze langlopend is of het synchrone wachtvenster overschrijdt: {"jobId":"...","async":true}. Verbind met SSE voor voortgang en download bij voltooiing (zie Voortgang volgen).
  • Batch-routes retourneren een ZIP-archief dat rechtstreeks wordt gestreamd (met X-Job-Id-header) voor tools die zijn geregistreerd in het generieke batchregister.

Tools-referentie

Conversiepresets

De gedeelde catalogus bevat 83 speciale conversiepreset-endpoints zoals jpg-to-png, mov-to-mp4, m4a-to-mp3, pdf-to-jpg en excel-to-csv. Presets zijn eersteklas tool-routes:

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

Elke preset vergrendelt het uitvoerformaat en delegeert naar een basistool zoals convert, convert-video, extract-audio, convert-audio, image-to-pdf, pdf-to-image, svg-to-raster of convert-spreadsheet. Zie Conversiepresets voor de volledige routetabel en optionele instellingen.

Essentials

Tool-IDNaamBelangrijkste instellingen
resizeFormaat wijzigenwidth, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, plus 23 social media-presets
cropBijsnijdenleft, top, width, height, unit (px/percent)
rotateRoteren & spiegelenangle, horizontal (bool), vertical (bool)
convertConverterenformat (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compressComprimerenmode (quality/targetSize), quality (1–100), targetSizeKb

Optimalisatie

Tool-IDNaamBelangrijkste instellingen
optimize-for-webOptimaliseren voor webformat (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataMetadata verwijderen-
edit-metadataMetadata bewerkentitle, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-renameBulk hernoemenpattern (ondersteunt {n}, {date}, {original}), startIndex, padding
image-to-pdfAfbeelding naar PDFpageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
faviconFavicon-generatorpadding, backgroundColor, borderRadius - genereert alle standaardformaten

Aanpassingen

Tool-IDNaamBelangrijkste instellingen
adjust-colorsKleuren aanpassenbrightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpeningVerscherpenmethod (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-colorKleur vervangensourceColor, targetColor (vervanging), makeTransparent, tolerance
color-blindnessKleurenblindheidssimulatiesimulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, standaard "deuteranomaly")
duotoneDuotoneshadow (hex), highlight (hex), intensity (0-100)
pixelatePixelerenblockSize (2-128), region ({left, top, width, height} voor gedeeltelijke pixelering)
vignetteVignetstrength (0.1-1), color (hex), radius, softness, roundness, centerX, centerY

AI-tools

Alle AI-tools draaien op je eigen hardware: standaard op CPU, of op NVIDIA CUDA wanneer een ondersteunde NVIDIA-GPU beschikbaar is. Intel/AMD-iGPU-versnelling via VA-API, Quick Sync of OpenCL wordt momenteel niet ondersteund voor AI-inferentie. Geen internet vereist.

Tool-IDNaamAI-modelBelangrijkste instellingen
remove-backgroundAchtergrond verwijderenrembg (BiRefNet / U2-Net)model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscaleAfbeelding upscalenRealESRGANscale (2/4), model, faceEnhance, denoise, format, quality
erase-objectObjectgumLaMa (ONNX)Masker verzonden als tweede bestandsdeel (veldnaam mask), format, quality
ocrOCR / TekstextractiePaddleOCR / Tesseractquality (fast/balanced/best), language, enhance
blur-facesGezicht / PII vervagenMediaPipeblurRadius, sensitivity
smart-cropSlim bijsnijdenMediaPipe + 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-enhancementAfbeelding verbeterenOp analyse gebaseerdmode (auto/exposure/contrast/color/sharpness), strength
enhance-facesGezicht verbeterenGFPGAN / CodeFormermodel (gfpgan/codeformer), strength, sensitivity, centerFace
colorizeAI-inkleuringDDColorintensity, model
noise-removalRuis verwijderenGetrapte ruisonderdrukkingtier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removalRode ogen verwijderenGezichtslandmark + kleuranalysesensitivity, strength
restore-photoFotorestauratieMeerstaps-pipelinemode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoPasfotoMediaPipe-landmarksTweefasige flow. Analyse gebruikt multipart file; genereren gebruikt JSON met countryCode, bgColor, printLayout (none/4x6/a4), landmarks, afbeeldingsafmetingen
content-aware-resizeContent-Aware ResizeSeam carving (caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerPNG-transparantieherstellerBiRefNet HR-mattingdefringe (0-100), outputFormat (png/webp)
background-replaceAchtergrond vervangenrembg (BiRefNet)backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-backgroundAchtergrond vervagenrembg (BiRefNet)intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expandAI-canvas uitbreidenLaMa (outpainting)extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Watermerk & overlay

Tool-IDNaamBelangrijkste instellingen
watermark-textTekstwatermerktext, font, fontSize, color, opacity, position, rotation, tile
watermark-imageAfbeeldingswatermerkopacity, position, scale - het tweede bestand is het watermerk
text-overlayTekstoverlaytext, font, fontSize, color, x, y, background, padding, borderRadius
composeAfbeeldingscompositiex, y, opacity, blend - het tweede bestand wordt bovenop gelegd
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. Ondersteunt sjabloonmodus (JSON-body met templateId) of aangepaste afbeeldingsmodus (multipart met bestand).

Hulpmiddelen

Tool-IDNaamBelangrijkste instellingen
infoAfbeeldingsinfo- (retourneert width, height, format, size, channels, hasAlpha, DPI, EXIF)
compareAfbeeldingen vergelijkenmode (side-by-side/overlay/diff), diffThreshold - het tweede bestand is het vergelijkingsdoel
find-duplicatesDuplicaten zoekenthreshold (perceptuele hash-afstand, standaard 8) - meerdere bestanden
color-paletteKleurenpaletcount (aantal dominante kleuren), format (hex/rgb)
qr-generateQR-codegeneratordata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (optioneel bestand)
barcode-readBarcodelezer- (detecteert automatisch QR, EAN, Code128, DataMatrix, enz.)
image-to-base64Afbeelding naar Base64format (data-uri/plain), mimeType
html-to-imageHTML naar afbeeldingurl, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramHistogramscale (linear/log) - retourneert een RGB-histogramgrafiek + statistieken per kanaal
lqip-placeholderLQIP-placeholderwidth (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generateBarcodegeneratortext, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). JSON-body, geen bestandsupload.

Layout & compositie

Tool-IDNaamBelangrijkste instellingen
collageCollage / rastertemplate (25+ layouts), gap, backgroundColor, borderRadius - meerdere bestanden
stitchAan elkaar plakken / combinerendirection (horizontal/vertical/grid), gap, backgroundColor, alignment - meerdere bestanden
splitAfbeelding opsplitsenmode (grid/rows/cols), rows, cols, tileWidth, tileHeight
borderRand & kaderwidth, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautifyScreenshot verfraaienbackgroundType (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-cropCirkelvormig bijsnijdenzoom (1-5), offsetX, offsetY, borderWidth, borderColor, background (transparent/hex), outputSize
image-padAfbeelding opvullentarget (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 - meerdere bestanden (2-64 afbeeldingen)

Formaat & conversie

Tool-IDNaamBelangrijkste instellingen
svg-to-rasterSVG naar rasterformat (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorizeAfbeelding naar SVGcolorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-toolsGIF-toolsaction (resize/optimize/reverse/speed/extract-frames/rotate/add-text), actie-specifieke parameters
gif-webpGIF/WebP-converterquality (1-100), lossless (bool), resizePercent (10-100)

Videotools

Tool-IDNaamBelangrijkste instellingen
convert-videoVideo converterenformat (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-videoVideo comprimerenquality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-videoVideo inkortenstartS, endS, precise (bool, frame-nauwkeurige knip)
mute-videoVideo dempen-
video-to-gifVideo naar GIFfps (1-30), width, startS, durationS (max 60s)
resize-videoVideoformaat wijzigenwidth, height, preset (custom/2160p/1440p/1080p/720p/480p/360p)
crop-videoVideo bijsnijdenwidth, height, x, y
rotate-videoVideo roterentransform (cw90/ccw90/180/hflip/vflip)
change-fpsFPS wijzigenfps (1-120)
video-colorVideokleurbrightness, contrast, saturation, gamma
video-speedVideosnelheidfactor (0.25-4), keepPitch (bool)
reverse-videoVideo omkeren- (max 5 minuten)
video-loudnormAudio normaliseren- (EBU R128)
aspect-padAspect-opvullingtarget (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-padBlur-opvullingtarget (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-videoVideo van watermerk voorzientext, position, fontSize, opacity, color
stabilize-videoVideo stabiliserensmoothing (5-60, in frames)
gif-to-videoGIF naar videoformat (mp4/webm/mov)
video-to-webpVideo naar WebPfps, width, quality, loop (bool)
video-to-framesVideo naar framesmode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videosVideo's samenvoegen- (meerdere bestanden, genormaliseerd naar de resolutie van de eerste video)
replace-audioAudio vervangen- (video- + audiobestand, twee bestanden)
burn-subtitlesOndertitels inbrandenfontSize (8-72) - video- + ondertitelbestand
embed-subtitlesOndertitels insluitenlanguage (ISO 639-2/B-code) - video- + ondertitelbestand
extract-subtitlesOndertitels extraheren- (levert SRT)
images-to-videoAfbeeldingen naar videosecondsPerImage (0.5-10), resolution (1080p/720p/square), fps - meerdere bestanden
video-metadataVideometadata opschonen-
auto-subtitlesAutomatische ondertitels (AI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audioAudio extraherenformat (mp3/wav/m4a/ogg)

Audiotools

Tool-IDNaamBelangrijkste instellingen
convert-audioAudio converterenformat (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audioAudio inkortenstartS, endS
volume-adjustVolume aanpassengainDb (-30 tot 30)
normalize-audioAudio normaliseren- (EBU R128, -16 LUFS)
fade-audioAudio fadenfadeInS (0-30), fadeOutS (0-30)
reverse-audioAudio omkeren-
audio-speedAudiosnelheidfactor (0.25-4)
pitch-shiftToonhoogte verschuivensemitones (-12 tot 12)
audio-channelsAudiokanalenmode (stereo-to-mono/mono-to-stereo/swap)
silence-removalStilte verwijderenthresholdDb (-80 tot -20), minSilenceS (0.1-5)
noise-reductionRuisonderdrukkingstrength (light/medium/strong)
merge-audioAudio samenvoegenformat (mp3/wav/flac/m4a) - meerdere bestanden
split-audioAudio splitsenmode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-makerRingtone-makerstartS, durationS (1-30)
waveform-imageGolfvormafbeeldingwidth, height, color (hex)
audio-metadataAudiometadatastrip (bool), title, artist, album
transcribe-audioAudio transcriberen (AI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Documenttools

Tool-IDNaamBelangrijkste instellingen
merge-pdfPDF's samenvoegen- (meerdere bestanden, tot 20 PDF's)
split-pdfPDF splitsenmode (range/every), range, everyN (1-500)
compress-pdfPDF comprimerenmode (quality/targetSize), quality (1-100), targetSizeKb
rotate-pdfPDF roterenangle (90/180/270), range (paginabereik)
extract-pagesPagina's extraherenrange (qpdf-syntaxis, bijv. "1-5,8,10-z")
remove-pagesPagina's verwijderenpages (te verwijderen qpdf-bereik)
organize-pdfPDF ordenenorder (qpdf-paginavolgorde, bijv. "3,1,2,5-z")
protect-pdfPDF beveiligenuserPassword, ownerPassword (AES-256)
unlock-pdfPDF ontgrendelenpassword
repair-pdfPDF repareren-
linearize-pdfPDF web-optimaliseren- (lineariseren voor snelle weergave op het web)
grayscale-pdfPDF grijswaarden-
pdfa-convertPDF/A-conversie- (archief-PDF/A-2)
crop-pdfPDF bijsnijdenmargin (0-2000 punten)
nup-pdfN-up-PDFperSheet (2/3/4/8/9/12/16)
booklet-pdfBoekje-PDFperSheet (2/4/6/8)
watermark-pdfPDF van watermerk voorzientext, position, fontSize, opacity, rotation
pdf-page-numbersPDF-paginanummersposition (bl/bc/br/tl/tc/tr), fontSize
flatten-pdfPDF plat maken- (bakt formulieren en annotaties in)
redact-pdfPDF redigerenterms (string[]), caseSensitive (bool)
sign-pdfPDF ondertekenenAangepaste multipart-route met PDF file, handtekeningbestanden sig0, sig1 en placements JSON-array
pdf-to-textPDF naar tekst-
pdf-to-wordPDF naar Word-
pdf-metadataPDF-metadatatitle, author, subject, keywords
convert-documentDocument converterenformat (docx/odt/rtf/txt)
convert-presentationPresentatie converterenformat (pptx/odp)
convert-spreadsheetSpreadsheet converterenformat (xlsx/ods/csv)
excel-to-pdfExcel naar PDF-
word-to-pdfWord naar PDF-
powerpoint-to-pdfPowerPoint naar PDF-
html-to-pdfHTML naar PDF- (externe resources uitgeschakeld)
markdown-to-docxMarkdown naar Word-
markdown-to-htmlMarkdown naar HTML-
markdown-to-pdfMarkdown naar PDF- (externe resources uitgeschakeld)
epub-convertEPUB converterenformat (pdf/docx/html/md)
to-epubConverteren naar EPUB- (accepteert .docx, .md, .html, .txt)
ocr-pdfPDF-OCR (AI)quality (fast/balanced/best), language (auto/en/de/fr/es/zh/ja/ko), pages
pdf-to-imagePDF naar afbeeldingpages (all/range), format, dpi, quality
pdf-to-jpgPDF naar JPGpages, dpi, quality, colorMode
pdf-to-pngPDF naar PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF naar TIFFpages, dpi, quality, colorMode

Bestandstools

Tool-IDNaamBelangrijkste instellingen
chart-makerGrafiekmakerkind (bar/line/pie), title, width, height
csv-excelCSV naar Excelsheet (werkbladnummer voor XLSX-invoer) - bidirectioneel
csv-jsonCSV naar JSONpretty (bool) - bidirectioneel
json-xmlJSON naar XMLpretty (bool) - bidirectioneel
split-csvCSV splitsenrowsPerFile (1-1000000), keepHeader (bool)
merge-csvsCSV's samenvoegen- (meerdere bestanden, overeenkomende kolommen)
yaml-jsonYAML / JSON- (bidirectioneel)
xml-to-csvXML naar CSV- (vindt automatisch herhalende elementen)
excel-to-csvExcel naar CSVspeciale conversiepreset ondersteund door convert-spreadsheet
create-zipZIP maken- (meerdere bestanden, 2-50 bestanden)
extract-zipZIP uitpakken- (beschermd tegen zip-bommen)

HTML naar afbeelding

Leg een webpagina vast als afbeelding. Anders dan andere tools accepteert dit endpoint application/json in plaats van multipart-formuliergegevens (geen bestandsupload nodig).

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

Content-Type: application/json

ParameterTypeStandaardBeschrijving
urlstring(vereist)Vast te leggen URL (alleen http/https)
formatstring"png"Uitvoerformaat: jpg, png, webp
qualitynumber90Kwaliteit 1-100 (alleen JPG/WebP)
fullPagebooleanfalseVolledige scrollbare pagina vastleggen
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280Aangepaste viewport-breedte 320-3840
viewportHeightnumber720Aangepaste viewport-hoogte 320-2160

Voorbeeld:

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

Response:

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

Tool-subroutes

Sommige tools stellen aanvullende endpoints beschikbaar naast de standaard POST /api/v1/tools/<section>/<toolId>:

MethodePadBeschrijving
GET/api/v1/tools/popularPopulaire tool-ID's retourneren, met terugval naar een samengestelde standaardlijst wanneer er weinig gebruiksdata is
POST/api/v1/tools/image/remove-background/effectsAchtergrondeffecten toepassen (color/gradient/blur/shadow) zonder AI opnieuw uit te voeren. Gebruikt een gecacht masker van de oorspronkelijke verwijdering.
POST/api/v1/tools/image/edit-metadata/inspectBestaande EXIF/IPTC/XMP-metadata uit een afbeelding lezen
POST/api/v1/tools/image/strip-metadata/inspectMetadatavelden inspecteren vóór het verwijderen
POST/api/v1/tools/image/passport-photo/analyzeFase 1: AI-gezichtsdetectie + achtergrondverwijdering. Retourneert gezichtslandmarks en gecachte data.
POST/api/v1/tools/image/passport-photo/generateFase 2: bijsnijden, formaat wijzigen en tegelen met behulp van gecachte analyse. Geen nieuwe AI-run.
POST/api/v1/tools/image/gif-tools/infoGIF-metadata ophalen (aantal frames, afmetingen, duur)
POST/api/v1/tools/pdf/pdf-to-image/infoPDF-metadata ophalen (aantal pagina's, afmetingen)
POST/api/v1/tools/pdf/pdf-to-image/previewEen voorbeeld van een specifieke PDF-pagina genereren
POST/api/v1/tools/pdf/pdf-to-jpg/infoPDF-metadata ophalen voor de speciale JPG-preset
POST/api/v1/tools/pdf/pdf-to-jpg/previewEen voorbeeld van een PDF-pagina genereren voor de JPG-preset
POST/api/v1/tools/pdf/pdf-to-png/infoPDF-metadata ophalen voor de speciale PNG-preset
POST/api/v1/tools/pdf/pdf-to-png/previewEen voorbeeld van een PDF-pagina genereren voor de PNG-preset
POST/api/v1/tools/pdf/pdf-to-tiff/infoPDF-metadata ophalen voor de speciale TIFF-preset
POST/api/v1/tools/pdf/pdf-to-tiff/previewEen voorbeeld van een PDF-pagina genereren voor de TIFF-preset
POST/api/v1/tools/image/svg-to-raster/batchMeerdere SVG's in batch naar raster converteren
POST/api/v1/tools/image/image-enhancement/analyzeAfbeeldingskwaliteit analyseren en verbeteringsaanbevelingen retourneren
POST/api/v1/tools/image/optimize-for-web/previewLichtgewicht voorbeeld voor live parameterafstemming. Retourneert een geoptimaliseerde afbeelding met formaatheaders.

Batchverwerking

Pas een generieke batch-geschikte tool tegelijk toe op meerdere bestanden. Retourneert een ZIP-archief. Aangepaste routes voor meerdere bestanden of meerdere stappen, zoals PDF-ondertekening, PDF-OCR en PDF-naar-afbeelding-preset-routes, gebruiken hun eigen endpointcontract in plaats van de generieke /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}'

Concurrency wordt bepaald door CONCURRENT_JOBS (standaard: automatisch gedetecteerd op basis van CPU-cores). MAX_BATCH_SIZE beperkt het aantal bestanden per batch (standaard: 100; stel 0 in voor onbeperkt).

Pipelines

Een pipeline uitvoeren

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

De uitvoer van elke stap is de invoer van de volgende stap. Pipelines staan standaard 20 stappen toe, configureerbaar via MAX_PIPELINE_STEPS. Stel MAX_PIPELINE_STEPS=0 in om de limiet te verwijderen.

Pipelines opslaan en beheren

MethodePadBeschrijving
POST/api/v1/pipeline/saveEen benoemde pipeline opslaan (name, description, steps[])
GET/api/v1/pipeline/listOpgeslagen pipelines weergeven (admins zien alles; gebruikers zien de eigen)
DELETE/api/v1/pipeline/:idVerwijderen (eigenaar of admin)
GET/api/v1/pipeline/toolsTool-ID's weergeven die geldig zijn voor pipelinestappen

Voortgang volgen

Langlopende taken, tools in de wachtrij, batchtaken en pipelines geven realtime voortgang door via Server-Sent Events. De voortgangsstroom is publiek en gekoppeld aan de job-ID, dus clients hoeven geen Authorization-header te sturen om deze te lezen.

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

Event-formaat:

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

Je kunt annulering aanvragen voor een taak in de wachtrij of een lopende taak met POST /api/v1/jobs/:jobId/cancel. De response is {"canceled":true|false}.

Bestandsbibliotheek

Persistente bestandsopslag met versiegeschiedenis.

MethodePadBeschrijving
POST/api/v1/uploadBestanden uploaden naar de werkruimte (tijdelijke verwerking)
POST/api/v1/files/uploadBestanden uploaden naar de persistente bestandsbibliotheek
POST/api/v1/files/save-resultEen tool-verwerkingsresultaat opslaan als een nieuwe bestandsversie
GET/api/v1/filesOpgeslagen bestanden weergeven (gepagineerd, met zoekfunctie)
GET/api/v1/files/:idBestandsmetadata + versieketen ophalen
GET/api/v1/files/:id/downloadBestand downloaden
GET/api/v1/files/:id/thumbnail300px JPEG-thumbnail ophalen
DELETE/api/v1/filesBestanden en hun versieketens in bulk verwijderen (body: { ids: [...] })
POST/api/v1/fetch-urlsExterne URL's ophalen in de werkruimte voor URL-gebaseerde imports
POST/api/v1/previewEen browsercompatibele WebP-preview genereren (voor HEIC/HEIF/RAW-formaten)
GET/api/v1/files/:id/previewEen gecachte of gegenereerde browsercompatibele preview streamen voor een opgeslagen PDF, Office-document, video of audiobestand
POST/api/v1/preview/generateEen on-demand MP4- of MP3-preview genereren voor een geüpload mediabestand zonder het eerst op te slaan
GET/api/v1/download/:jobId/:filenameEen verwerkt bestand downloaden uit een werkruimte

Om een tool-resultaat automatisch op te slaan in de bibliotheek, voeg je fileId toe als multipart-formulierveld dat verwijst naar een bestaand bibliotheekbestand. Het verwerkte resultaat wordt opgeslagen als een nieuwe versie.

API-sleutelbeheer

MethodePadToegangBeschrijving
POST/api/v1/api-keysAuthNieuwe sleutel genereren - eenmaal getoond
GET/api/v1/api-keysAuthSleutels weergeven (name, id, lastUsedAt - niet de ruwe sleutel)
DELETE/api/v1/api-keys/:idAuthSleutel verwijderen

Teams

MethodePadToegangBeschrijving
GET/api/v1/teamsAdmin (teams:manage)Teams weergeven
POST/api/v1/teamsAdmin (teams:manage)Team aanmaken
PUT/api/v1/teams/:idAdmin (teams:manage)Team hernoemen
DELETE/api/v1/teams/:idAdmin (teams:manage)Team verwijderen (het standaardteam of teams met leden kunnen niet worden verwijderd)

Instellingen

Runtime key-value-configuratie (leesbaar door elke geauthenticeerde gebruiker, alleen schrijfbaar door admin).

MethodePadBeschrijving
GET/api/v1/settingsAlle instellingen ophalen
PUT/api/v1/settingsInstellingen in bulk bijwerken (JSON-body met key-value-paren)
GET/api/v1/settings/:keyEen specifieke instelling ophalen op sleutel

Bekende sleutels: disabledTools (JSON-array van tool-ID's), enableExperimentalTools (bool-string), loginAttemptLimit (getal).

Voorkeuren

Gebruikersvoorkeuren staan los van instance-instellingen. Elke geauthenticeerde gebruiker kan de eigen voorkeurenmap lezen en bijwerken.

MethodePadBeschrijving
GET/api/v1/preferencesDe voorkeuren van de huidige gebruiker ophalen als { "preferences": { ... } }
PUT/api/v1/preferencesEen of meer voorkeurssleutels voor de huidige gebruiker upserten

Rollen

Beheer van aangepaste rollen met gedetailleerde permissies.

MethodePadToegangBeschrijving
GET/api/v1/rolesAdmin (audit:read)Alle rollen weergeven met aantallen gebruikers
POST/api/v1/rolesAdmin (security:manage)Een aangepaste rol aanmaken (name, description, permissions)
PUT/api/v1/roles/:idAdmin (security:manage)Een aangepaste rol bijwerken (ingebouwde rollen kunnen niet worden gewijzigd)
DELETE/api/v1/roles/:idAdmin (security:manage)Een aangepaste rol verwijderen (ingebouwde rollen kunnen niet worden verwijderd; getroffen gebruikers keren terug naar de rol user)

Beschikbare permissies (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.

Auditlog

Alleen voor admins bestemd endpoint voor het beoordelen van beveiligingsrelevante acties.

MethodePadToegangBeschrijving
GET/api/v1/audit-logAdmin (audit:read)Gepagineerd auditlog met optionele filters

Query-parameters:

ParameterBeschrijving
pagePaginanummer (standaard: 1)
limitVermeldingen per pagina (standaard: 50, max: 100)
actionFilteren op actietype (bijv. ROLE_CREATED, ROLE_DELETED)
ipFilteren op bron-IP-adres
fromVermeldingen filteren na deze ISO 8601-datum
toVermeldingen filteren vóór deze ISO 8601-datum

Analytics

MethodePadToegangBeschrijving
GET/api/v1/config/analyticsPubliekDe effectieve analytics-configuratie ophalen (PostHog-sleutel, Sentry-DSN, sample rate). Sleutels, DSN en instance-ID zijn leeg wanneer analytics uit staat, hetzij door de compile-time-bake, hetzij door de instance-instelling analyticsEnabled.
POST/api/v1/feedbackAuthExpliciete gebruikersfeedback indienen bij het geconfigureerde PostHog-project als feedback_submitted. De route respecteert de analytics-gate, beperkt de frequentie van inzendingen, verwijdert contactvelden tenzij contactOk waar is, en accepteert nooit bestandsinhoud, bestandsnamen, uploadpaden of ruwe private foutmeldingstekst. Wanneer analytics is uitgeschakeld, retourneert de route { "ok": true, "accepted": false }.
PUT/api/v1/settingsAdmin (settings:write)De instance-brede opt-out instellen. Stuur een JSON-body { "analyticsEnabled": "false" } om analytics voor iedereen uit te schakelen, of "true" om deze weer in te schakelen.

Features / AI-bundels

Beheer AI-feature-bundels (installeer/verwijder AI-modelpakketten in de Docker-omgeving). Geef bij het inschakelen van een tool vanuit aangepaste automatisering de voorkeur aan het tool-niveau-installatie-endpoint: sommige AI-tools hebben meer dan één gedeelde bundel nodig, en dit endpoint slaat reeds geïnstalleerde bundels over en zet alleen de ontbrekende in de wachtrij.

MethodePadToegangBeschrijving
GET/api/v1/featuresAuthAlle feature-bundels en hun installatiestatus weergeven
POST/api/v1/admin/features/:bundleId/installAdmin (features:manage)Een feature-bundel installeren (async, retourneert jobId voor voortgangsvolging)
POST/api/v1/admin/tools/:toolId/features/installAdmin (features:manage)Elke bundel installeren die een tool vereist; retourneert de queued/skipped-status per bundel
POST/api/v1/admin/features/:bundleId/uninstallAdmin (features:manage)Een feature-bundel verwijderen en modelbestanden opruimen
GET/api/v1/admin/features/disk-usageAdmin (features:manage)Het totale schijfgebruik van AI-modellen ophalen
POST/api/v1/admin/features/importAdmin (features:manage)Een offline AI-bundelarchief importeren

Beheerbewerkingen

Operationele endpoints voor observability, support, gebruiksrapportage en backupstatus.

MethodePadToegangBeschrijving
GET/api/v1/admin/log-levelAdmin (settings:write)Het huidige runtime-logniveau lezen
POST/api/v1/admin/log-levelAdmin (settings:write)Het runtime-logniveau wijzigen (fatal, error, warn, info, debug, trace of silent)
GET/api/v1/metricsAdmin (system:health)Prometheus-metrics in tekstformaat
GET/api/v1/admin/support-bundleAdmin (system:health)Een geredigeerde diagnostische supportbundel-ZIP downloaden
GET/api/v1/admin/usageAdmin (audit:read)Gegevens voor het gebruiksdashboard, met optionele days-queryparameter
GET/api/v1/admin/backup-statusAdmin (system:health)Metadata en actualiteitsstatus van de laatste backup lezen
POST/api/v1/admin/backup-statusAdmin (system:health)Een voltooide backup registreren (type, optioneel sizeBytes, optioneel notes)

Enterprise-API's

Deze routes zijn licentiegebonden door de bijbehorende enterprise-functie. Ze vereisen nog steeds de vermelde SnapOtter-permissie.

MethodePadToegangBeschrijving
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Auditvermeldingen exporteren als JSON of CSV met filters
GET/api/v1/enterprise/config/exportAdmin (system:health)Geredigeerde instance-configuratie, aangepaste rollen en teams exporteren
POST/api/v1/enterprise/config/importAdmin (system:health)Configuratie importeren, met optionele dry run
GET/api/v1/enterprise/ip-allowlistAdmin (security:manage)Geconfigureerde CIDR-allowlist lezen
PUT/api/v1/enterprise/ip-allowlistAdmin (security:manage)CIDR-allowlist bijwerken met bescherming tegen zelf-buitensluiting
GET/api/v1/enterprise/legal-holdAdmin (compliance:manage)Legal holds voor gebruikers en teams weergeven
PUT/api/v1/enterprise/legal-holdAdmin (compliance:manage)Een legal hold op een gebruiker of team toepassen of opheffen
POST/api/v1/enterprise/scim/tokenAdmin (users:manage)Een SCIM-bearertoken genereren, eenmaal geretourneerd
DELETE/api/v1/enterprise/scim/tokenAdmin (users:manage)Het huidige SCIM-bearertoken intrekken
GET/api/v1/enterprise/siem/configAdmin (webhooks:manage)SIEM-forwardingconfiguratie lezen
PUT/api/v1/enterprise/siem/configAdmin (webhooks:manage)SIEM-forwardingconfiguratie bijwerken
GET/api/v1/enterprise/webhooksAdmin (webhooks:manage)Webhook-bestemmingen weergeven
POST/api/v1/enterprise/webhooksAdmin (webhooks:manage)Een webhook-bestemming aanmaken
PUT/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Een webhook-bestemming bijwerken
DELETE/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Een webhook-bestemming verwijderen
POST/api/v1/enterprise/webhooks/:index/testAdmin (webhooks:manage)Een test-webhook-payload versturen
POST/api/v1/enterprise/users/:id/exportAdmin (compliance:manage)Een GDPR-gebruikersexporttaak starten
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin (compliance:manage)GDPR-exportstatus en download-URL lezen
DELETE/api/v1/enterprise/users/:id/purgeAdmin (compliance:manage)De gegevens van een gebruiker na bevestiging permanent verwijderen
DELETE/api/v1/enterprise/teams/:id/purgeAdmin (compliance:manage)De gegevens van een team na bevestiging permanent verwijderen
GET/api/v1/admin/versionAdmin (system:health)App-, build-, Node- en schemaversiemetadata lezen
GET/api/v1/admin/migrations/pendingAdmin (system:health)Meegeleverde migraties vergelijken met toegepaste migraties
GET/api/v1/admin/upgrade-checkAdmin (system:health)Upgrade-gereedheidscontroles uitvoeren

SCIM 2.0

SCIM-discovery-endpoints zijn publiek. User- en group-endpoints vereisen het hierboven gegenereerde SCIM-bearertoken.

MethodePadToegangBeschrijving
GET/api/v1/scim/v2/ServiceProviderConfigPubliekSCIM-servercapaciteiten
GET/api/v1/scim/v2/SchemasPubliekSCIM-schema-discovery
GET/api/v1/scim/v2/ResourceTypesPubliekSCIM-resourcetype-discovery
GET/api/v1/scim/v2/UsersSCIM-tokenGebruikers weergeven, met optioneel SCIM-filter
POST/api/v1/scim/v2/UsersSCIM-tokenEen gebruiker aanmaken
GET/api/v1/scim/v2/Users/:idSCIM-tokenEen gebruiker ophalen
PUT/api/v1/scim/v2/Users/:idSCIM-tokenEen gebruiker vervangen
DELETE/api/v1/scim/v2/Users/:idSCIM-tokenEen gebruiker soft-deactiveren
GET/api/v1/scim/v2/GroupsSCIM-tokenTeams weergeven als SCIM-groepen
POST/api/v1/scim/v2/GroupsSCIM-tokenEen team aanmaken
GET/api/v1/scim/v2/Groups/:idSCIM-tokenEen team ophalen
PUT/api/v1/scim/v2/Groups/:idSCIM-tokenEen team en groepslidmaatschap vervangen
DELETE/api/v1/scim/v2/Groups/:idSCIM-tokenEen team verwijderen

Meme-sjablonen

Ondersteunende API voor de meme-generatortool.

MethodePadToegangBeschrijving
GET/api/v1/meme-templatesAuthAlle beschikbare meme-sjablonen weergeven met tekstvakposities
GET/api/v1/meme-templates/full/:filenameAuthSjabloonafbeelding op volledige grootte serveren
GET/api/v1/meme-templates/thumbs/:filenameAuthSjabloonthumbnail serveren
GET/api/v1/meme-templates/fonts/:filenameAuthFontbestand serveren dat wordt gebruikt voor het renderen van meme-tekst

Foutresponses

Alle fouten retourneren JSON:

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
StatusBetekenis
400Ongeldig verzoek / validatie mislukt
401Niet geauthenticeerd
403Onvoldoende permissies
404Resource niet gevonden
413Bestand te groot (zie MAX_UPLOAD_SIZE_MB)
422Verwerking mislukt na validatie
429Rate-limited (zie RATE_LIMIT_PER_MIN)
501Vereiste AI-feature-bundel is niet geïnstalleerd (FEATURE_NOT_INSTALLED)
500Interne serverfout