This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Riferimento dell'API REST

La documentazione interattiva dell'API con esempi di richiesta/risposta è disponibile su http://localhost:1349/api/docs.

Specifiche leggibili dalla macchina:

  • /api/v1/openapi.yaml - specifica OpenAPI 3.1
  • /llms.txt - riepilogo adatto agli LLM
  • /llms-full.txt - documentazione completa adatta agli LLM

Autenticazione

Tutti gli endpoint richiedono l'autenticazione a meno che AUTH_ENABLED=false.

Token di sessione

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

Le sessioni scadono dopo 7 giorni (configurabile tramite SESSION_DURATION_HOURS).

Chiavi API

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

Le chiavi hanno il prefisso si_ e sono memorizzate come hash scrypt: la chiave grezza viene mostrata una sola volta e non è più recuperabile.

Endpoint di autenticazione

MetodoPercorsoAccessoDescrizione
POST/api/auth/loginPubblicoAccesso, ottieni il token di sessione
POST/api/auth/logoutAuthDistruggi la sessione corrente
GET/api/auth/sessionAuthConvalida la sessione corrente
POST/api/auth/change-passwordAuthCambia la propria password (invalida tutte le altre sessioni + chiavi API)
GET/api/auth/usersAdminElenca tutti gli utenti
POST/api/auth/registerAdminCrea un nuovo utente
PUT/api/auth/users/:idAdminAggiorna il ruolo o il team dell'utente
POST/api/auth/users/:id/reset-passwordAdminReimposta la password dell'utente
DELETE/api/auth/users/:idAdminElimina un utente
GET/api/v1/config/authPubblicoVerifica se l'autenticazione è abilitata ({ authEnabled: bool })
POST/api/auth/mfa/enrollAuthAvvia l'iscrizione all'MFA TOTP. Richiede la funzionalità enterprise mfa
POST/api/auth/mfa/verifyAuthConferma l'iscrizione all'MFA con un codice TOTP
POST/api/auth/mfa/completePubblicoCompleta una richiesta di accesso MFA in sospeso
POST/api/auth/mfa/disableAuthDisabilita l'MFA per l'utente corrente
POST/api/auth/users/:id/mfa/resetAdmin (users:manage)Reimposta l'MFA per un utente
GET/api/auth/oidc/loginPubblicoAvvia l'accesso OIDC quando OIDC è abilitato
GET/api/auth/oidc/callbackPubblicoCallback di autorizzazione OIDC
GET/api/auth/saml/metadataPubblicoXML dei metadati SAML SP quando SAML è abilitato
GET/api/auth/saml/loginPubblicoAvvia l'accesso SAML
POST/api/auth/saml/callbackPubblicoServizio consumer delle asserzioni SAML

Quando l'MFA è abilitato per un utente, POST /api/auth/login restituisce {"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false} invece di un token di sessione. Invia quel mfaToken più un codice TOTP o di recupero a /api/auth/mfa/complete.

Permessi

PermessoAdminUtente
Usare gli strumenti
File/pipeline/chiavi API propri
Vedere file/pipeline/chiavi di tutti gli utenti-
Scrivere le impostazioni-
Gestire utenti e team-
Gestire il branding-

Controllo dello stato

MetodoPercorsoAccessoDescrizione
GET/api/v1/healthPubblicoControllo di base dello stato. Restituisce {"status":"healthy","version":"..."} con 200, oppure {"status":"unhealthy"} con 503 se il database non è raggiungibile.
GET/api/v1/readyzPubblicoSonda di prontezza. Verifica PostgreSQL, Redis, lo spazio su disco e S3 quando configurato. Restituisce 503 quando l'istanza non dovrebbe ricevere traffico.
GET/api/v1/admin/healthAdmin (system:health)Diagnostica dettagliata che include uptime, modalità di archiviazione, stato del database, stato della coda e disponibilità della GPU.

Utilizzo degli strumenti

