This page was machine-translated. Spotted a mistake?Help improve it.
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
curl http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer <session-token>"

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 http://localhost:1349/api/v1/tools/image/resize \
  -H "Authorization: Bearer si_<your-key>"

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":"...","mfaRequired":true|false} 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 "[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> ä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 / textextraktionPaddleOCR / Tesseractquality (fast/balanced/best), 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, PDF OCR och PDF-till-bild-förinställningsrutter, använder sitt eget slutpunktskontrakt istället för den generiska /batch-rutten.

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

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

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örtidskonfiguration i nyckel-värde-format (läses av alla autentiserade användare, skrivs endast av admin).

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

Kända nycklar: disabledTools (JSON-array av verktygs-ID:n), enableExperimentalTools (bool-sträng), loginAttemptLimit (nummer).

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.

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 offline-AI-buntarkiv

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.

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/exportAdmin (system:health)Exportera redigerad instanskonfiguration, anpassade roller och team
POST/api/v1/enterprise/config/importAdmin (system:health)Importera 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