Den här sidan är maskinöversatt. Hittade du ett fel?Hjälp till att förbättra den.
Skip to content

REST API-referens

Interaktiva API-dokument med exempel på förfrågningar och svar finns på http://localhost:1349/api/docs.

Maskinläsbara specifikationer:

  • /api/v1/openapi.yaml - OpenAPI 3.1-specifikation
  • /llms.txt - LLM-vänlig sammanfattning
  • /llms-full.txt - Fullständiga LLM-vänliga dokument

Autentisering

Alla slutpunkter kräver autentisering om inte AUTH_ENABLED=false.

Sessionstoken

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

Sessioner löper ut efter 7 dagar (konfigurerbart via SESSION_DURATION_HOURS).

API-nycklar

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

Nycklar har prefixet si_ och lagras som scrypt-hashar - den råa nyckeln visas en gång och kan aldrig hämtas igen.

Autentiseringsslutpunkter

MetodSökvägÅtkomstBeskrivning
POST/api/auth/loginPublikLogga in, hämta sessionstoken
POST/api/auth/logoutAuthFörstör aktuell session
GET/api/auth/sessionAuthValidera aktuell session
POST/api/auth/change-passwordAuthByt eget lösenord (ogiltigförklarar alla andra sessioner + API-nycklar)
GET/api/auth/usersAdminLista alla användare
POST/api/auth/registerAdminSkapa en ny användare
PUT/api/auth/users/:idAdminUppdatera användarroll eller team
POST/api/auth/users/:id/reset-passwordAdminÅterställ användarens lösenord
DELETE/api/auth/users/:idAdminTa bort en användare
GET/api/v1/config/authPublikKontrollera om autentisering är aktiverad ({ authEnabled: bool })
POST/api/auth/mfa/enrollAuthStarta TOTP MFA-registrering. Kräver enterprise-funktionen mfa
POST/api/auth/mfa/verifyAuthBekräfta MFA-registrering med en TOTP-kod
POST/api/auth/mfa/completePublikSlutför en väntande MFA-inloggningsutmaning
POST/api/auth/mfa/disableAuthInaktivera MFA för aktuell användare
POST/api/auth/users/:id/mfa/resetAdmin (users:manage)Återställ MFA för en användare
GET/api/auth/oidc/loginPublikStarta OIDC-inloggning när OIDC är aktiverat
GET/api/auth/oidc/callbackPublikOIDC-auktoriseringsåterkallelse
GET/api/auth/saml/metadataPublikSAML SP-metadata-XML när SAML är aktiverat
GET/api/auth/saml/loginPublikStarta SAML-inloggning
POST/api/auth/saml/callbackPublikSAML assertion consumer service

När MFA är aktiverat för en användare returnerar POST /api/auth/login {"requiresMfa":true,"mfaToken":"..."} istället för en sessionstoken. Skicka den mfaToken plus en TOTP- eller återställningskod till /api/auth/mfa/complete.

Behörigheter

BehörighetAdminAnvändare
Använda verktyg
Egna filer/pipelines/API-nycklar
Se alla användares filer/pipelines/nycklar-
Skriva inställningar-
Hantera användare och team-
Hantera varumärkesprofil-

Hälsokontroll

MetodSökvägÅtkomstBeskrivning
GET/api/v1/healthPublikGrundläggande hälsokontroll. Returnerar {"status":"healthy","version":"..."} med 200, eller {"status":"unhealthy"} med 503 om databasen inte kan nås.
GET/api/v1/readyzPublikBeredskapssond. Kontrollerar PostgreSQL, Redis, diskutrymme och S3 när det är konfigurerat. Returnerar 503 när instansen inte bör ta emot trafik.
GET/api/v1/admin/healthAdmin (system:health)Detaljerad diagnostik inklusive drifttid, lagringsläge, databasstatus, kötillstånd och GPU-tillgänglighet.

Använda verktyg

Varje verktyg följer samma mönster:

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> är en av image, video, audio, pdf eller files.

  • Uppladdning är multipart/form-data.
  • settings är en JSON-sträng med verktygsspecifika alternativ.
  • clientJobId är ett valfritt formulärfält för anropar-tillhandahållen förloppskorrelation.
  • fileId är ett valfritt formulärfält som refererar till ett befintligt objekt i filbiblioteket. När det finns sparas den bearbetade utdatan som en ny version och svaret inkluderar savedFileId.
  • Snabba verktyg returnerar vanligtvis 200 JSON: {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}. Hämta den bearbetade filen från downloadUrl.
  • Alla köade verktyg kan returnera 202 JSON om de är långvariga eller överskrider det synkrona väntefönstret: {"jobId":"...","async":true}. Anslut till SSE för förlopp, ladda sedan ner när det är klart (se Förloppsspårning).
  • Batch-rutter returnerar ett ZIP-arkiv som strömmas direkt (med X-Job-Id-header) för verktyg som är registrerade i det generiska batchregistret.

Verktygsreferens

Konverteringsförinställningar

