Files
SnapOtter/apps/docs/sv/api/rest.md
T
SnapOtterandGitHub 4963ab3bbd feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
2026-07-11 13:52:47 +08:00

46 KiB
Raw Blame History

description, i18n_source_hash, i18n_provenance, i18n_output_hash
description i18n_source_hash i18n_provenance i18n_output_hash
Fullständig REST API-referens. Verktygsslutpunkter, batchbearbetning, pipelines, filbibliotek, autentisering, team och adminåtgärder. 8646977f7cc9 machine 4756237a0bdc

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

# 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

# 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

Metod Sökväg Åtkomst Beskrivning
POST /api/auth/login Publik Logga in, hämta sessionstoken
POST /api/auth/logout Auth Förstör aktuell session
GET /api/auth/session Auth Validera aktuell session
POST /api/auth/change-password Auth Byt eget lösenord (ogiltigförklarar alla andra sessioner + API-nycklar)
GET /api/auth/users Admin Lista alla användare
POST /api/auth/register Admin Skapa en ny användare
PUT /api/auth/users/:id Admin Uppdatera användarroll eller team
POST /api/auth/users/:id/reset-password Admin Återställ användarens lösenord
DELETE /api/auth/users/:id Admin Ta bort en användare
GET /api/v1/config/auth Publik Kontrollera om autentisering är aktiverad ({ authEnabled: bool })
POST /api/auth/mfa/enroll Auth Starta TOTP MFA-registrering. Kräver enterprise-funktionen mfa
POST /api/auth/mfa/verify Auth Bekräfta MFA-registrering med en TOTP-kod
POST /api/auth/mfa/complete Publik Slutför en väntande MFA-inloggningsutmaning
POST /api/auth/mfa/disable Auth Inaktivera MFA för aktuell användare
POST /api/auth/users/:id/mfa/reset Admin (users:manage) Återställ MFA för en användare
GET /api/auth/oidc/login Publik Starta OIDC-inloggning när OIDC är aktiverat
GET /api/auth/oidc/callback Publik OIDC-auktoriseringsåterkallelse
GET /api/auth/saml/metadata Publik SAML SP-metadata-XML när SAML är aktiverat
GET /api/auth/saml/login Publik Starta SAML-inloggning
POST /api/auth/saml/callback Publik SAML 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örighet Admin Anvä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

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/health Publik Grundläggande hälsokontroll. Returnerar {"status":"healthy","version":"..."} med 200, eller {"status":"unhealthy"} med 503 om databasen inte kan nås.
GET /api/v1/readyz Publik Beredskapssond. 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/health Admin (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:

# 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-ID Namn Nyckelinställningar
resize Ändra storlek width, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, plus 23 förinställningar för sociala medier
crop Beskär left, top, width, height, unit (px/procent)
rotate Rotera och vänd angle, horizontal (bool), vertical (bool)
convert Konvertera format (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compress Komprimera mode (quality/targetSize), quality (1100), targetSizeKb

Optimering

Verktygs-ID Namn Nyckelinställningar
optimize-for-web Optimera för webben format (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadata Ta bort metadata -
edit-metadata Redigera metadata title, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-rename Massomdöp pattern (stöder {n}, {date}, {original}), startIndex, padding
image-to-pdf Bild till PDF pageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
favicon Favicon-generator padding, backgroundColor, borderRadius - genererar alla standardstorlekar

Justeringar

Verktygs-ID Namn Nyckelinställningar
adjust-colors Justera färger brightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpening Skärpa method (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-color Ersätt färg sourceColor, targetColor (ersättning), makeTransparent, tolerance
color-blindness Simulering av färgblindhet simulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, standard "deuteranomaly")
duotone Duoton shadow (hex), highlight (hex), intensity (0-100)
pixelate Pixelera blockSize (2-128), region ({left, top, width, height} för partiell pixelering)
vignette Vinjett strength (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-ID Namn AI-modell Nyckelinställningar
remove-background Ta bort bakgrund rembg (BiRefNet / U2-Net) model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscale Bilduppskalning RealESRGAN scale (2/4), model, faceEnhance, denoise, format, quality
erase-object Objektsudd LaMa (ONNX) Mask skickas som andra fildel (fältnamn mask), format, quality
ocr OCR / textextraktion PaddleOCR / Tesseract quality (fast/balanced/best), language, enhance
blur-faces Ansikts-/PII-oskärpa MediaPipe blurRadius, sensitivity
smart-crop Smart beskärning MediaPipe + Sharp mode (subject/face/trim), strategy (attention/entropy), width, height, padding, facePreset (closeup/head-shoulders/upper-body/half-body), sensitivity, threshold, padToSquare, padColor, targetSize, quality
image-enhancement Bildförbättring Analysbaserad mode (auto/exposure/contrast/color/sharpness), strength
enhance-faces Ansiktsförbättring GFPGAN / CodeFormer model (gfpgan/codeformer), strength, sensitivity, centerFace
colorize AI-färgläggning DDColor intensity, model
noise-removal Brusreducering Nivåindelad brusreducering tier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removal Borttagning av röda ögon Ansiktslandmärke + färganalys sensitivity, strength
restore-photo Fotorestaurering Flerstegspipeline mode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photo Passfoto MediaPipe-landmärken Tvåfasflöde. Analys använder multipart file; generering använder JSON med countryCode, bgColor, printLayout (none/4x6/a4), landmärken, bilddimensioner
content-aware-resize Innehållsmedveten storleksändring Seam carving (caire) width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixer PNG-transparensfixare BiRefNet HR-matting defringe (0-100), outputFormat (png/webp)
background-replace Ersätt bakgrund rembg (BiRefNet) backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-background Gör bakgrund oskarp rembg (BiRefNet) intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expand AI-utökning av arbetsyta LaMa (outpainting) extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Vattenstämpel och överlägg

Verktygs-ID Namn Nyckelinställningar
watermark-text Textvattenstämpel text, font, fontSize, color, opacity, position, rotation, tile
watermark-image Bildvattenstämpel opacity, position, scale - andra filen är vattenstämpeln
text-overlay Textöverlägg text, font, fontSize, color, x, y, background, padding, borderRadius
compose Bildkomposition x, y, opacity, blend - andra filen läggs som lager överst
meme-generator Memgenerator templateId, 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-ID Namn Nyckelinställningar
info Bildinfo - (returnerar bredd, höjd, format, storlek, kanaler, hasAlpha, DPI, EXIF)
compare Bildjämförelse mode (side-by-side/overlay/diff), diffThreshold - andra filen är jämförelsemålet
find-duplicates Hitta dubbletter threshold (perceptuellt hash-avstånd, standard 8) - flerfil
color-palette Färgpalett count (antal dominanta färger), format (hex/rgb)
qr-generate QR-kodgenerator data, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (valfri fil)
barcode-read Streckkodsläsare - (identifierar automatiskt QR, EAN, Code128, DataMatrix, osv.)
image-to-base64 Bild till Base64 format (data-uri/plain), mimeType
html-to-image HTML till bild url, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogram Histogram scale (linear/log) - returnerar RGB-histogramdiagram + statistik per kanal
lqip-placeholder LQIP-platshållare width (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generate Streckkodsgenerator text, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). JSON-kropp, ingen filuppladdning.

Layout och komposition

Verktygs-ID Namn Nyckelinställningar
collage Kollage / rutnät template (25+ layouter), gap, backgroundColor, borderRadius - flerfil
stitch Sy ihop / kombinera direction (horizontal/vertical/grid), gap, backgroundColor, alignment - flerfil
split Bilddelning mode (grid/rows/cols), rows, cols, tileWidth, tileHeight
border Ram och kant width, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautify Försköna skärmbild backgroundType (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-crop Cirkelbeskärning zoom (1-5), offsetX, offsetY, borderWidth, borderColor, background (transparent/hex), outputSize
image-pad Bildutfyllnad target (16:9/9:16/1:1/4:3/3:4/custom), ratioW, ratioH, background (color/transparent/blur), color (hex), padding (0-50%)
sprite-sheet Sprite-ark columns (1-16), padding, background (hex), format (png/webp/jpeg), quality - flerfil (2-64 bilder)

Format och konvertering

Verktygs-ID Namn Nyckelinställningar
svg-to-raster SVG till raster format (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorize Bild till SVG colorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-tools GIF-verktyg action (resize/optimize/reverse/speed/extract-frames/rotate/add-text), åtgärdsspecifika parametrar
gif-webp GIF/WebP-konverterare quality (1-100), lossless (bool), resizePercent (10-100)

Videoverktyg

Verktygs-ID Namn Nyckelinställningar
convert-video Konvertera video format (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-video Komprimera video quality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-video Trimma video startS, endS, precise (bool, bildrutenoggrann klippning)
mute-video Tysta video -
video-to-gif Video till GIF fps (1-30), width, startS, durationS (max 60s)
resize-video Ändra storlek på video width, height, preset (custom/2160p/1440p/1080p/720p/480p/360p)
crop-video Beskär video width, height, x, y
rotate-video Rotera video transform (cw90/ccw90/180/hflip/vflip)
change-fps Ändra FPS fps (1-120)
video-color Videofärg brightness, contrast, saturation, gamma
video-speed Videohastighet factor (0.25-4), keepPitch (bool)
reverse-video Baklänges video - (max 5 minuter)
video-loudnorm Normalisera ljud - (EBU R128)
aspect-pad Bildförhållandeutfyllnad target (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-pad Oskärpeutfyllnad target (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-video Vattenstämpla video text, position, fontSize, opacity, color
stabilize-video Stabilisera video smoothing (5-60, i bildrutor)
gif-to-video GIF till video format (mp4/webm/mov)
video-to-webp Video till WebP fps, width, quality, loop (bool)
video-to-frames Video till bildrutor mode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videos Slå ihop videor - (flerfil, normaliserad till första videons upplösning)
replace-audio Ersätt ljud - (video + ljudfil, två filer)
burn-subtitles Bränn in undertexter fontSize (8-72) - video + undertextfil
embed-subtitles Bädda in undertexter language (ISO 639-2/B-kod) - video + undertextfil
extract-subtitles Extrahera undertexter - (ger SRT)
images-to-video Bilder till video secondsPerImage (0.5-10), resolution (1080p/720p/square), fps - flerfil
video-metadata Rensa videometadata -
auto-subtitles Automatiska undertexter (AI) language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audio Extrahera ljud format (mp3/wav/m4a/ogg)

Ljudverktyg

Verktygs-ID Namn Nyckelinställningar
convert-audio Konvertera ljud format (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audio Trimma ljud startS, endS
volume-adjust Justera volym gainDb (-30 till 30)
normalize-audio Normalisera ljud - (EBU R128, -16 LUFS)
fade-audio Tona ljud fadeInS (0-30), fadeOutS (0-30)
reverse-audio Baklänges ljud -
audio-speed Ljudhastighet factor (0.25-4)
pitch-shift Tonhöjdsändring semitones (-12 till 12)
audio-channels Ljudkanaler mode (stereo-to-mono/mono-to-stereo/swap)
silence-removal Ta bort tystnad thresholdDb (-80 till -20), minSilenceS (0.1-5)
noise-reduction Brusreducering strength (light/medium/strong)
merge-audio Slå ihop ljud format (mp3/wav/flac/m4a) - flerfil
split-audio Dela ljud mode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-maker Ringsignalskapare startS, durationS (1-30)
waveform-image Vågformsbild width, height, color (hex)
audio-metadata Ljudmetadata strip (bool), title, artist, album
transcribe-audio Transkribera ljud (AI) language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Dokumentverktyg

Verktygs-ID Namn Nyckelinställningar
merge-pdf Slå ihop PDF:er - (flerfil, upp till 20 PDF:er)
split-pdf Dela PDF mode (range/every), range, everyN (1-500)
compress-pdf Komprimera PDF mode (quality/targetSize), quality (1-100), targetSizeKb
rotate-pdf Rotera PDF angle (90/180/270), range (sidintervall)
extract-pages Extrahera sidor range (qpdf-syntax, t.ex. "1-5,8,10-z")
remove-pages Ta bort sidor pages (qpdf-intervall att ta bort)
organize-pdf Ordna PDF order (qpdf-sidordning, t.ex. "3,1,2,5-z")
protect-pdf Skydda PDF userPassword, ownerPassword (AES-256)
unlock-pdf Lås upp PDF password
repair-pdf Reparera PDF -
linearize-pdf Webboptimera PDF - (linjärisera för snabb webbvisning)
grayscale-pdf Gråskala-PDF -
pdfa-convert Konvertera till PDF/A - (arkiverings-PDF/A-2)
crop-pdf Beskär PDF margin (0-2000 punkter)
nup-pdf N-up PDF perSheet (2/3/4/8/9/12/16)
booklet-pdf Häftes-PDF perSheet (2/4/6/8)
watermark-pdf Vattenstämpla PDF text, position, fontSize, opacity, rotation
pdf-page-numbers PDF-sidnummer position (bl/bc/br/tl/tc/tr), fontSize
flatten-pdf Platta ut PDF - (fixerar formulär och kommentarer)
redact-pdf Redigera bort i PDF terms (string[]), caseSensitive (bool)
sign-pdf Signera PDF Anpassad multipart-rutt med PDF file, signaturfiler sig0, sig1 och placements JSON-array
pdf-to-text PDF till text -
pdf-to-word PDF till Word -
pdf-metadata PDF-metadata title, author, subject, keywords
convert-document Konvertera dokument format (docx/odt/rtf/txt)
convert-presentation Konvertera presentation format (pptx/odp)
convert-spreadsheet Konvertera kalkylark format (xlsx/ods/csv)
excel-to-pdf Excel till PDF -
word-to-pdf Word till PDF -
powerpoint-to-pdf PowerPoint till PDF -
html-to-pdf HTML till PDF - (fjärresurser inaktiverade)
markdown-to-docx Markdown till Word -
markdown-to-html Markdown till HTML -
markdown-to-pdf Markdown till PDF - (fjärresurser inaktiverade)
epub-convert Konvertera EPUB format (pdf/docx/html/md)
to-epub Konvertera till EPUB - (accepterar .docx, .md, .html, .txt)
ocr-pdf PDF OCR (AI) quality (fast/balanced/best), language (auto/en/de/fr/es/zh/ja/ko), pages
pdf-to-image PDF till bild pages (all/range), format, dpi, quality
pdf-to-jpg PDF till JPG pages, dpi, quality, colorMode
pdf-to-png PDF till PNG pages, dpi, quality, colorMode
pdf-to-tiff PDF till TIFF pages, dpi, quality, colorMode

Filverktyg

Verktygs-ID Namn Nyckelinställningar
chart-maker Diagramskapare kind (bar/line/pie), title, width, height
csv-excel CSV till Excel sheet (kalkylbladsnummer för XLSX-indata) - dubbelriktad
csv-json CSV till JSON pretty (bool) - dubbelriktad
json-xml JSON till XML pretty (bool) - dubbelriktad
split-csv Dela CSV rowsPerFile (1-1000000), keepHeader (bool)
merge-csvs Slå ihop CSV:er - (flerfil, matchande kolumner)
yaml-json YAML / JSON - (dubbelriktad)
xml-to-csv XML till CSV - (hittar automatiskt upprepade element)
excel-to-csv Excel till CSV dedikerad konverteringsförinställning som backas upp av convert-spreadsheet
create-zip Skapa ZIP - (flerfil, 2-50 filer)
extract-zip Extrahera 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

Parameter Typ Standard Beskrivning
url string (obligatorisk) URL att fånga (endast http/https)
format string "png" Utdataformat: jpg, png, webp
quality number 90 Kvalitet 1-100 (endast JPG/WebP)
fullPage boolean false Fånga hela den rullningsbara sidan
devicePreset string "desktop" desktop, tablet, mobile, custom
viewportWidth number 1280 Anpassad visningsområdesbredd 320-3840
viewportHeight number 720 Anpassad visningsområdeshöjd 320-2160

Exempel:

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:

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

Metod Sökväg Beskrivning
GET /api/v1/tools/popular Returnera 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/effects Applicera 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/inspect Läs befintlig EXIF/IPTC/XMP-metadata från en bild
POST /api/v1/tools/image/strip-metadata/inspect Inspektera metadatafält innan borttagning
POST /api/v1/tools/image/passport-photo/analyze Fas 1: AI-ansiktsdetektering + bakgrundsborttagning. Returnerar ansiktslandmärken och cachad data.
POST /api/v1/tools/image/passport-photo/generate Fas 2: Beskär, ändra storlek och panelindela med cachad analys. Ingen ny AI-körning.
POST /api/v1/tools/image/gif-tools/info Hämta GIF-metadata (antal bildrutor, dimensioner, varaktighet)
POST /api/v1/tools/pdf/pdf-to-image/info Hämta PDF-metadata (antal sidor, dimensioner)
POST /api/v1/tools/pdf/pdf-to-image/preview Generera en förhandsvisning av en specifik PDF-sida
POST /api/v1/tools/pdf/pdf-to-jpg/info Hämta PDF-metadata för den dedikerade JPG-förinställningen
POST /api/v1/tools/pdf/pdf-to-jpg/preview Generera en förhandsvisning av en PDF-sida med JPG-förinställning
POST /api/v1/tools/pdf/pdf-to-png/info Hämta PDF-metadata för den dedikerade PNG-förinställningen
POST /api/v1/tools/pdf/pdf-to-png/preview Generera en förhandsvisning av en PDF-sida med PNG-förinställning
POST /api/v1/tools/pdf/pdf-to-tiff/info Hämta PDF-metadata för den dedikerade TIFF-förinställningen
POST /api/v1/tools/pdf/pdf-to-tiff/preview Generera en förhandsvisning av en PDF-sida med TIFF-förinställning
POST /api/v1/tools/image/svg-to-raster/batch Batchkonvertera flera SVG:er till raster
POST /api/v1/tools/image/image-enhancement/analyze Analysera bildkvalitet och returnera förbättringsrekommendationer
POST /api/v1/tools/image/optimize-for-web/preview Lä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.

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

# 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

Metod Sökväg Beskrivning
POST /api/v1/pipeline/save Spara en namngiven pipeline (name, description, steps[])
GET /api/v1/pipeline/list Lista sparade pipelines (admins ser alla; användare ser sina egna)
DELETE /api/v1/pipeline/:id Ta bort (ägare eller admin)
GET /api/v1/pipeline/tools Lista 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.

# 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.

Metod Sökväg Beskrivning
POST /api/v1/upload Ladda upp filer till arbetsytan (tillfällig bearbetning)
POST /api/v1/files/upload Ladda upp filer till det persistenta filbiblioteket
POST /api/v1/files/save-result Spara ett verktygsbearbetningsresultat som en ny filversion
GET /api/v1/files Lista sparade filer (sidindelat, med sökning)
GET /api/v1/files/:id Hämta filmetadata + versionskedja
GET /api/v1/files/:id/download Ladda ner fil
GET /api/v1/files/:id/thumbnail Hämta 300px JPEG-miniatyr
DELETE /api/v1/files Massradera filer och deras versionskedjor (kropp: { ids: [...] })
POST /api/v1/fetch-urls Hämta fjärr-URL:er till arbetsytan för URL-baserade importer
POST /api/v1/preview Generera en webbläsarkompatibel WebP-förhandsvisning (för HEIC/HEIF/RAW-format)
GET /api/v1/files/:id/preview Strö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/generate Generera en on-demand MP4- eller MP3-förhandsvisning för en uppladdad mediefil utan att spara den först
GET /api/v1/download/:jobId/:filename Ladda 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

Metod Sökväg Åtkomst Beskrivning
POST /api/v1/api-keys Auth Generera ny nyckel - visas en gång
GET /api/v1/api-keys Auth Lista nycklar (name, id, lastUsedAt - inte den råa nyckeln)
DELETE /api/v1/api-keys/:id Auth Ta bort nyckel

Team

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/teams Admin (teams:manage) Lista team
POST /api/v1/teams Admin (teams:manage) Skapa team
PUT /api/v1/teams/:id Admin (teams:manage) Byt namn på team
DELETE /api/v1/teams/:id Admin (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).

Metod Sökväg Beskrivning
GET /api/v1/settings Hämta alla inställningar
PUT /api/v1/settings Massuppdatera inställningar (JSON-kropp med nyckel-värde-par)
GET /api/v1/settings/:key Hä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.

Metod Sökväg Beskrivning
GET /api/v1/preferences Hämta den aktuella användarens inställningar som { "preferences": { ... } }
PUT /api/v1/preferences Infoga eller uppdatera en eller flera inställningsnycklar för den aktuella användaren

Roller

Anpassad rollhantering med granulära behörigheter.

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/roles Admin (audit:read) Lista alla roller med antal användare
POST /api/v1/roles Admin (security:manage) Skapa en anpassad roll (name, description, permissions)
PUT /api/v1/roles/:id Admin (security:manage) Uppdatera en anpassad roll (kan inte ändra inbyggda roller)
DELETE /api/v1/roles/:id Admin (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.

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/audit-log Admin (audit:read) Sidindelad granskningslogg med valfria filter

Frågeparametrar:

Parameter Beskrivning
page Sidnummer (standard: 1)
limit Poster per sida (standard: 50, max: 100)
action Filtrera efter åtgärdstyp (t.ex. ROLE_CREATED, ROLE_DELETED)
ip Filtrera efter käll-IP-adress
from Filtrera poster efter detta ISO 8601-datum
to Filtrera poster före detta ISO 8601-datum

Analys

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/config/analytics Publik Hä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/feedback Auth Skicka 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/settings Admin (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.

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/features Auth Lista alla funktionsbuntar och deras installationsstatus
POST /api/v1/admin/features/:bundleId/install Admin (features:manage) Installera en funktionsbunt (asynkron, returnerar jobId för förloppsspårning)
POST /api/v1/admin/tools/:toolId/features/install Admin (features:manage) Installera varje bunt som ett verktyg kräver; returnerar köad/överhoppad status per bunt
POST /api/v1/admin/features/:bundleId/uninstall Admin (features:manage) Avinstallera en funktionsbunt och rensa upp modellfiler
GET /api/v1/admin/features/disk-usage Admin (features:manage) Hämta total diskanvändning för AI-modeller
POST /api/v1/admin/features/import Admin (features:manage) Importera ett offline-AI-buntarkiv

Adminåtgärder

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

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/admin/log-level Admin (settings:write) Läs den aktuella körtidsloggnivån
POST /api/v1/admin/log-level Admin (settings:write) Ändra körtidsloggnivån (fatal, error, warn, info, debug, trace eller silent)
GET /api/v1/metrics Admin (system:health) Prometheus-mätvärden i textformat
GET /api/v1/admin/support-bundle Admin (system:health) Ladda ner en redigerad diagnostisk support-bunt-ZIP
GET /api/v1/admin/usage Admin (audit:read) Data för användningsdashboarden, med valfri days-frågeparameter
GET /api/v1/admin/backup-status Admin (system:health) Läs metadata för senaste backup och färskhetsstatus
POST /api/v1/admin/backup-status Admin (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.

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/enterprise/audit/export Admin (audit:read) Exportera granskningsposter som JSON eller CSV med filter
GET /api/v1/enterprise/config/export Admin (system:health) Exportera redigerad instanskonfiguration, anpassade roller och team
POST /api/v1/enterprise/config/import Admin (system:health) Importera konfiguration, med valfri torrkörning
GET /api/v1/enterprise/ip-allowlist Admin (security:manage) Läs konfigurerad CIDR-tillåtningslista
PUT /api/v1/enterprise/ip-allowlist Admin (security:manage) Uppdatera CIDR-tillåtningslista med förhindrande av självutlåsning
GET /api/v1/enterprise/legal-hold Admin (compliance:manage) Lista rättsliga spärrar för användare och team
PUT /api/v1/enterprise/legal-hold Admin (compliance:manage) Applicera eller häv en rättslig spärr på en användare eller ett team
POST /api/v1/enterprise/scim/token Admin (users:manage) Generera en SCIM-bärartoken, returneras en gång
DELETE /api/v1/enterprise/scim/token Admin (users:manage) Återkalla den aktuella SCIM-bärartoken
GET /api/v1/enterprise/siem/config Admin (webhooks:manage) Läs SIEM-vidarebefordringskonfiguration
PUT /api/v1/enterprise/siem/config Admin (webhooks:manage) Uppdatera SIEM-vidarebefordringskonfiguration
GET /api/v1/enterprise/webhooks Admin (webhooks:manage) Lista webhook-destinationer
POST /api/v1/enterprise/webhooks Admin (webhooks:manage) Skapa en webhook-destination
PUT /api/v1/enterprise/webhooks/:index Admin (webhooks:manage) Uppdatera en webhook-destination
DELETE /api/v1/enterprise/webhooks/:index Admin (webhooks:manage) Ta bort en webhook-destination
POST /api/v1/enterprise/webhooks/:index/test Admin (webhooks:manage) Skicka en test-webhook-nyttolast
POST /api/v1/enterprise/users/:id/export Admin (compliance:manage) Starta ett GDPR-användarexportjobb
GET /api/v1/enterprise/users/:id/export/:jobId Admin (compliance:manage) Läs GDPR-exportstatus och nedladdnings-URL
DELETE /api/v1/enterprise/users/:id/purge Admin (compliance:manage) Rensa permanent en användares data efter bekräftelse
DELETE /api/v1/enterprise/teams/:id/purge Admin (compliance:manage) Rensa permanent ett teams data efter bekräftelse
GET /api/v1/admin/version Admin (system:health) Läs metadata för app-, build-, Node- och schemaversion
GET /api/v1/admin/migrations/pending Admin (system:health) Jämför paketerade migreringar med tillämpade migreringar
GET /api/v1/admin/upgrade-check Admin (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.

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/scim/v2/ServiceProviderConfig Publik SCIM-serverfunktioner
GET /api/v1/scim/v2/Schemas Publik SCIM-schemaupptäckt
GET /api/v1/scim/v2/ResourceTypes Publik SCIM-resurstypsupptäckt
GET /api/v1/scim/v2/Users SCIM-token Lista användare, med valfritt SCIM-filter
POST /api/v1/scim/v2/Users SCIM-token Skapa en användare
GET /api/v1/scim/v2/Users/:id SCIM-token Hämta en användare
PUT /api/v1/scim/v2/Users/:id SCIM-token Ersätt en användare
DELETE /api/v1/scim/v2/Users/:id SCIM-token Mjukt inaktivera en användare
GET /api/v1/scim/v2/Groups SCIM-token Lista team som SCIM-grupper
POST /api/v1/scim/v2/Groups SCIM-token Skapa ett team
GET /api/v1/scim/v2/Groups/:id SCIM-token Hämta ett team
PUT /api/v1/scim/v2/Groups/:id SCIM-token Ersätt ett team och gruppmedlemskap
DELETE /api/v1/scim/v2/Groups/:id SCIM-token Ta bort ett team

Memmallar

Stödjande API för memgeneratorverktyget.

Metod Sökväg Åtkomst Beskrivning
GET /api/v1/meme-templates Auth Lista alla tillgängliga memmallar med textrutepositioner
GET /api/v1/meme-templates/full/:filename Auth Servera mallbild i full storlek
GET /api/v1/meme-templates/thumbs/:filename Auth Servera mallminiatyr
GET /api/v1/meme-templates/fonts/:filename Auth Servera typsnittsfil som används för rendering av memtext

Felsvar

Alla fel returnerar JSON:

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