Files
SnapOtter/apps/docs/sv/api/rest.md
T
SnapOtterandGitHub 991c981529 fix: make OCR portable and reliable across AMD64 and ARM64 (#519)
* fix: make OCR portable and reliable

* fix: harden OCR installation portability

* fix: pin OCR partials across downloads

* fix: make OCR execution reliably asynchronous

* fix: harden OCR portability and docs routes

* fix: preserve decoder and docs safeguards
2026-07-15 03:34:24 +08:00

47 KiB
Raw Blame History

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

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 Tesseract (snabb); RapidOCR + PP-OCR ONNX (balanserad/bäst) quality (snabb/balanserad/bäst), 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 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.

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.

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.

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 ä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:

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.

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