Den delade katalogen innehåller 83 dedikerade slutpunkter för konverteringsförinställningar såsom jpg-to-png, mov-to-mp4, m4a-to-mp3, pdf-to-jpg och excel-to-csv. Förinställningar är förstklassiga verktygsrutter:

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

Varje förinställning låser utdataformatet och delegerar till ett basverktyg såsom convert, convert-video, extract-audio, convert-audio, image-to-pdf, pdf-to-image, svg-to-raster eller convert-spreadsheet. Se Konverteringsförinställningar för den fullständiga rutttabellen och valfria inställningar.

Grundläggande

Verktygs-IDNamnNyckelinställningar
resizeÄndra storlekwidth, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, plus 23 förinställningar för sociala medier
cropBeskärleft, top, width, height, unit (px/procent)
rotateRotera och vändangle, horizontal (bool), vertical (bool)
convertKonverteraformat (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compressKomprimeramode (quality/targetSize), quality (1–100), targetSizeKb

Optimering

Verktygs-IDNamnNyckelinställningar
optimize-for-webOptimera för webbenformat (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataTa bort metadata-
edit-metadataRedigera metadatatitle, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-renameMassomdöppattern (stöder {n}, {date}, {original}), startIndex, padding
image-to-pdfBild till PDFpageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
faviconFavicon-generatorpadding, backgroundColor, borderRadius - genererar alla standardstorlekar

Justeringar

Verktygs-IDNamnNyckelinställningar
adjust-colorsJustera färgerbrightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpeningSkärpamethod (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-colorErsätt färgsourceColor, targetColor (ersättning), makeTransparent, tolerance
color-blindnessSimulering av färgblindhetsimulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, standard "deuteranomaly")
duotoneDuotonshadow (hex), highlight (hex), intensity (0-100)
pixelatePixelerablockSize (2-128), region ({left, top, width, height} för partiell pixelering)
vignetteVinjettstrength (0.1-1), color (hex), radius, softness, roundness, centerX, centerY

AI-verktyg

Alla AI-verktyg körs på din hårdvara: CPU som standard, eller NVIDIA CUDA när en stödd NVIDIA-GPU är tillgänglig. Intel/AMD iGPU-acceleration via VA-API, Quick Sync eller OpenCL stöds inte för AI-inferens idag. Ingen internetanslutning krävs.

Verktygs-IDNamnAI-modellNyckelinställningar
remove-backgroundTa bort bakgrundrembg (BiRefNet / U2-Net)model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscaleBilduppskalningRealESRGANscale (2/4), model, faceEnhance, denoise, format, quality
erase-objectObjektsuddLaMa (ONNX)Mask skickas som andra fildel (fältnamn mask), format, quality
ocrOCR / TextextraktionTesseract (snabb); RapidOCR + PP-OCR ONNX (balanserad/bäst)quality (snabb/balanserad/bäst), language, enhance
blur-facesAnsikts-/PII-oskärpaMediaPipeblurRadius, sensitivity
smart-cropSmart beskärningMediaPipe + 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-enhancementBildförbättringAnalysbaseradmode (auto/exposure/contrast/color/sharpness), strength
enhance-facesAnsiktsförbättringGFPGAN / CodeFormermodel (gfpgan/codeformer), strength, sensitivity, centerFace
colorizeAI-färgläggningDDColorintensity, model
noise-removalBrusreduceringNivåindelad brusreduceringtier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removalBorttagning av röda ögonAnsiktslandmärke + färganalyssensitivity, strength
restore-photoFotorestaureringFlerstegspipelinemode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoPassfotoMediaPipe-landmärkenTvåfasflöde. Analys använder multipart file; generering använder JSON med countryCode, bgColor, printLayout (none/4x6/a4), landmärken, bilddimensioner
content-aware-resizeInnehållsmedveten storleksändringSeam carving (caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerPNG-transparensfixareBiRefNet HR-mattingdefringe (0-100), outputFormat (png/webp)
background-replaceErsätt bakgrundrembg (BiRefNet)backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-backgroundGör bakgrund oskarprembg (BiRefNet)intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expandAI-utökning av arbetsytaLaMa (outpainting)extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Vattenstämpel och överlägg

Verktygs-IDNamnNyckelinställningar
watermark-textTextvattenstämpeltext, font, fontSize, color, opacity, position, rotation, tile
watermark-imageBildvattenstämpelopacity, position, scale - andra filen är vattenstämpeln
text-overlayTextöverläggtext, font, fontSize, color, x, y, background, padding, borderRadius
composeBildkompositionx, y, opacity, blend - andra filen läggs som lager överst
meme-generatorMemgeneratortemplateId, 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. Stöder mallläge (JSON-kropp med templateId) eller anpassat bildläge (multipart med fil).

Verktyg

Verktygs-IDNamnNyckelinställningar
infoBildinfo- (returnerar bredd, höjd, format, storlek, kanaler, hasAlpha, DPI, EXIF)
compareBildjämförelsemode (side-by-side/overlay/diff), diffThreshold - andra filen är jämförelsemålet
find-duplicatesHitta dubbletterthreshold (perceptuellt hash-avstånd, standard 8) - flerfil
color-paletteFärgpalettcount (antal dominanta färger), format (hex/rgb)
qr-generateQR-kodgeneratordata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (valfri fil)
barcode-readStreckkodsläsare- (identifierar automatiskt QR, EAN, Code128, DataMatrix, osv.)
image-to-base64Bild till Base64format (data-uri/plain), mimeType
html-to-imageHTML till bildurl, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramHistogramscale (linear/log) - returnerar RGB-histogramdiagram + statistik per kanal
lqip-placeholderLQIP-platshållarewidth (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generateStreckkodsgeneratortext, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). JSON-kropp, ingen filuppladdning.

Layout och komposition

Verktygs-IDNamnNyckelinställningar
collageKollage / rutnättemplate (25+ layouter), gap, backgroundColor, borderRadius - flerfil
stitchSy ihop / kombineradirection (horizontal/vertical/grid), gap, backgroundColor, alignment - flerfil
splitBilddelningmode (grid/rows/cols), rows, cols, tileWidth, tileHeight
borderRam och kantwidth, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautifyFörsköna skärmbildbackgroundType (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-cropCirkelbeskärningzoom (1-5), offsetX, offsetY, borderWidth, borderColor, background (transparent/hex), outputSize
image-padBildutfyllnadtarget (16:9/9:16/1:1/4:3/3:4/custom), ratioW, ratioH, background (color/transparent/blur), color (hex), padding (0-50%)
sprite-sheetSprite-arkcolumns (1-16), padding, background (hex), format (png/webp/jpeg), quality - flerfil (2-64 bilder)

Format och konvertering

Verktygs-IDNamnNyckelinställningar
svg-to-rasterSVG till rasterformat (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorizeBild till SVGcolorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-toolsGIF-verktygaction (resize/optimize/reverse/speed/extract-frames/rotate/add-text), åtgärdsspecifika parametrar
gif-webpGIF/WebP-konverterarequality (1-100), lossless (bool), resizePercent (10-100)

Videoverktyg

Verktygs-IDNamnNyckelinställningar
convert-videoKonvertera videoformat (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-videoKomprimera videoquality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-videoTrimma videostartS, endS, precise (bool, bildrutenoggrann klippning)
mute-videoTysta video-
video-to-gifVideo till GIFfps (1-30), width, startS, durationS (max 60s)
resize-videoÄndra storlek på videowidth, height, preset (custom/2160p/1440p/1080p/720p/480p/360p)
crop-videoBeskär videowidth, height, x, y
rotate-videoRotera videotransform (cw90/ccw90/180/hflip/vflip)
change-fpsÄndra FPSfps (1-120)
video-colorVideofärgbrightness, contrast, saturation, gamma
video-speedVideohastighetfactor (0.25-4), keepPitch (bool)
reverse-videoBaklänges video- (max 5 minuter)
video-loudnormNormalisera ljud- (EBU R128)
aspect-padBildförhållandeutfyllnadtarget (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-padOskärpeutfyllnadtarget (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-videoVattenstämpla videotext, position, fontSize, opacity, color
stabilize-videoStabilisera videosmoothing (5-60, i bildrutor)
gif-to-videoGIF till videoformat (mp4/webm/mov)
video-to-webpVideo till WebPfps, width, quality, loop (bool)
video-to-framesVideo till bildrutormode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videosSlå ihop videor- (flerfil, normaliserad till första videons upplösning)
replace-audioErsätt ljud- (video + ljudfil, två filer)
burn-subtitlesBränn in undertexterfontSize (8-72) - video + undertextfil
embed-subtitlesBädda in undertexterlanguage (ISO 639-2/B-kod) - video + undertextfil
extract-subtitlesExtrahera undertexter- (ger SRT)
images-to-videoBilder till videosecondsPerImage (0.5-10), resolution (1080p/720p/square), fps - flerfil
video-metadataRensa videometadata-
auto-subtitlesAutomatiska undertexter (AI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audioExtrahera ljudformat (mp3/wav/m4a/ogg)

Ljudverktyg

Verktygs-IDNamnNyckelinställningar
convert-audioKonvertera ljudformat (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audioTrimma ljudstartS, endS
volume-adjustJustera volymgainDb (-30 till 30)
normalize-audioNormalisera ljud- (EBU R128, -16 LUFS)
fade-audioTona ljudfadeInS (0-30), fadeOutS (0-30)
reverse-audioBaklänges ljud-
audio-speedLjudhastighetfactor (0.25-4)
pitch-shiftTonhöjdsändringsemitones (-12 till 12)
audio-channelsLjudkanalermode (stereo-to-mono/mono-to-stereo/swap)
silence-removalTa bort tystnadthresholdDb (-80 till -20), minSilenceS (0.1-5)
noise-reductionBrusreduceringstrength (light/medium/strong)
merge-audioSlå ihop ljudformat (mp3/wav/flac/m4a) - flerfil
split-audioDela ljudmode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-makerRingsignalskaparestartS, durationS (1-30)
waveform-imageVågformsbildwidth, height, color (hex)
audio-metadataLjudmetadatastrip (bool), title, artist, album
transcribe-audioTranskribera ljud (AI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Dokumentverktyg

Verktygs-IDNamnNyckelinställningar
merge-pdfSlå ihop PDF:er- (flerfil, upp till 20 PDF:er)
split-pdfDela PDFmode (range/every), range, everyN (1-500)
compress-pdfKomprimera PDFmode (quality/targetSize), quality (1-100), targetSizeKb
rotate-pdfRotera PDFangle (90/180/270), range (sidintervall)
extract-pagesExtrahera sidorrange (qpdf-syntax, t.ex. "1-5,8,10-z")
remove-pagesTa bort sidorpages (qpdf-intervall att ta bort)
organize-pdfOrdna PDForder (qpdf-sidordning, t.ex. "3,1,2,5-z")
protect-pdfSkydda PDFuserPassword, ownerPassword (AES-256)
unlock-pdfLås upp PDFpassword
repair-pdfReparera PDF-
linearize-pdfWebboptimera PDF- (linjärisera för snabb webbvisning)
grayscale-pdfGråskala-PDF-
pdfa-convertKonvertera till PDF/A- (arkiverings-PDF/A-2)
crop-pdfBeskär PDFmargin (0-2000 punkter)
nup-pdfN-up PDFperSheet (2/3/4/8/9/12/16)
booklet-pdfHäftes-PDFperSheet (2/4/6/8)
watermark-pdfVattenstämpla PDFtext, position, fontSize, opacity, rotation
pdf-page-numbersPDF-sidnummerposition (bl/bc/br/tl/tc/tr), fontSize
flatten-pdfPlatta ut PDF- (fixerar formulär och kommentarer)
redact-pdfRedigera bort i PDFterms (string[]), caseSensitive (bool)
sign-pdfSignera PDFAnpassad multipart-rutt med PDF file, signaturfiler sig0, sig1 och placements JSON-array
pdf-to-textPDF till text-
pdf-to-wordPDF till Word-
pdf-metadataPDF-metadatatitle, author, subject, keywords
convert-documentKonvertera dokumentformat (docx/odt/rtf/txt)
convert-presentationKonvertera presentationformat (pptx/odp)
convert-spreadsheetKonvertera kalkylarkformat (xlsx/ods/csv)
excel-to-pdfExcel till PDF-
word-to-pdfWord till PDF-
powerpoint-to-pdfPowerPoint till PDF-
html-to-pdfHTML till PDF- (fjärresurser inaktiverade)
markdown-to-docxMarkdown till Word-
markdown-to-htmlMarkdown till HTML-
markdown-to-pdfMarkdown till PDF- (fjärresurser inaktiverade)
epub-convertKonvertera EPUBformat (pdf/docx/html/md)
to-epubKonvertera till EPUB- (accepterar .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 till bildpages (all/range), format, dpi, quality
pdf-to-jpgPDF till JPGpages, dpi, quality, colorMode
pdf-to-pngPDF till PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF till TIFFpages, dpi, quality, colorMode

Filverktyg

Verktygs-IDNamnNyckelinställningar
chart-makerDiagramskaparekind (bar/line/pie), title, width, height
csv-excelCSV till Excelsheet (kalkylbladsnummer för XLSX-indata) - dubbelriktad
csv-jsonCSV till JSONpretty (bool) - dubbelriktad
json-xmlJSON till XMLpretty (bool) - dubbelriktad
split-csvDela CSVrowsPerFile (1-1000000), keepHeader (bool)
merge-csvsSlå ihop CSV:er- (flerfil, matchande kolumner)
yaml-jsonYAML / JSON- (dubbelriktad)
xml-to-csvXML till CSV- (hittar automatiskt upprepade element)
excel-to-csvExcel till CSVdedikerad konverteringsförinställning som backas upp av convert-spreadsheet
create-zipSkapa ZIP- (flerfil, 2-50 filer)
extract-zipExtrahera ZIP- (bombskyddad)

HTML till bild

Fånga en webbsida som en bild. Till skillnad från andra verktyg accepterar denna slutpunkt application/json istället för multipart-formulärdata (ingen filuppladdning behövs).

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

Content-Type: application/json

ParameterTypStandardBeskrivning
urlstring(obligatorisk)URL att fånga (endast http/https)
formatstring"png"Utdataformat: jpg, png, webp
qualitynumber90Kvalitet 1-100 (endast JPG/WebP)
fullPagebooleanfalseFånga hela den rullningsbara sidan
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280Anpassad visningsområdesbredd 320-3840
viewportHeightnumber720Anpassad visningsområdeshöjd 320-2160

Exempel:

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

Svar:

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

Verktygsunderrutter

Vissa verktyg exponerar ytterligare slutpunkter utöver den vanliga POST /api/v1/tools/<section>/<toolId>:

MetodSökvägBeskrivning
GET/api/v1/tools/popularReturnera populära verktygs-ID:n, med återgång till en kurerad standardlista när användningsdata är gles
POST/api/v1/tools/image/remove-background/effectsApplicera bakgrundseffekter (color/gradient/blur/shadow) utan att köra AI på nytt. Använder cachad mask från den ursprungliga borttagningen.
POST/api/v1/tools/image/edit-metadata/inspectLäs befintlig EXIF/IPTC/XMP-metadata från en bild
POST/api/v1/tools/image/strip-metadata/inspectInspektera metadatafält innan borttagning
POST/api/v1/tools/image/passport-photo/analyzeFas 1: AI-ansiktsdetektering + bakgrundsborttagning. Returnerar ansiktslandmärken och cachad data.
POST/api/v1/tools/image/passport-photo/generateFas 2: Beskär, ändra storlek och panelindela med cachad analys. Ingen ny AI-körning.
POST/api/v1/tools/image/gif-tools/infoHämta GIF-metadata (antal bildrutor, dimensioner, varaktighet)
POST/api/v1/tools/pdf/pdf-to-image/infoHämta PDF-metadata (antal sidor, dimensioner)
POST/api/v1/tools/pdf/pdf-to-image/previewGenerera en förhandsvisning av en specifik PDF-sida
POST/api/v1/tools/pdf/pdf-to-jpg/infoHämta PDF-metadata för den dedikerade JPG-förinställningen
POST/api/v1/tools/pdf/pdf-to-jpg/previewGenerera en förhandsvisning av en PDF-sida med JPG-förinställning
POST/api/v1/tools/pdf/pdf-to-png/infoHämta PDF-metadata för den dedikerade PNG-förinställningen
POST/api/v1/tools/pdf/pdf-to-png/previewGenerera en förhandsvisning av en PDF-sida med PNG-förinställning
POST/api/v1/tools/pdf/pdf-to-tiff/infoHämta PDF-metadata för den dedikerade TIFF-förinställningen
POST/api/v1/tools/pdf/pdf-to-tiff/previewGenerera en förhandsvisning av en PDF-sida med TIFF-förinställning
POST/api/v1/tools/image/svg-to-raster/batchBatchkonvertera flera SVG:er till raster
POST/api/v1/tools/image/image-enhancement/analyzeAnalysera bildkvalitet och returnera förbättringsrekommendationer
POST/api/v1/tools/image/optimize-for-web/previewLättviktsförhandsvisning för live-parameterjustering. Returnerar optimerad bild med storleksheaders.

Batchbearbetning

Applicera ett generiskt batchaktiverat verktyg på flera filer samtidigt. Returnerar ett ZIP-arkiv. Anpassade flerfils- eller flerstegsrutter, såsom PDF-signering och PDF-till-bild-förinställningsrutter, använder sitt eget slutpunktskontrakt istället för den generiska /batch-rutten.

Verktyget ocr-pdf stöder den här generiska /batch-rutten.

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

Samtidighet styrs av CONCURRENT_JOBS (standard: automatiskt identifierad från CPU-kärnor). MAX_BATCH_SIZE begränsar antalet filer per batch (standard: 100; sätt 0 för obegränsat).

Pipelines

Kör en pipeline

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

Varje stegs utdata är nästa stegs indata. Pipelines tillåter 20 steg som standard, konfigurerbart via MAX_PIPELINE_STEPS. Sätt MAX_PIPELINE_STEPS=0 för att ta bort gränsen.

Spara och hantera pipelines

MetodSökvägBeskrivning
POST/api/v1/pipeline/saveSpara en namngiven pipeline (name, description, steps[])
GET/api/v1/pipeline/listLista sparade pipelines (admins ser alla; användare ser sina egna)
DELETE/api/v1/pipeline/:idTa bort (ägare eller admin)
GET/api/v1/pipeline/toolsLista verktygs-ID:n som är giltiga för pipeline-steg

Förloppsspårning

Långvariga jobb, köade verktyg, batchjobb och pipelines sänder realtidsförlopp via Server-Sent Events. Förloppsströmmen är publik och identifieras med jobb-ID, så klienter behöver inte skicka en Authorization-header för att läsa den.

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

Händelseformat:

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

Du kan begära avbrytning av ett köat eller körande jobb med POST /api/v1/jobs/:jobId/cancel. Svaret är {"canceled":true|false}.

Filbibliotek

Persistent fillagring med versionshistorik.

MetodSökvägBeskrivning
POST/api/v1/uploadLadda upp filer till arbetsytan (tillfällig bearbetning)
POST/api/v1/files/uploadLadda upp filer till det persistenta filbiblioteket
POST/api/v1/files/save-resultSpara ett verktygsbearbetningsresultat som en ny filversion
GET/api/v1/filesLista sparade filer (sidindelat, med sökning)
GET/api/v1/files/:idHämta filmetadata + versionskedja
GET/api/v1/files/:id/downloadLadda ner fil
GET/api/v1/files/:id/thumbnailHämta 300px JPEG-miniatyr
DELETE/api/v1/filesMassradera filer och deras versionskedjor (kropp: { ids: [...] })
POST/api/v1/fetch-urlsHämta fjärr-URL:er till arbetsytan för URL-baserade importer
POST/api/v1/previewGenerera en webbläsarkompatibel WebP-förhandsvisning (för HEIC/HEIF/RAW-format)
GET/api/v1/files/:id/previewStrömma en cachad eller genererad webbläsarkompatibel förhandsvisning för en sparad PDF, ett Office-dokument, en video- eller ljudfil
POST/api/v1/preview/generateGenerera en on-demand MP4- eller MP3-förhandsvisning för en uppladdad mediefil utan att spara den först
GET/api/v1/download/:jobId/:filenameLadda ner en bearbetad fil från en arbetsyta

För att automatiskt spara ett verktygsresultat till biblioteket, inkludera fileId som ett multipart-formulärfält som refererar till en befintlig biblioteksfil. Det bearbetade resultatet sparas som en ny version.

Hantering av API-nycklar

MetodSökvägÅtkomstBeskrivning
POST/api/v1/api-keysAuthGenerera ny nyckel - visas en gång
GET/api/v1/api-keysAuthLista nycklar (name, id, lastUsedAt - inte den råa nyckeln)
DELETE/api/v1/api-keys/:idAuthTa bort nyckel

Team

MetodSökvägÅtkomstBeskrivning
GET/api/v1/teamsAdmin (teams:manage)Lista team
POST/api/v1/teamsAdmin (teams:manage)Skapa team
PUT/api/v1/teams/:idAdmin (teams:manage)Byt namn på team
DELETE/api/v1/teams/:idAdmin (teams:manage)Ta bort team (kan inte ta bort standardteamet eller team med medlemmar)

Inställningar

Körtidskonfigurationen använder en sluten uppsättning kända nycklar. Läsning kräver settings:read och skrivning kräver settings:write; säkerhets- och efterlevnadsnycklar kräver dessutom security:manage eller compliance:manage. Hemliga inställningar kräver fullständig administratörsbehörighet, medan autentiseringsuppgifter och tillstånd som hanteras av särskilda slutpunkter är skrivskyddade här. Massuppdateringar valideras innan något värde skrivs.

MetodSökvägBeskrivning
GET/api/v1/settingsHämta alla inställningar
PUT/api/v1/settingsMassuppdatera inställningar (JSON-kropp med nyckel-värde-par)
GET/api/v1/settings/:keyHämta en specifik inställning via nyckel

Representativa nycklar: disabledTools (JSON-array med verktygs-ID:n), enableExperimentalTools (booleskt värde), loginAttemptLimit (säkerhetspolicy) och auditRetentionDays (efterlevnadspolicy). Okända nycklar avvisas.

Inställningar (per användare)

Per-användarinställningar är separata från instansinställningar. Alla autentiserade användare kan läsa och uppdatera sin egen inställningskarta.

MetodSökvägBeskrivning
GET/api/v1/preferencesHämta den aktuella användarens inställningar som { "preferences": { ... } }
PUT/api/v1/preferencesInfoga eller uppdatera en eller flera inställningsnycklar för den aktuella användaren

Roller

Anpassad rollhantering med granulära behörigheter.

MetodSökvägÅtkomstBeskrivning
GET/api/v1/rolesAdmin (audit:read)Lista alla roller med antal användare
POST/api/v1/rolesAdmin (security:manage)Skapa en anpassad roll (name, description, permissions)
PUT/api/v1/roles/:idAdmin (security:manage)Uppdatera en anpassad roll (kan inte ändra inbyggda roller)
DELETE/api/v1/roles/:idAdmin (security:manage)Ta bort en anpassad roll (kan inte ta bort inbyggda roller; berörda användare återgår till user-rollen)

Tillgängliga behörigheter (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.

Granskningslogg

Slutpunkt endast för admin för granskning av säkerhetsrelevanta åtgärder.

MetodSökvägÅtkomstBeskrivning
GET/api/v1/audit-logAdmin (audit:read)Sidindelad granskningslogg med valfria filter

Frågeparametrar:

ParameterBeskrivning
pageSidnummer (standard: 1)
limitPoster per sida (standard: 50, max: 100)
actionFiltrera efter åtgärdstyp (t.ex. ROLE_CREATED, ROLE_DELETED)
ipFiltrera efter käll-IP-adress
fromFiltrera poster efter detta ISO 8601-datum
toFiltrera poster före detta ISO 8601-datum

Analys

MetodSökvägÅtkomstBeskrivning
GET/api/v1/config/analyticsPublikHämta den effektiva analyskonfigurationen (PostHog-nyckel, Sentry DSN, samplingsfrekvens). Nycklar, DSN och instans-ID är tomma när analys är avstängt, antingen från kompileringstidsbakningen eller instansens analyticsEnabled-inställning.
POST/api/v1/feedbackAuthSkicka explicit användarfeedback till det konfigurerade PostHog-projektet som feedback_submitted. Rutten respekterar analysgrindpunkten, begränsar antalet inskick, tar bort kontaktfält om inte contactOk är true, och accepterar aldrig filinnehåll, filnamn, uppladdningssökvägar eller rå privat feltext. När analys är inaktiverad returnerar den { "ok": true, "accepted": false }.
PUT/api/v1/settingsAdmin (settings:write)Ställ in den instansomfattande opt-outen. Skicka en JSON-kropp { "analyticsEnabled": "false" } för att stänga av analys för alla, eller "true" för att slå på den igen.

Funktioner / AI-buntar

Hantera AI-funktionsbuntar (installera/avinstallera AI-modellpaket i Docker-miljön). Föredra slutpunkten för installation på verktygsnivå när du aktiverar ett verktyg från anpassad automatisering: vissa AI-verktyg behöver mer än en delad bunt, och denna slutpunkt hoppar över redan installerade buntar och köar endast de saknade.

OCR är en valfri förbättring snarare än ett hårt beroende. Dess fast Tesseract-nivå fungerar utan ett paket; POST /api/v1/admin/features/ocr/install installerar det signerade RapidOCR-paketet för balanced och best på Linux amd64 eller arm64. Den exakta OCR-körtiden använder CPU på endast CPU- och NVIDIA-värdar och kräver minst 4 GiB effektivt minne (den konfigurerade behållarens cgroup-gräns, annars värdminne). SnapOtter rapporterar requiredMemoryBytes, effectiveMemoryBytes och en insufficient-memory-kompatibilitetsskäl och avvisar en inkompatibel installation före nedladdning. Detta minneskrav gäller inte för fast. Paketet är cirka 208-234 MiB att ladda ner och 409-488 MiB installerat, beroende på målet; det signerade indexet binder de exakta storlekarna som tillämpas under installationen.

MetodSökvägÅtkomstBeskrivning
GET/api/v1/featuresAuthLista alla funktionsbuntar och deras installationsstatus
POST/api/v1/admin/features/:bundleId/installAdmin (features:manage)Installera en funktionsbunt (asynkron, returnerar jobId för förloppsspårning)
POST/api/v1/admin/tools/:toolId/features/installAdmin (features:manage)Installera varje bunt som ett verktyg kräver; returnerar köad/överhoppad status per bunt
POST/api/v1/admin/features/:bundleId/uninstallAdmin (features:manage)Avinstallera en funktionsbunt och rensa upp modellfiler
GET/api/v1/admin/features/disk-usageAdmin (features:manage)Hämta total diskanvändning för AI-modeller
POST/api/v1/admin/features/importAdmin (features:manage)Importera ett äldre AI-paket (file) eller en signerad offline OCR-version (index plus archive)

En luftgap OCR-import måste innehålla releasens signerade ocr-runtime-index.json och det matchande plattformsarkivet. SnapOtter tillämpar samma Ed25519-signatur, artefakthash, kompatibilitet, extraktion och röktestkontroller som används av onlineinstallation:

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"

Använd linux-arm64-cpu-py311-arkivet på arm64. En signerad artefakt för ett annat mål avvisas istället för att installeras.

Adminåtgärder

Driftsslutpunkter för observerbarhet, support, användningsrapportering och backupstatus.

MetodSökvägÅtkomstBeskrivning
GET/api/v1/admin/log-levelAdmin (settings:write)Läs den aktuella körtidsloggnivån
POST/api/v1/admin/log-levelAdmin (settings:write)Ändra körtidsloggnivån (fatal, error, warn, info, debug, trace eller silent)
GET/api/v1/metricsAdmin (system:health)Prometheus-mätvärden i textformat
GET/api/v1/admin/support-bundleAdmin (system:health)Ladda ner en redigerad diagnostisk support-bunt-ZIP
GET/api/v1/admin/usageAdmin (audit:read)Data för användningsdashboarden, med valfri days-frågeparameter
GET/api/v1/admin/backup-statusAdmin (system:health)Läs metadata för senaste backup och färskhetsstatus
POST/api/v1/admin/backup-statusAdmin (system:health)Registrera en slutförd backup (type, valfri sizeBytes, valfri notes)

Enterprise-API:er

Dessa rutter är licensgrindade av sin relaterade enterprise-funktion. De kräver fortfarande den angivna SnapOtter-behörigheten.

Inbyggd administratör med full behörighet betyder att den autentiserade aktören har rollen admin och hela den effektiva uppsättningen administratörsbehörigheter. Ett API-nyckelomfång som saknar någon administratörsbehörighet kvalificerar inte.

MetodSökvägÅtkomstBeskrivning
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Exportera granskningsposter som JSON eller CSV med filter
GET/api/v1/enterprise/config/exportInbyggd administratör med full behörighetExportera redigerad instanskonfiguration, anpassade roller och team
POST/api/v1/enterprise/config/importInbyggd administratör med full behörighetImportera konfiguration, med valfri torrkörning
GET/api/v1/enterprise/ip-allowlistAdmin (security:manage)Läs konfigurerad CIDR-tillåtningslista
PUT/api/v1/enterprise/ip-allowlistAdmin (security:manage)Uppdatera CIDR-tillåtningslista med förhindrande av självutlåsning
GET/api/v1/enterprise/legal-holdAdmin (compliance:manage)Lista rättsliga spärrar för användare och team
PUT/api/v1/enterprise/legal-holdAdmin (compliance:manage)Applicera eller häv en rättslig spärr på en användare eller ett team
POST/api/v1/enterprise/scim/tokenAdmin (users:manage)Generera en SCIM-bärartoken, returneras en gång
DELETE/api/v1/enterprise/scim/tokenAdmin (users:manage)Återkalla den aktuella SCIM-bärartoken
GET/api/v1/enterprise/siem/configAdmin (webhooks:manage)Läs SIEM-vidarebefordringskonfiguration
PUT/api/v1/enterprise/siem/configAdmin (webhooks:manage)Uppdatera SIEM-vidarebefordringskonfiguration
GET/api/v1/enterprise/webhooksAdmin (webhooks:manage)Lista webhook-destinationer
POST/api/v1/enterprise/webhooksAdmin (webhooks:manage)Skapa en webhook-destination
PUT/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Uppdatera en webhook-destination
DELETE/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Ta bort en webhook-destination
POST/api/v1/enterprise/webhooks/:index/testAdmin (webhooks:manage)Skicka en test-webhook-nyttolast
POST/api/v1/enterprise/users/:id/exportAdmin (compliance:manage)Starta ett GDPR-användarexportjobb
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin (compliance:manage)Läs GDPR-exportstatus och nedladdnings-URL
DELETE/api/v1/enterprise/users/:id/purgeAdmin (compliance:manage)Rensa permanent en användares data efter bekräftelse
DELETE/api/v1/enterprise/teams/:id/purgeAdmin (compliance:manage)Rensa permanent ett teams data efter bekräftelse
GET/api/v1/admin/versionAdmin (system:health)Läs metadata för app-, build-, Node- och schemaversion
GET/api/v1/admin/migrations/pendingAdmin (system:health)Jämför paketerade migreringar med tillämpade migreringar
GET/api/v1/admin/upgrade-checkAdmin (system:health)Kör kontroller av uppgraderingsberedskap

SCIM 2.0

SCIM-upptäcktsslutpunkter är publika. Användar- och gruppslutpunkter kräver SCIM-bärartoken som genererades ovan.

MetodSökvägÅtkomstBeskrivning
GET/api/v1/scim/v2/ServiceProviderConfigPublikSCIM-serverfunktioner
GET/api/v1/scim/v2/SchemasPublikSCIM-schemaupptäckt
GET/api/v1/scim/v2/ResourceTypesPublikSCIM-resurstypsupptäckt
GET/api/v1/scim/v2/UsersSCIM-tokenLista användare, med valfritt SCIM-filter
POST/api/v1/scim/v2/UsersSCIM-tokenSkapa en användare
GET/api/v1/scim/v2/Users/:idSCIM-tokenHämta en användare
PUT/api/v1/scim/v2/Users/:idSCIM-tokenErsätt en användare
DELETE/api/v1/scim/v2/Users/:idSCIM-tokenMjukt inaktivera en användare
GET/api/v1/scim/v2/GroupsSCIM-tokenLista team som SCIM-grupper
POST/api/v1/scim/v2/GroupsSCIM-tokenSkapa ett team
GET/api/v1/scim/v2/Groups/:idSCIM-tokenHämta ett team
PUT/api/v1/scim/v2/Groups/:idSCIM-tokenErsätt ett team och gruppmedlemskap
DELETE/api/v1/scim/v2/Groups/:idSCIM-tokenTa bort ett team

Memmallar

Stödjande API för memgeneratorverktyget.

MetodSökvägÅtkomstBeskrivning
GET/api/v1/meme-templatesAuthLista alla tillgängliga memmallar med textrutepositioner
GET/api/v1/meme-templates/full/:filenameAuthServera mallbild i full storlek
GET/api/v1/meme-templates/thumbs/:filenameAuthServera mallminiatyr
GET/api/v1/meme-templates/fonts/:filenameAuthServera typsnittsfil som används för rendering av memtext

Felsvar

Alla fel returnerar JSON:

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
StatusBetydelse
400Ogiltig förfrågan / validering misslyckades
401Inte autentiserad
403Otillräckliga behörigheter
404Resurs hittades inte
413Filen för stor (se MAX_UPLOAD_SIZE_MB)
422Bearbetning misslyckades efter validering
429Hastighetsbegränsad (se RATE_LIMIT_PER_MIN)
501Nödvändig AI-funktionsbunt är inte installerad (FEATURE_NOT_INSTALLED)
500Internt serverfel