Ogni strumento segue lo stesso schema:

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> è uno tra image, video, audio, pdf o files.

  • Il caricamento è multipart/form-data.
  • settings è una stringa JSON con opzioni specifiche dello strumento.
  • clientJobId è un campo del modulo facoltativo per la correlazione dell'avanzamento fornita dal chiamante.
  • fileId è un campo del modulo facoltativo che fa riferimento a un elemento esistente della libreria file. Quando presente, l'output elaborato viene salvato come nuova versione e la risposta include savedFileId.
  • Strumenti veloci in genere restituiscono JSON 200: {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}. Recupera il file elaborato da downloadUrl.
  • Qualsiasi strumento in coda può restituire JSON 202 se è di lunga durata o supera la finestra di attesa sincrona: {"jobId":"...","async":true}. Connettiti a SSE per l'avanzamento, quindi scarica al completamento (vedi Tracciamento dell'avanzamento).
  • Le route batch restituiscono un archivio ZIP trasmesso direttamente in streaming (con l'header X-Job-Id) per gli strumenti registrati nel registro batch generico.

Riferimento degli strumenti

Preset di conversione

Il catalogo condiviso include 83 endpoint dedicati ai preset di conversione, come jpg-to-png, mov-to-mp4, m4a-to-mp3, pdf-to-jpg e excel-to-csv. I preset sono route degli strumenti di prima classe:

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

Ogni preset blocca il formato di output e delega a uno strumento di base come convert, convert-video, extract-audio, convert-audio, image-to-pdf, pdf-to-image, svg-to-raster o convert-spreadsheet. Vedi Preset di conversione per la tabella completa delle route e le impostazioni facoltative.

Elementi essenziali

ID strumentoNomeImpostazioni principali
resizeRidimensionawidth, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, più 23 preset per i social media
cropRitaglialeft, top, width, height, unit (px/percent)
rotateRuota e capovolgiangle, horizontal (bool), vertical (bool)
convertConvertiformat (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compressComprimimode (quality/targetSize), quality (1–100), targetSizeKb

Ottimizzazione

ID strumentoNomeImpostazioni principali
optimize-for-webOttimizza per il webformat (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataRimuovi metadati-
edit-metadataModifica metadatititle, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-renameRinomina in bloccopattern (supporta {n}, {date}, {original}), startIndex, padding
image-to-pdfImmagine in PDFpageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
faviconGeneratore di faviconpadding, backgroundColor, borderRadius - genera tutte le dimensioni standard

Regolazioni

ID strumentoNomeImpostazioni principali
adjust-colorsRegola i coloribrightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpeningNitidezzamethod (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-colorSostituisci coloresourceColor, targetColor (sostituzione), makeTransparent, tolerance
color-blindnessSimulazione del daltonismosimulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, predefinito "deuteranomaly")
duotoneDuotoneshadow (hex), highlight (hex), intensity (0-100)
pixelatePixelizzablockSize (2-128), region ({left, top, width, height} per la pixelizzazione parziale)
vignetteVignettaturastrength (0.1-1), color (hex), radius, softness, roundness, centerX, centerY

Strumenti AI

Tutti gli strumenti AI vengono eseguiti sul tuo hardware: CPU per impostazione predefinita, oppure NVIDIA CUDA quando è disponibile una GPU NVIDIA supportata. L'accelerazione tramite iGPU Intel/AMD attraverso VA-API, Quick Sync o OpenCL non è attualmente supportata per l'inferenza AI. Nessuna connessione a internet richiesta.

ID strumentoNomeModello AIImpostazioni principali
remove-backgroundRimuovi sfondorembg (BiRefNet / U2-Net)model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscaleUpscaling immaginiRealESRGANscale (2/4), model, faceEnhance, denoise, format, quality
erase-objectGomma per oggettiLaMa (ONNX)Maschera inviata come secondo file part (fieldname mask), format, quality
ocrOCR / Estrazione del testoPaddleOCR / Tesseractquality (fast/balanced/best), language, enhance
blur-facesSfocatura volti / PIIMediaPipeblurRadius, sensitivity
smart-cropRitaglio intelligenteMediaPipe + 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-enhancementMiglioramento immaginiBasato sull'analisimode (auto/exposure/contrast/color/sharpness), strength
enhance-facesMiglioramento voltiGFPGAN / CodeFormermodel (gfpgan/codeformer), strength, sensitivity, centerFace
colorizeColorizzazione AIDDColorintensity, model
noise-removalRimozione del rumoreRiduzione del rumore a livellitier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removalRimozione occhi rossiPunti di riferimento del volto + analisi del coloresensitivity, strength
restore-photoRestauro fotoPipeline multi-fasemode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoFoto tesseraPunti di riferimento MediaPipeFlusso in due fasi. L'analisi usa multipart file; la generazione usa JSON con countryCode, bgColor, printLayout (none/4x6/a4), punti di riferimento, dimensioni dell'immagine
content-aware-resizeRidimensionamento sensibile al contenutoSeam carving (caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerCorrettore di trasparenza PNGBiRefNet HR-mattingdefringe (0-100), outputFormat (png/webp)
background-replaceSostituzione sfondorembg (BiRefNet)backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-backgroundSfoca sfondorembg (BiRefNet)intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expandEspansione tela AILaMa (outpainting)extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Filigrana e sovrapposizione

ID strumentoNomeImpostazioni principali
watermark-textFiligrana di testotext, font, fontSize, color, opacity, position, rotation, tile
watermark-imageFiligrana di immagineopacity, position, scale - il secondo file è la filigrana
text-overlaySovrapposizione di testotext, font, fontSize, color, x, y, background, padding, borderRadius
composeComposizione di immaginix, y, opacity, blend - il secondo file viene sovrapposto
meme-generatorGeneratore di memetemplateId, 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. Supporta la modalità template (corpo JSON con templateId) o la modalità immagine personalizzata (multipart con file).

Utilità

ID strumentoNomeImpostazioni principali
infoInfo immagine- (restituisce width, height, format, size, channels, hasAlpha, DPI, EXIF)
compareConfronta immaginimode (side-by-side/overlay/diff), diffThreshold - il secondo file è la destinazione del confronto
find-duplicatesTrova duplicatithreshold (distanza dell'hash percettivo, predefinito 8) - multi-file
color-palettePalette di coloricount (numero di colori dominanti), format (hex/rgb)
qr-generateGeneratore di codici QRdata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (file facoltativo)
barcode-readLettore di codici a barre- (rileva automaticamente QR, EAN, Code128, DataMatrix, ecc.)
image-to-base64Immagine in Base64format (data-uri/plain), mimeType
html-to-imageHTML in immagineurl, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramIstogrammascale (linear/log) - restituisce il grafico dell'istogramma RGB + statistiche per canale
lqip-placeholderSegnaposto LQIPwidth (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generateGeneratore di codici a barretext, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). Corpo JSON, nessun caricamento di file.

Layout e composizione

ID strumentoNomeImpostazioni principali
collageCollage / Grigliatemplate (25+ layout), gap, backgroundColor, borderRadius - multi-file
stitchUnisci / Combinadirection (horizontal/vertical/grid), gap, backgroundColor, alignment - multi-file
splitDivisione immaginimode (grid/rows/cols), rows, cols, tileWidth, tileHeight
borderBordo e cornicewidth, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautifyAbbellisci screenshotbackgroundType (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-cropRitaglio circolarezoom (1-5), offsetX, offsetY, borderWidth, borderColor, background (transparent/hex), outputSize
image-padSpaziatura immaginetarget (16:9/9:16/1:1/4:3/3:4/custom), ratioW, ratioH, background (color/transparent/blur), color (hex), padding (0-50%)
sprite-sheetFoglio spritecolumns (1-16), padding, background (hex), format (png/webp/jpeg), quality - multi-file (2-64 immagini)

Formato e conversione

ID strumentoNomeImpostazioni principali
svg-to-rasterSVG in rasterformat (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorizeImmagine in SVGcolorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-toolsStrumenti GIFaction (resize/optimize/reverse/speed/extract-frames/rotate/add-text), parametri specifici dell'azione
gif-webpConvertitore GIF/WebPquality (1-100), lossless (bool), resizePercent (10-100)

Strumenti video

ID strumentoNomeImpostazioni principali
convert-videoConverti videoformat (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-videoComprimi videoquality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-videoTaglia videostartS, endS, precise (bool, taglio preciso al frame)
mute-videoSilenzia video-
video-to-gifVideo in GIFfps (1-30), width, startS, durationS (max 60s)
resize-videoRidimensiona videowidth, height, preset (custom/2160p/1440p/1080p/720p/480p/360p)
crop-videoRitaglia videowidth, height, x, y
rotate-videoRuota videotransform (cw90/ccw90/180/hflip/vflip)
change-fpsCambia FPSfps (1-120)
video-colorColore videobrightness, contrast, saturation, gamma
video-speedVelocità videofactor (0.25-4), keepPitch (bool)
reverse-videoInverti video- (max 5 minuti)
video-loudnormNormalizza audio- (EBU R128)
aspect-padSpaziatura proporzionitarget (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-padSpaziatura sfocatatarget (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-videoFiligrana videotext, position, fontSize, opacity, color
stabilize-videoStabilizza videosmoothing (5-60, in frame)
gif-to-videoGIF in videoformat (mp4/webm/mov)
video-to-webpVideo in WebPfps, width, quality, loop (bool)
video-to-framesVideo in framemode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videosUnisci video- (multi-file, normalizzato alla risoluzione del primo video)
replace-audioSostituisci audio- (file video + audio, due file)
burn-subtitlesIncorpora sottotitolifontSize (8-72) - file video + sottotitoli
embed-subtitlesIntegra sottotitolilanguage (codice ISO 639-2/B) - file video + sottotitoli
extract-subtitlesEstrai sottotitoli- (produce SRT)
images-to-videoImmagini in videosecondsPerImage (0.5-10), resolution (1080p/720p/square), fps - multi-file
video-metadataPulisci metadati video-
auto-subtitlesSottotitoli automatici (AI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audioEstrai audioformat (mp3/wav/m4a/ogg)

Strumenti audio

ID strumentoNomeImpostazioni principali
convert-audioConverti audioformat (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audioTaglia audiostartS, endS
volume-adjustRegola volumegainDb (-30 a 30)
normalize-audioNormalizza audio- (EBU R128, -16 LUFS)
fade-audioDissolvenza audiofadeInS (0-30), fadeOutS (0-30)
reverse-audioInverti audio-
audio-speedVelocità audiofactor (0.25-4)
pitch-shiftCambio di tonalitàsemitones (-12 a 12)
audio-channelsCanali audiomode (stereo-to-mono/mono-to-stereo/swap)
silence-removalRimozione del silenziothresholdDb (-80 a -20), minSilenceS (0.1-5)
noise-reductionRiduzione del rumorestrength (light/medium/strong)
merge-audioUnisci audioformat (mp3/wav/flac/m4a) - multi-file
split-audioDividi audiomode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-makerCreatore di suoneriestartS, durationS (1-30)
waveform-imageImmagine della forma d'ondawidth, height, color (hex)
audio-metadataMetadati audiostrip (bool), title, artist, album
transcribe-audioTrascrivi audio (AI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Strumenti per documenti

ID strumentoNomeImpostazioni principali
merge-pdfUnisci PDF- (multi-file, fino a 20 PDF)
split-pdfDividi PDFmode (range/every), range, everyN (1-500)
compress-pdfComprimi PDFmode (quality/targetSize), quality (1-100), targetSizeKb
rotate-pdfRuota PDFangle (90/180/270), range (intervallo di pagine)
extract-pagesEstrai paginerange (sintassi qpdf, es. "1-5,8,10-z")
remove-pagesRimuovi paginepages (intervallo qpdf da rimuovere)
organize-pdfOrganizza PDForder (ordine delle pagine qpdf, es. "3,1,2,5-z")
protect-pdfProteggi PDFuserPassword, ownerPassword (AES-256)
unlock-pdfSblocca PDFpassword
repair-pdfRipara PDF-
linearize-pdfOttimizza PDF per il web- (linearizza per una visualizzazione web veloce)
grayscale-pdfPDF in scala di grigi-
pdfa-convertConverti in PDF/A- (PDF/A-2 di archiviazione)
crop-pdfRitaglia PDFmargin (0-2000 punti)
nup-pdfPDF N-upperSheet (2/3/4/8/9/12/16)
booklet-pdfPDF opuscoloperSheet (2/4/6/8)
watermark-pdfFiligrana PDFtext, position, fontSize, opacity, rotation
pdf-page-numbersNumeri di pagina PDFposition (bl/bc/br/tl/tc/tr), fontSize
flatten-pdfAppiattisci PDF- (integra moduli e annotazioni)
redact-pdfOscura PDFterms (string[]), caseSensitive (bool)
sign-pdfFirma PDFRoute multipart personalizzata con PDF file, file di firma sig0, sig1 e array JSON placements
pdf-to-textPDF in testo-
pdf-to-wordPDF in Word-
pdf-metadataMetadati PDFtitle, author, subject, keywords
convert-documentConverti documentoformat (docx/odt/rtf/txt)
convert-presentationConverti presentazioneformat (pptx/odp)
convert-spreadsheetConverti foglio di calcoloformat (xlsx/ods/csv)
excel-to-pdfExcel in PDF-
word-to-pdfWord in PDF-
powerpoint-to-pdfPowerPoint in PDF-
html-to-pdfHTML in PDF- (risorse remote disabilitate)
markdown-to-docxMarkdown in Word-
markdown-to-htmlMarkdown in HTML-
markdown-to-pdfMarkdown in PDF- (risorse remote disabilitate)
epub-convertConverti EPUBformat (pdf/docx/html/md)
to-epubConverti in EPUB- (accetta .docx, .md, .html, .txt)
ocr-pdfOCR PDF (AI)quality (fast/balanced/best), language (auto/en/de/fr/es/zh/ja/ko), pages
pdf-to-imagePDF in immaginepages (all/range), format, dpi, quality
pdf-to-jpgPDF in JPGpages, dpi, quality, colorMode
pdf-to-pngPDF in PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF in TIFFpages, dpi, quality, colorMode

Strumenti per file

ID strumentoNomeImpostazioni principali
chart-makerCreatore di graficikind (bar/line/pie), title, width, height
csv-excelCSV in Excelsheet (numero del foglio di lavoro per l'input XLSX) - bidirezionale
csv-jsonCSV in JSONpretty (bool) - bidirezionale
json-xmlJSON in XMLpretty (bool) - bidirezionale
split-csvDividi CSVrowsPerFile (1-1000000), keepHeader (bool)
merge-csvsUnisci CSV- (multi-file, colonne corrispondenti)
yaml-jsonYAML / JSON- (bidirezionale)
xml-to-csvXML in CSV- (individua automaticamente gli elementi ripetuti)
excel-to-csvExcel in CSVpreset di conversione dedicato supportato da convert-spreadsheet
create-zipCrea ZIP- (multi-file, 2-50 file)
extract-zipEstrai ZIP- (protetto da zip bomb)

HTML in immagine

Cattura una pagina web come immagine. A differenza degli altri strumenti, questo endpoint accetta application/json invece dei dati del modulo multipart (nessun caricamento di file necessario).

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

Content-Type: application/json

ParametroTipoPredefinitoDescrizione
urlstring(obbligatorio)URL da catturare (solo http/https)
formatstring"png"Formato di output: jpg, png, webp
qualitynumber90Qualità 1-100 (solo JPG/WebP)
fullPagebooleanfalseCattura l'intera pagina scorrevole
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280Larghezza personalizzata del viewport 320-3840
viewportHeightnumber720Altezza personalizzata del viewport 320-2160

Esempio:

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

Risposta:

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

Sotto-route degli strumenti

Alcuni strumenti espongono endpoint aggiuntivi oltre alla POST /api/v1/tools/<section>/<toolId> standard:

MetodoPercorsoDescrizione
GET/api/v1/tools/popularRestituisce gli ID degli strumenti più popolari, ricorrendo a un elenco predefinito curato quando i dati di utilizzo sono scarsi
POST/api/v1/tools/image/remove-background/effectsApplica effetti di sfondo (color/gradient/blur/shadow) senza rieseguire l'AI. Usa la maschera memorizzata nella cache dalla rimozione iniziale.
POST/api/v1/tools/image/edit-metadata/inspectLegge i metadati EXIF/IPTC/XMP esistenti da un'immagine
POST/api/v1/tools/image/strip-metadata/inspectIspeziona i campi dei metadati prima della rimozione
POST/api/v1/tools/image/passport-photo/analyzeFase 1: rilevamento AI del volto + rimozione dello sfondo. Restituisce i punti di riferimento del volto e i dati memorizzati nella cache.
POST/api/v1/tools/image/passport-photo/generateFase 2: ritaglio, ridimensionamento e affiancamento usando l'analisi memorizzata nella cache. Nessuna riesecuzione dell'AI.
POST/api/v1/tools/image/gif-tools/infoOttiene i metadati della GIF (numero di frame, dimensioni, durata)
POST/api/v1/tools/pdf/pdf-to-image/infoOttiene i metadati del PDF (numero di pagine, dimensioni)
POST/api/v1/tools/pdf/pdf-to-image/previewGenera un'anteprima di una pagina PDF specifica
POST/api/v1/tools/pdf/pdf-to-jpg/infoOttiene i metadati del PDF per il preset JPG dedicato
POST/api/v1/tools/pdf/pdf-to-jpg/previewGenera un'anteprima di una pagina PDF con preset JPG
POST/api/v1/tools/pdf/pdf-to-png/infoOttiene i metadati del PDF per il preset PNG dedicato
POST/api/v1/tools/pdf/pdf-to-png/previewGenera un'anteprima di una pagina PDF con preset PNG
POST/api/v1/tools/pdf/pdf-to-tiff/infoOttiene i metadati del PDF per il preset TIFF dedicato
POST/api/v1/tools/pdf/pdf-to-tiff/previewGenera un'anteprima di una pagina PDF con preset TIFF
POST/api/v1/tools/image/svg-to-raster/batchConverte in batch più SVG in raster
POST/api/v1/tools/image/image-enhancement/analyzeAnalizza la qualità dell'immagine e restituisce raccomandazioni di miglioramento
POST/api/v1/tools/image/optimize-for-web/previewAnteprima leggera per la regolazione dei parametri in tempo reale. Restituisce l'immagine ottimizzata con gli header delle dimensioni.

Elaborazione batch

Applica uno strumento generico abilitato al batch a più file contemporaneamente. Restituisce un archivio ZIP. Le route personalizzate multi-file o multi-fase, come la firma dei PDF, l'OCR dei PDF e le route dei preset da PDF a immagine, usano il proprio contratto di endpoint invece della route generica /batch.

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

La concorrenza è controllata da CONCURRENT_JOBS (predefinito: rilevato automaticamente dai core della CPU). MAX_BATCH_SIZE limita il numero di file per batch (predefinito: 100; imposta 0 per illimitato).

Pipeline

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

L'output di ogni fase è l'input della fase successiva. Le pipeline consentono 20 fasi per impostazione predefinita, configurabili tramite MAX_PIPELINE_STEPS. Imposta MAX_PIPELINE_STEPS=0 per rimuovere il limite.

Salva e gestisci le pipeline

MetodoPercorsoDescrizione
POST/api/v1/pipeline/saveSalva una pipeline con nome (name, description, steps[])
GET/api/v1/pipeline/listElenca le pipeline salvate (gli amministratori vedono tutte; gli utenti vedono le proprie)
DELETE/api/v1/pipeline/:idElimina (proprietario o amministratore)
GET/api/v1/pipeline/toolsElenca gli ID degli strumenti validi per le fasi della pipeline

Tracciamento dell'avanzamento

I job di lunga durata, gli strumenti in coda, i job batch e le pipeline emettono l'avanzamento in tempo reale tramite Server-Sent Events. Lo stream di avanzamento è pubblico e indicizzato per ID del job, quindi i client non devono inviare un header Authorization per leggerlo.

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

Formato dell'evento:

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

Puoi richiedere l'annullamento di un job in coda o in esecuzione con POST /api/v1/jobs/:jobId/cancel. La risposta è {"canceled":true|false}.

Libreria file

Archiviazione persistente dei file con cronologia delle versioni.

MetodoPercorsoDescrizione
POST/api/v1/uploadCarica i file nello spazio di lavoro (elaborazione temporanea)
POST/api/v1/files/uploadCarica i file nella libreria file persistente
POST/api/v1/files/save-resultSalva il risultato dell'elaborazione di uno strumento come nuova versione del file
GET/api/v1/filesElenca i file salvati (paginato, con ricerca)
GET/api/v1/files/:idOttiene i metadati del file + la catena delle versioni
GET/api/v1/files/:id/downloadScarica il file
GET/api/v1/files/:id/thumbnailOttiene una miniatura JPEG da 300px
DELETE/api/v1/filesElimina in blocco i file e le loro catene di versioni (corpo: { ids: [...] })
POST/api/v1/fetch-urlsRecupera URL remoti nello spazio di lavoro per importazioni basate su URL
POST/api/v1/previewGenera un'anteprima WebP compatibile con il browser (per i formati HEIC/HEIF/RAW)
GET/api/v1/files/:id/previewTrasmette in streaming un'anteprima compatibile con il browser, memorizzata nella cache o generata, per un file PDF, documento office, video o audio salvato
POST/api/v1/preview/generateGenera un'anteprima MP4 o MP3 su richiesta per un file multimediale caricato senza salvarlo prima
GET/api/v1/download/:jobId/:filenameScarica un file elaborato da uno spazio di lavoro

Per salvare automaticamente il risultato di uno strumento nella libreria, includi fileId come campo del modulo multipart che fa riferimento a un file esistente della libreria. Il risultato elaborato verrà salvato come nuova versione.

Gestione delle chiavi API

MetodoPercorsoAccessoDescrizione
POST/api/v1/api-keysAuthGenera una nuova chiave - mostrata una sola volta
GET/api/v1/api-keysAuthElenca le chiavi (name, id, lastUsedAt - non la chiave grezza)
DELETE/api/v1/api-keys/:idAuthElimina la chiave

Team

MetodoPercorsoAccessoDescrizione
GET/api/v1/teamsAdmin (teams:manage)Elenca i team
POST/api/v1/teamsAdmin (teams:manage)Crea un team
PUT/api/v1/teams/:idAdmin (teams:manage)Rinomina un team
DELETE/api/v1/teams/:idAdmin (teams:manage)Elimina un team (non è possibile eliminare il team predefinito o i team con membri)

Impostazioni

Configurazione runtime a coppie chiave-valore (letta da qualsiasi utente autenticato, scritta solo dagli amministratori).

MetodoPercorsoDescrizione
GET/api/v1/settingsOttiene tutte le impostazioni
PUT/api/v1/settingsAggiorna in blocco le impostazioni (corpo JSON con coppie chiave-valore)
GET/api/v1/settings/:keyOttiene un'impostazione specifica per chiave

Chiavi note: disabledTools (array JSON di ID degli strumenti), enableExperimentalTools (stringa bool), loginAttemptLimit (numero).

Preferenze

Le preferenze per utente sono separate dalle impostazioni dell'istanza. Qualsiasi utente autenticato può leggere e aggiornare la propria mappa di preferenze.

MetodoPercorsoDescrizione
GET/api/v1/preferencesOttiene le preferenze dell'utente corrente come { "preferences": { ... } }
PUT/api/v1/preferencesInserisce o aggiorna una o più chiavi di preferenza per l'utente corrente

Ruoli

Gestione dei ruoli personalizzati con permessi granulari.

MetodoPercorsoAccessoDescrizione
GET/api/v1/rolesAdmin (audit:read)Elenca tutti i ruoli con il conteggio degli utenti
POST/api/v1/rolesAdmin (security:manage)Crea un ruolo personalizzato (name, description, permissions)
PUT/api/v1/roles/:idAdmin (security:manage)Aggiorna un ruolo personalizzato (non è possibile modificare i ruoli integrati)
DELETE/api/v1/roles/:idAdmin (security:manage)Elimina un ruolo personalizzato (non è possibile eliminare i ruoli integrati; gli utenti interessati tornano al ruolo user)

Permessi disponibili (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.

Registro di controllo

Endpoint riservato agli amministratori per esaminare le azioni rilevanti per la sicurezza.

MetodoPercorsoAccessoDescrizione
GET/api/v1/audit-logAdmin (audit:read)Registro di controllo paginato con filtri facoltativi

Parametri della query:

ParametroDescrizione
pageNumero di pagina (predefinito: 1)
limitVoci per pagina (predefinito: 50, max: 100)
actionFiltra per tipo di azione (es. ROLE_CREATED, ROLE_DELETED)
ipFiltra per indirizzo IP di origine
fromFiltra le voci dopo questa data ISO 8601
toFiltra le voci prima di questa data ISO 8601

Analytics

MetodoPercorsoAccessoDescrizione
GET/api/v1/config/analyticsPubblicoOttiene la configurazione analytics effettiva (chiave PostHog, DSN Sentry, sample rate). Le chiavi, il DSN e l'ID dell'istanza sono vuoti quando gli analytics sono disattivati, sia dal bake in fase di compilazione sia dall'impostazione dell'istanza analyticsEnabled.
POST/api/v1/feedbackAuthInvia un feedback utente esplicito al progetto PostHog configurato come feedback_submitted. La route rispetta il gate degli analytics, limita la frequenza degli invii, rimuove i campi di contatto a meno che contactOk non sia true e non accetta mai contenuti di file, nomi di file, percorsi di caricamento o testo grezzo di errori privati. Quando gli analytics sono disabilitati, restituisce { "ok": true, "accepted": false }.
PUT/api/v1/settingsAdmin (settings:write)Imposta l'opt-out a livello di istanza. Invia un corpo JSON { "analyticsEnabled": "false" } per disattivare gli analytics per tutti, oppure "true" per riattivarli.

Funzionalità / Bundle AI

Gestisci i bundle delle funzionalità AI (installa/disinstalla i pacchetti dei modelli AI nell'ambiente Docker). Preferisci l'endpoint di installazione a livello di strumento quando abiliti uno strumento da un'automazione personalizzata: alcuni strumenti AI necessitano di più di un bundle condiviso, e questo endpoint salta i bundle già installati mettendo in coda solo quelli mancanti.

MetodoPercorsoAccessoDescrizione
GET/api/v1/featuresAuthElenca tutti i bundle delle funzionalità e il loro stato di installazione
POST/api/v1/admin/features/:bundleId/installAdmin (features:manage)Installa un bundle di funzionalità (asincrono, restituisce jobId per il tracciamento dell'avanzamento)
POST/api/v1/admin/tools/:toolId/features/installAdmin (features:manage)Installa ogni bundle richiesto da uno strumento; restituisce lo stato per bundle in coda/saltato
POST/api/v1/admin/features/:bundleId/uninstallAdmin (features:manage)Disinstalla un bundle di funzionalità e pulisce i file dei modelli
GET/api/v1/admin/features/disk-usageAdmin (features:manage)Ottiene l'utilizzo totale del disco dei modelli AI
POST/api/v1/admin/features/importAdmin (features:manage)Importa un archivio di bundle AI offline

Operazioni di amministrazione

Endpoint operativi per l'osservabilità, il supporto, la reportistica sull'utilizzo e lo stato dei backup.

MetodoPercorsoAccessoDescrizione
GET/api/v1/admin/log-levelAdmin (settings:write)Legge il livello di log runtime corrente
POST/api/v1/admin/log-levelAdmin (settings:write)Cambia il livello di log runtime (fatal, error, warn, info, debug, trace o silent)
GET/api/v1/metricsAdmin (system:health)Metriche Prometheus in formato testo
GET/api/v1/admin/support-bundleAdmin (system:health)Scarica un bundle ZIP di supporto diagnostico oscurato
GET/api/v1/admin/usageAdmin (audit:read)Dati della dashboard di utilizzo, con parametro della query days facoltativo
GET/api/v1/admin/backup-statusAdmin (system:health)Legge i metadati dell'ultimo backup e lo stato di freschezza
POST/api/v1/admin/backup-statusAdmin (system:health)Registra un backup completato (type, sizeBytes facoltativo, notes facoltativo)

API Enterprise

Queste route sono soggette a licenza in base alla loro funzionalità enterprise correlata. Richiedono comunque il permesso SnapOtter elencato.

MetodoPercorsoAccessoDescrizione
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Esporta le voci del registro di controllo come JSON o CSV con filtri
GET/api/v1/enterprise/config/exportAdmin (system:health)Esporta la configurazione dell'istanza oscurata, i ruoli personalizzati e i team
POST/api/v1/enterprise/config/importAdmin (system:health)Importa la configurazione, con esecuzione a vuoto facoltativa
GET/api/v1/enterprise/ip-allowlistAdmin (security:manage)Legge l'allowlist CIDR configurata
PUT/api/v1/enterprise/ip-allowlistAdmin (security:manage)Aggiorna l'allowlist CIDR con prevenzione dell'autoesclusione
GET/api/v1/enterprise/legal-holdAdmin (compliance:manage)Elenca i blocchi legali di utenti e team
PUT/api/v1/enterprise/legal-holdAdmin (compliance:manage)Applica o rilascia un blocco legale su un utente o un team
POST/api/v1/enterprise/scim/tokenAdmin (users:manage)Genera un token bearer SCIM, restituito una sola volta
DELETE/api/v1/enterprise/scim/tokenAdmin (users:manage)Revoca il token bearer SCIM corrente
GET/api/v1/enterprise/siem/configAdmin (webhooks:manage)Legge la configurazione dell'inoltro SIEM
PUT/api/v1/enterprise/siem/configAdmin (webhooks:manage)Aggiorna la configurazione dell'inoltro SIEM
GET/api/v1/enterprise/webhooksAdmin (webhooks:manage)Elenca le destinazioni dei webhook
POST/api/v1/enterprise/webhooksAdmin (webhooks:manage)Crea una destinazione webhook
PUT/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Aggiorna una destinazione webhook
DELETE/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Elimina una destinazione webhook
POST/api/v1/enterprise/webhooks/:index/testAdmin (webhooks:manage)Invia un payload webhook di prova
POST/api/v1/enterprise/users/:id/exportAdmin (compliance:manage)Avvia un job di esportazione utente GDPR
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin (compliance:manage)Legge lo stato dell'esportazione GDPR e l'URL di download
DELETE/api/v1/enterprise/users/:id/purgeAdmin (compliance:manage)Elimina definitivamente i dati di un utente dopo conferma
DELETE/api/v1/enterprise/teams/:id/purgeAdmin (compliance:manage)Elimina definitivamente i dati di un team dopo conferma
GET/api/v1/admin/versionAdmin (system:health)Legge i metadati di versione dell'app, della build, di Node e dello schema
GET/api/v1/admin/migrations/pendingAdmin (system:health)Confronta le migrazioni impacchettate con quelle applicate
GET/api/v1/admin/upgrade-checkAdmin (system:health)Esegue i controlli di prontezza all'aggiornamento

SCIM 2.0

Gli endpoint di discovery SCIM sono pubblici. Gli endpoint di utenti e gruppi richiedono il token bearer SCIM generato sopra.

MetodoPercorsoAccessoDescrizione
GET/api/v1/scim/v2/ServiceProviderConfigPubblicoCapacità del server SCIM
GET/api/v1/scim/v2/SchemasPubblicoDiscovery dello schema SCIM
GET/api/v1/scim/v2/ResourceTypesPubblicoDiscovery del tipo di risorsa SCIM
GET/api/v1/scim/v2/UsersToken SCIMElenca gli utenti, con filtro SCIM facoltativo
POST/api/v1/scim/v2/UsersToken SCIMCrea un utente
GET/api/v1/scim/v2/Users/:idToken SCIMOttiene un utente
PUT/api/v1/scim/v2/Users/:idToken SCIMSostituisce un utente
DELETE/api/v1/scim/v2/Users/:idToken SCIMDisattiva in modo soft un utente
GET/api/v1/scim/v2/GroupsToken SCIMElenca i team come gruppi SCIM
POST/api/v1/scim/v2/GroupsToken SCIMCrea un team
GET/api/v1/scim/v2/Groups/:idToken SCIMOttiene un team
PUT/api/v1/scim/v2/Groups/:idToken SCIMSostituisce un team e l'appartenenza al gruppo
DELETE/api/v1/scim/v2/Groups/:idToken SCIMElimina un team

Template dei meme

API di supporto per lo strumento generatore di meme.

MetodoPercorsoAccessoDescrizione
GET/api/v1/meme-templatesAuthElenca tutti i template di meme disponibili con le posizioni delle caselle di testo
GET/api/v1/meme-templates/full/:filenameAuthServe l'immagine del template a grandezza naturale
GET/api/v1/meme-templates/thumbs/:filenameAuthServe la miniatura del template
GET/api/v1/meme-templates/fonts/:filenameAuthServe il file del font usato per il rendering del testo del meme

Risposte di errore

Tutti gli errori restituiscono JSON:

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
StatoSignificato
400Richiesta non valida / convalida fallita
401Non autenticato
403Permessi insufficienti
404Risorsa non trovata
413File troppo grande (vedi MAX_UPLOAD_SIZE_MB)
422Elaborazione fallita dopo la convalida
429Frequenza limitata (vedi RATE_LIMIT_PER_MIN)
501Il bundle della funzionalità AI richiesto non è installato (FEATURE_NOT_INSTALLED)
500Errore interno del server