Deze pagina is automatisch vertaald. Fout gezien?Help mee om het te verbeteren.
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 (tool routes are POST multipart)
curl -X POST http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer <session-token>" \
  -F "file=@photo.jpg" \
  -F 'settings={"width":800}'

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 -X POST http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer si_<your-key>" \
  -F "file=@photo.jpg" \
  -F 'settings={"width":800}'

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":"..."} 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 "file=@input.jpg" \
  -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 "files=@a.jpg" \
  -F "files=@b.jpg" \
  -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 / TekstextractieTesseract (snel); RapidOCR + PP-OCR ONNX (gebalanceerd/beste)quality (snel/gebalanceerd/beste), 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 en PDF-naar-afbeelding-preset-routes, gebruiken hun eigen endpointcontract in plaats van de generieke /batch-route.

De tool ocr-pdf ondersteunt deze generieke /batch-route.

bash
curl -X POST http://localhost:1349/api/v1/tools/image/compress/batch \
  -H "Authorization: Bearer <token>" \
  -F "files=@a.jpg" \
  -F "files=@b.jpg" \
  -F "files=@c.jpg" \
  -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 "file=@input.jpg" \
  -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 "files=@a.jpg" \
  -F "files=@b.jpg" \
  -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

De runtimeconfiguratie gebruikt een gesloten verzameling herkende sleutels. Lezen vereist settings:read en schrijven vereist settings:write; beveiligings- en compliancesleutels vereisen daarnaast respectievelijk security:manage of compliance:manage. Geheime instellingen vereisen volledige beheerdersbevoegdheid, terwijl referenties en status die door specifieke endpoints worden beheerd hier alleen-lezen zijn. Bulkwijzigingen worden gevalideerd voordat een waarde wordt geschreven.

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

Representatieve sleutels: disabledTools (JSON-array van tool-ID's), enableExperimentalTools (booleaanse waarde), loginAttemptLimit (beveiligingsbeleid) en auditRetentionDays (compliancebeleid). Onbekende sleutels worden geweigerd.

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.

OCR is een optionele verbetering in plaats van een harde afhankelijkheid. De fast Tesseract-laag werkt zonder pakket; POST /api/v1/admin/features/ocr/install installeert het ondertekende RapidOCR-pakket voor balanced en best op Linux amd64 of arm64. De nauwkeurige OCR-runtime gebruikt CPU op alleen CPU en NVIDIA-hosts en vereist minimaal 4 GiB effectief geheugen (de geconfigureerde container cgroup-limiet, anders hostgeheugen). SnapOtter rapporteert requiredMemoryBytes, effectiveMemoryBytes en een insufficient-memory-compatibiliteitsreden, en wijst een incompatibele installatie af vóór het downloaden. Deze geheugenvereiste is niet van toepassing op fast. Het pakket bevat ongeveer 208-234 MiB om te downloaden en 409-488 MiB geïnstalleerd, afhankelijk van het doel; de ondertekende index bindt de exacte afmetingen die tijdens de installatie worden afgedwongen.

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/importBeheerder (features:manage)Importeer een oudere AI-bundel (file) of een ondertekende offline OCR-release (index plus archive)

Een air-gapped OCR-import moet de ondertekende ocr-runtime-index.json van de release en het bijbehorende platformarchief bevatten. SnapOtter past dezelfde Ed25519-handtekening, artefacthash, compatibiliteit, extractie en rooktestcontroles toe die worden gebruikt bij online installatie:

bash
curl -X POST http://localhost:1349/api/v1/admin/features/import \
  -H "Authorization: Bearer <admin-token>" \
  -F "index=@ocr-runtime-index.json" \
  -F "archive=@ocr-linux-amd64-cpu-py312.tar.gz"

Gebruik het linux-arm64-cpu-py311-archief op arm64. Een ondertekend artefact voor een ander doel wordt afgewezen in plaats van geïnstalleerd.

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.

Volledige ingebouwde beheerder betekent dat de geauthenticeerde actor de rol admin en de volledige effectieve set beheerderspermissies heeft. Een API-sleutelbereik dat ook maar één beheerderspermissie weglaat, komt niet in aanmerking.

MethodePadToegangBeschrijving
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Auditvermeldingen exporteren als JSON of CSV met filters
GET/api/v1/enterprise/config/exportVolledige ingebouwde beheerderGeredigeerde instance-configuratie, aangepaste rollen en teams exporteren
POST/api/v1/enterprise/config/importVolledige ingebouwde beheerderConfiguratie 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