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

Tài liệu tham khảo REST API

Tài liệu API tương tác kèm ví dụ request/response có sẵn tại http://localhost:1349/api/docs.

Đặc tả có thể đọc bằng máy:

  • /api/v1/openapi.yaml - đặc tả OpenAPI 3.1
  • /llms.txt - bản tóm tắt thân thiện với LLM
  • /llms-full.txt - tài liệu đầy đủ thân thiện với LLM

Xác thực

Mọi endpoint đều yêu cầu xác thực trừ khi AUTH_ENABLED=false.

Token phiên

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

Phiên hết hạn sau 7 ngày (có thể cấu hình qua SESSION_DURATION_HOURS).

Khóa 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>"

Khóa có tiền tố si_ và được lưu dưới dạng hash scrypt - khóa thô chỉ hiển thị một lần và không bao giờ lấy lại được nữa.

Endpoint xác thực

Phương thứcĐường dẫnQuyền truy cậpMô tả
POST/api/auth/loginCông khaiĐăng nhập, lấy token phiên
POST/api/auth/logoutXác thựcHủy phiên hiện tại
GET/api/auth/sessionXác thựcXác thực phiên hiện tại
POST/api/auth/change-passwordXác thựcĐổi mật khẩu của chính mình (vô hiệu hóa mọi phiên khác + khóa API)
GET/api/auth/usersAdminLiệt kê tất cả người dùng
POST/api/auth/registerAdminTạo người dùng mới
PUT/api/auth/users/:idAdminCập nhật vai trò hoặc nhóm của người dùng
POST/api/auth/users/:id/reset-passwordAdminĐặt lại mật khẩu của người dùng
DELETE/api/auth/users/:idAdminXóa một người dùng
GET/api/v1/config/authCông khaiKiểm tra xác thực có được bật hay không ({ authEnabled: bool })
POST/api/auth/mfa/enrollXác thựcBắt đầu đăng ký TOTP MFA. Yêu cầu tính năng enterprise mfa
POST/api/auth/mfa/verifyXác thựcXác nhận đăng ký MFA bằng mã TOTP
POST/api/auth/mfa/completeCông khaiHoàn tất thử thách đăng nhập MFA đang chờ
POST/api/auth/mfa/disableXác thựcTắt MFA cho người dùng hiện tại
POST/api/auth/users/:id/mfa/resetAdmin (users:manage)Đặt lại MFA cho một người dùng
GET/api/auth/oidc/loginCông khaiBắt đầu đăng nhập OIDC khi OIDC được bật
GET/api/auth/oidc/callbackCông khaiCallback ủy quyền OIDC
GET/api/auth/saml/metadataCông khaiXML metadata SAML SP khi SAML được bật
GET/api/auth/saml/loginCông khaiBắt đầu đăng nhập SAML
POST/api/auth/saml/callbackCông khaiDịch vụ tiêu thụ khẳng định SAML

Khi MFA được bật cho một người dùng, POST /api/auth/login trả về {"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false} thay vì token phiên. Gửi mfaToken đó cùng mã TOTP hoặc mã khôi phục tới /api/auth/mfa/complete.

Quyền hạn

Quyền hạnAdminUser
Dùng công cụ
Tệp/pipeline/khóa API của riêng mình
Xem tệp/pipeline/khóa của mọi người dùng-
Ghi cài đặt-
Quản lý người dùng & nhóm-
Quản lý thương hiệu-

Kiểm tra tình trạng

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/healthCông khaiKiểm tra tình trạng cơ bản. Trả về {"status":"healthy","version":"..."} với 200, hoặc {"status":"unhealthy"} với 503 nếu không kết nối được cơ sở dữ liệu.
GET/api/v1/readyzCông khaiKiểm tra sẵn sàng. Kiểm tra PostgreSQL, Redis, dung lượng đĩa và S3 khi được cấu hình. Trả về 503 khi instance không nên nhận lưu lượng.
GET/api/v1/admin/healthAdmin (system:health)Chẩn đoán chi tiết bao gồm thời gian hoạt động, chế độ lưu trữ, trạng thái cơ sở dữ liệu, trạng thái hàng đợi và khả năng dùng GPU.

Sử dụng công cụ

Mọi công cụ đều theo cùng một mẫu:

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> là một trong image, video, audio, pdf, hoặc files.

  • Tải lên là multipart/form-data.
  • settings là một chuỗi JSON chứa các tùy chọn riêng của công cụ.
  • clientJobId là một trường form tùy chọn để đối chiếu tiến trình do bên gọi cung cấp.
  • fileId là một trường form tùy chọn tham chiếu đến một mục có sẵn trong thư viện tệp. Khi có mặt, đầu ra đã xử lý được lưu thành phiên bản mới và response bao gồm savedFileId.
  • Công cụ nhanh thường trả về 200 JSON: {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}. Tải tệp đã xử lý từ downloadUrl.
  • Bất kỳ công cụ nào được xếp hàng có thể trả về 202 JSON nếu chạy lâu hoặc vượt quá khung chờ đồng bộ: {"jobId":"...","async":true}. Kết nối SSE để theo dõi tiến trình, rồi tải xuống khi hoàn tất (xem Theo dõi tiến trình).
  • Route hàng loạt trả về một kho lưu trữ ZIP được stream trực tiếp (kèm header X-Job-Id) cho các công cụ được đăng ký trong registry hàng loạt tổng quát.

Tham khảo công cụ

Cấu hình chuyển đổi sẵn

Danh mục dùng chung bao gồm 83 endpoint cấu hình chuyển đổi chuyên biệt như jpg-to-png, mov-to-mp4, m4a-to-mp3, pdf-to-jpg, và excel-to-csv. Cấu hình sẵn là các route công cụ hạng nhất:

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

Mỗi cấu hình sẵn khóa định dạng đầu ra và ủy thác cho một công cụ nền tảng như convert, convert-video, extract-audio, convert-audio, image-to-pdf, pdf-to-image, svg-to-raster, hoặc convert-spreadsheet. Xem Cấu hình chuyển đổi sẵn để biết bảng route đầy đủ và các cài đặt tùy chọn.

Cơ bản

ID công cụTênCài đặt chính
resizeĐổi kích thướcwidth, height, fit (cover/contain/fill/inside/outside), percentage, withoutEnlargement, cùng 23 cấu hình mạng xã hội sẵn
cropCắtleft, top, width, height, unit (px/percent)
rotateXoay & Lậtangle, horizontal (bool), vertical (bool)
convertChuyển đổiformat (jpg/png/webp/avif/tiff/gif/heic/heif), quality
compressNénmode (quality/targetSize), quality (1–100), targetSizeKb

Tối ưu hóa

ID công cụTênCài đặt chính
optimize-for-webTối ưu cho Webformat (webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataXóa Metadata-
edit-metadataSửa Metadatatitle, description, author, copyright, keywords, gps (lat/lon), dateTime
bulk-renameĐổi tên hàng loạtpattern (hỗ trợ {n}, {date}, {original}), startIndex, padding
image-to-pdfẢnh sang PDFpageSize (A4/Letter/...), orientation, margin, targetSize ({value, unit})
faviconTrình tạo Faviconpadding, backgroundColor, borderRadius - tạo mọi kích thước tiêu chuẩn

Điều chỉnh

ID công cụTênCài đặt chính
adjust-colorsĐiều chỉnh màubrightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect (none/grayscale/sepia/invert)
sharpeningLàm sắc nétmethod (adaptive/unsharp-mask/high-pass), sigma, m1, m2, x1, y2, y3, amount, radius, threshold, strength, kernelSize (3/5), denoise (off/light/medium/strong)
replace-colorThay màusourceColor, targetColor (thay thế), makeTransparent, tolerance
color-blindnessMô phỏng mù màusimulationType (protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy, mặc định "deuteranomaly")
duotoneDuotoneshadow (hex), highlight (hex), intensity (0-100)
pixelateLàm mờ pixelblockSize (2-128), region ({left, top, width, height} để làm mờ pixel một phần)
vignetteVignettestrength (0.1-1), color (hex), radius, softness, roundness, centerX, centerY

Công cụ AI

Mọi công cụ AI đều chạy trên phần cứng của bạn: mặc định là CPU, hoặc NVIDIA CUDA khi có GPU NVIDIA được hỗ trợ. Tăng tốc iGPU của Intel/AMD qua VA-API, Quick Sync hoặc OpenCL hiện chưa được hỗ trợ cho suy luận AI. Không cần internet.

ID công cụTênMô hình AICài đặt chính
remove-backgroundXóa nềnrembg (BiRefNet / U2-Net)model, backgroundType (transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscalePhóng to ảnhRealESRGANscale (2/4), model, faceEnhance, denoise, format, quality
erase-objectXóa vật thểLaMa (ONNX)Mặt nạ được gửi làm phần tệp thứ hai (tên trường mask), format, quality
ocrOCR / Trích xuất văn bảnPaddleOCR / Tesseractquality (fast/balanced/best), language, enhance
blur-facesLàm mờ khuôn mặt / PIIMediaPipeblurRadius, sensitivity
smart-cropCắt thông minhMediaPipe + 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-enhancementNâng cao ảnhDựa trên phân tíchmode (auto/exposure/contrast/color/sharpness), strength
enhance-facesNâng cao khuôn mặtGFPGAN / CodeFormermodel (gfpgan/codeformer), strength, sensitivity, centerFace
colorizeTô màu bằng AIDDColorintensity, model
noise-removalKhử nhiễuKhử nhiễu phân tầngtier (quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removalXóa mắt đỏĐiểm mốc khuôn mặt + phân tích màusensitivity, strength
restore-photoPhục hồi ảnhPipeline nhiều bướcmode (auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoẢnh hộ chiếuĐiểm mốc MediaPipeLuồng hai giai đoạn. Phân tích dùng multipart file; tạo dùng JSON với countryCode, bgColor, printLayout (none/4x6/a4), điểm mốc, kích thước ảnh
content-aware-resizeĐổi kích thước nhận biết nội dungSeam carving (caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerSửa độ trong suốt PNGBiRefNet HR-mattingdefringe (0-100), outputFormat (png/webp)
background-replaceThay nềnrembg (BiRefNet)backgroundType (color/gradient), color (hex), gradientColor1, gradientColor2, gradientAngle, feather (0-20), format (png/webp)
blur-backgroundLàm mờ nềnrembg (BiRefNet)intensity (1-100), feather (0-20), format (png/webp)
ai-canvas-expandMở rộng khung vẽ bằng AILaMa (outpainting)extendTop, extendRight, extendBottom, extendLeft (px), tier (fast/balanced/high), format, quality

Đóng dấu & Lớp phủ

ID công cụTênCài đặt chính
watermark-textDấu chìm văn bảntext, font, fontSize, color, opacity, position, rotation, tile
watermark-imageDấu chìm hình ảnhopacity, position, scale - tệp thứ hai là dấu chìm
text-overlayLớp phủ văn bảntext, font, fontSize, color, x, y, background, padding, borderRadius
composeGhép ảnhx, y, opacity, blend - tệp thứ hai được xếp lớp lên trên
meme-generatorTrình tạo 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. Hỗ trợ chế độ mẫu (thân JSON với templateId) hoặc chế độ ảnh tùy chỉnh (multipart kèm tệp).

Tiện ích

ID công cụTênCài đặt chính
infoThông tin ảnh- (trả về width, height, format, size, channels, hasAlpha, DPI, EXIF)
compareSo sánh ảnhmode (side-by-side/overlay/diff), diffThreshold - tệp thứ hai là đối tượng so sánh
find-duplicatesTìm ảnh trùngthreshold (khoảng cách hash tri giác, mặc định 8) - đa tệp
color-paletteBảng màucount (số lượng màu chủ đạo), format (hex/rgb)
qr-generateTrình tạo mã QRdata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo (tệp tùy chọn)
barcode-readĐọc mã vạch- (tự động phát hiện QR, EAN, Code128, DataMatrix, v.v.)
image-to-base64Ảnh sang Base64format (data-uri/plain), mimeType
html-to-imageHTML sang ảnhurl, format (png/jpg/webp), quality, fullPage, devicePreset (desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramBiểu đồ tần suấtscale (linear/log) - trả về biểu đồ histogram RGB + thống kê từng kênh
lqip-placeholderLQIP Placeholderwidth (4-64), blur, strategy (blur/pixelate/solid), format (webp/png/jpeg), quality
barcode-generateTrình tạo mã vạchtext, type (code128/ean13/upca/code39/itf14/datamatrix), scale (1-8), includeText (bool). Thân JSON, không tải tệp lên.

Bố cục & Sắp xếp

ID công cụTênCài đặt chính
collageGhép ảnh / Lướitemplate (25+ bố cục), gap, backgroundColor, borderRadius - đa tệp
stitchGhép nối / Kết hợpdirection (horizontal/vertical/grid), gap, backgroundColor, alignment - đa tệp
splitChia ảnhmode (grid/rows/cols), rows, cols, tileWidth, tileHeight
borderViền & Khungwidth, color, style (solid/gradient/pattern), borderRadius, padding, shadow
beautifyLàm đẹp ảnh chụp màn hìnhbackgroundType (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-cropCắt trònzoom (1-5), offsetX, offsetY, borderWidth, borderColor, background (transparent/hex), outputSize
image-padĐệm ảnhtarget (16:9/9:16/1:1/4:3/3:4/custom), ratioW, ratioH, background (color/transparent/blur), color (hex), padding (0-50%)
sprite-sheetSprite Sheetcolumns (1-16), padding, background (hex), format (png/webp/jpeg), quality - đa tệp (2-64 ảnh)

Định dạng & Chuyển đổi

ID công cụTênCài đặt chính
svg-to-rasterSVG sang Rasterformat (png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorizeẢnh sang SVGcolorMode (bw/color), threshold, colorPrecision, filterSpeckle, pathMode (none/polygon/spline)
gif-toolsCông cụ GIFaction (resize/optimize/reverse/speed/extract-frames/rotate/add-text), tham số theo từng hành động
gif-webpTrình chuyển đổi GIF/WebPquality (1-100), lossless (bool), resizePercent (10-100)

Công cụ Video

ID công cụTênCài đặt chính
convert-videoChuyển đổi Videoformat (mp4/mov/webm/avi/mkv), quality (high/balanced/small)
compress-videoNén Videoquality (light/balanced/strong), resolution (original/1080p/720p/480p)
trim-videoCắt VideostartS, endS, precise (bool, cắt chính xác từng khung hình)
mute-videoTắt tiếng Video-
video-to-gifVideo sang GIFfps (1-30), width, startS, durationS (tối đa 60 giây)
resize-videoĐổi kích thước Videowidth, height, preset (custom/2160p/1440p/1080p/720p/480p/360p)
crop-videoCắt xén Videowidth, height, x, y
rotate-videoXoay Videotransform (cw90/ccw90/180/hflip/vflip)
change-fpsĐổi FPSfps (1-120)
video-colorMàu Videobrightness, contrast, saturation, gamma
video-speedTốc độ Videofactor (0.25-4), keepPitch (bool)
reverse-videoĐảo ngược Video- (tối đa 5 phút)
video-loudnormChuẩn hóa âm thanh- (EBU R128)
aspect-padĐệm tỷ lệ khung hìnhtarget (16:9/9:16/1:1/4:3/3:4), color (hex)
blur-padĐệm mờtarget (16:9/9:16/1:1/4:3/3:4), blur (2-50)
watermark-videoĐóng dấu Videotext, position, fontSize, opacity, color
stabilize-videoỔn định Videosmoothing (5-60, theo khung hình)
gif-to-videoGIF sang Videoformat (mp4/webm/mov)
video-to-webpVideo sang WebPfps, width, quality, loop (bool)
video-to-framesVideo sang khung hìnhmode (all/nth/timestamps), n, timestamps, format (png/jpg)
merge-videosGhép Video- (đa tệp, chuẩn hóa theo độ phân giải của video đầu tiên)
replace-audioThay âm thanh- (tệp video + âm thanh, hai tệp)
burn-subtitlesGắn phụ đề cứngfontSize (8-72) - tệp video + phụ đề
embed-subtitlesNhúng phụ đềlanguage (mã ISO 639-2/B) - tệp video + phụ đề
extract-subtitlesTrích xuất phụ đề- (xuất SRT)
images-to-videoẢnh sang VideosecondsPerImage (0.5-10), resolution (1080p/720p/square), fps - đa tệp
video-metadataDọn Metadata Video-
auto-subtitlesPhụ đề tự động (AI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), format (srt/vtt)
extract-audioTrích xuất âm thanhformat (mp3/wav/m4a/ogg)

Công cụ Âm thanh

ID công cụTênCài đặt chính
convert-audioChuyển đổi âm thanhformat (mp3/wav/ogg/flac/m4a), bitrateKbps (32-320)
trim-audioCắt âm thanhstartS, endS
volume-adjustĐiều chỉnh âm lượnggainDb (-30 đến 30)
normalize-audioChuẩn hóa âm thanh- (EBU R128, -16 LUFS)
fade-audioLàm mờ dần âm thanhfadeInS (0-30), fadeOutS (0-30)
reverse-audioĐảo ngược âm thanh-
audio-speedTốc độ âm thanhfactor (0.25-4)
pitch-shiftDịch cao độsemitones (-12 đến 12)
audio-channelsKênh âm thanhmode (stereo-to-mono/mono-to-stereo/swap)
silence-removalLoại bỏ khoảng lặngthresholdDb (-80 đến -20), minSilenceS (0.1-5)
noise-reductionGiảm nhiễustrength (light/medium/strong)
merge-audioGhép âm thanhformat (mp3/wav/flac/m4a) - đa tệp
split-audioChia âm thanhmode (time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-makerTrình tạo nhạc chuôngstartS, durationS (1-30)
waveform-imageẢnh dạng sóngwidth, height, color (hex)
audio-metadataMetadata âm thanhstrip (bool), title, artist, album
transcribe-audioChuyển giọng nói thành văn bản (AI)language (auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat (txt/srt/vtt)

Công cụ Tài liệu

ID công cụTênCài đặt chính
merge-pdfGhép PDF- (đa tệp, tối đa 20 PDF)
split-pdfChia PDFmode (range/every), range, everyN (1-500)
compress-pdfNén PDFmode (quality/targetSize), quality (1-100), targetSizeKb
rotate-pdfXoay PDFangle (90/180/270), range (khoảng trang)
extract-pagesTrích xuất trangrange (cú pháp qpdf, ví dụ "1-5,8,10-z")
remove-pagesXóa trangpages (khoảng qpdf cần xóa)
organize-pdfSắp xếp PDForder (thứ tự trang qpdf, ví dụ "3,1,2,5-z")
protect-pdfBảo vệ PDFuserPassword, ownerPassword (AES-256)
unlock-pdfMở khóa PDFpassword
repair-pdfSửa chữa PDF-
linearize-pdfTối ưu PDF cho Web- (tuyến tính hóa để xem web nhanh)
grayscale-pdfPDF thang xám-
pdfa-convertChuyển đổi PDF/A- (PDF/A-2 lưu trữ)
crop-pdfCắt PDFmargin (0-2000 điểm)
nup-pdfN-up PDFperSheet (2/3/4/8/9/12/16)
booklet-pdfBooklet PDFperSheet (2/4/6/8)
watermark-pdfĐóng dấu PDFtext, position, fontSize, opacity, rotation
pdf-page-numbersĐánh số trang PDFposition (bl/bc/br/tl/tc/tr), fontSize
flatten-pdfLàm phẳng PDF- (nướng biểu mẫu và chú thích)
redact-pdfChe thông tin PDFterms (string[]), caseSensitive (bool)
sign-pdfKý PDFRoute multipart tùy chỉnh với PDF file, tệp chữ ký sig0, sig1, và mảng JSON placements
pdf-to-textPDF sang Text-
pdf-to-wordPDF sang Word-
pdf-metadataMetadata PDFtitle, author, subject, keywords
convert-documentChuyển đổi tài liệuformat (docx/odt/rtf/txt)
convert-presentationChuyển đổi bản trình bàyformat (pptx/odp)
convert-spreadsheetChuyển đổi bảng tínhformat (xlsx/ods/csv)
excel-to-pdfExcel sang PDF-
word-to-pdfWord sang PDF-
powerpoint-to-pdfPowerPoint sang PDF-
html-to-pdfHTML sang PDF- (tài nguyên từ xa bị tắt)
markdown-to-docxMarkdown sang Word-
markdown-to-htmlMarkdown sang HTML-
markdown-to-pdfMarkdown sang PDF- (tài nguyên từ xa bị tắt)
epub-convertChuyển đổi EPUBformat (pdf/docx/html/md)
to-epubChuyển đổi sang EPUB- (nhận .docx, .md, .html, .txt)
ocr-pdfPDF OCR (AI)quality (fast/balanced/best), language (auto/en/de/fr/es/zh/ja/ko), pages
pdf-to-imagePDF sang ảnhpages (all/range), format, dpi, quality
pdf-to-jpgPDF sang JPGpages, dpi, quality, colorMode
pdf-to-pngPDF sang PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF sang TIFFpages, dpi, quality, colorMode

Công cụ Tệp

ID công cụTênCài đặt chính
chart-makerTrình tạo biểu đồkind (bar/line/pie), title, width, height
csv-excelCSV sang Excelsheet (số trang tính cho đầu vào XLSX) - hai chiều
csv-jsonCSV sang JSONpretty (bool) - hai chiều
json-xmlJSON sang XMLpretty (bool) - hai chiều
split-csvChia CSVrowsPerFile (1-1000000), keepHeader (bool)
merge-csvsGhép CSV- (đa tệp, cột khớp nhau)
yaml-jsonYAML / JSON- (hai chiều)
xml-to-csvXML sang CSV- (tự động tìm các phần tử lặp)
excel-to-csvExcel sang CSVcấu hình chuyển đổi chuyên biệt được hỗ trợ bởi convert-spreadsheet
create-zipTạo ZIP- (đa tệp, 2-50 tệp)
extract-zipGiải nén ZIP- (chống bom nén)

HTML sang ảnh

Chụp một trang web thành ảnh. Khác với các công cụ khác, endpoint này nhận application/json thay vì dữ liệu form multipart (không cần tải tệp lên).

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

Content-Type: application/json

Tham sốKiểuMặc địnhMô tả
urlstring(bắt buộc)URL cần chụp (chỉ http/https)
formatstring"png"Định dạng đầu ra: jpg, png, webp
qualitynumber90Chất lượng 1-100 (chỉ JPG/WebP)
fullPagebooleanfalseChụp toàn bộ trang cuộn được
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280Chiều rộng viewport tùy chỉnh 320-3840
viewportHeightnumber720Chiều cao viewport tùy chỉnh 320-2160

Ví dụ:

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

Response:

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

Route con của công cụ

Một số công cụ cung cấp thêm endpoint ngoài POST /api/v1/tools/<section>/<toolId> tiêu chuẩn:

Phương thứcĐường dẫnMô tả
GET/api/v1/tools/popularTrả về ID công cụ phổ biến, quay lại danh sách mặc định được tuyển chọn khi dữ liệu sử dụng còn ít
POST/api/v1/tools/image/remove-background/effectsÁp dụng hiệu ứng nền (color/gradient/blur/shadow) mà không chạy lại AI. Dùng mặt nạ được cache từ lần xóa ban đầu.
POST/api/v1/tools/image/edit-metadata/inspectĐọc metadata EXIF/IPTC/XMP có sẵn từ một ảnh
POST/api/v1/tools/image/strip-metadata/inspectKiểm tra các trường metadata trước khi xóa
POST/api/v1/tools/image/passport-photo/analyzeGiai đoạn 1: Phát hiện khuôn mặt bằng AI + xóa nền. Trả về điểm mốc khuôn mặt và dữ liệu được cache.
POST/api/v1/tools/image/passport-photo/generateGiai đoạn 2: Cắt, đổi kích thước và xếp ô bằng phân tích được cache. Không chạy lại AI.
POST/api/v1/tools/image/gif-tools/infoLấy metadata GIF (số khung hình, kích thước, thời lượng)
POST/api/v1/tools/pdf/pdf-to-image/infoLấy metadata PDF (số trang, kích thước)
POST/api/v1/tools/pdf/pdf-to-image/previewTạo bản xem trước của một trang PDF cụ thể
POST/api/v1/tools/pdf/pdf-to-jpg/infoLấy metadata PDF cho cấu hình JPG chuyên biệt
POST/api/v1/tools/pdf/pdf-to-jpg/previewTạo bản xem trước trang PDF cấu hình JPG
POST/api/v1/tools/pdf/pdf-to-png/infoLấy metadata PDF cho cấu hình PNG chuyên biệt
POST/api/v1/tools/pdf/pdf-to-png/previewTạo bản xem trước trang PDF cấu hình PNG
POST/api/v1/tools/pdf/pdf-to-tiff/infoLấy metadata PDF cho cấu hình TIFF chuyên biệt
POST/api/v1/tools/pdf/pdf-to-tiff/previewTạo bản xem trước trang PDF cấu hình TIFF
POST/api/v1/tools/image/svg-to-raster/batchChuyển đổi hàng loạt nhiều SVG sang raster
POST/api/v1/tools/image/image-enhancement/analyzePhân tích chất lượng ảnh và trả về đề xuất nâng cao
POST/api/v1/tools/image/optimize-for-web/previewBản xem trước nhẹ để tinh chỉnh tham số trực tiếp. Trả về ảnh được tối ưu kèm header kích thước.

Xử lý hàng loạt

Áp dụng một công cụ hỗ trợ hàng loạt tổng quát cho nhiều tệp cùng lúc. Trả về một kho lưu trữ ZIP. Các route đa tệp hoặc nhiều bước tùy chỉnh, chẳng hạn ký PDF, OCR PDF và các route cấu hình PDF-sang-ảnh, dùng hợp đồng endpoint riêng thay vì route /batch tổng quát.

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

Độ đồng thời được kiểm soát bởi CONCURRENT_JOBS (mặc định: tự động phát hiện từ số lõi CPU). MAX_BATCH_SIZE giới hạn số tệp mỗi lô (mặc định: 100; đặt 0 để không giới hạn).

Pipeline

Thực thi một 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}}]}'

Đầu ra của mỗi bước là đầu vào của bước tiếp theo. Pipeline mặc định cho phép 20 bước, có thể cấu hình qua MAX_PIPELINE_STEPS. Đặt MAX_PIPELINE_STEPS=0 để bỏ giới hạn.

Lưu và quản lý pipeline

Phương thứcĐường dẫnMô tả
POST/api/v1/pipeline/saveLưu một pipeline có tên (name, description, steps[])
GET/api/v1/pipeline/listLiệt kê pipeline đã lưu (admin thấy tất cả; người dùng thấy của riêng mình)
DELETE/api/v1/pipeline/:idXóa (chủ sở hữu hoặc admin)
GET/api/v1/pipeline/toolsLiệt kê các ID công cụ hợp lệ cho các bước pipeline

Theo dõi tiến trình

Các tác vụ chạy lâu, công cụ được xếp hàng, tác vụ hàng loạt và pipeline phát tiến trình theo thời gian thực qua Server-Sent Events. Luồng tiến trình là công khai và được khóa theo ID tác vụ, nên client không cần gửi header Authorization để đọc.

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

Định dạng sự kiện:

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

Bạn có thể yêu cầu hủy một tác vụ đang xếp hàng hoặc đang chạy bằng POST /api/v1/jobs/:jobId/cancel. Response là {"canceled":true|false}.

Thư viện tệp

Lưu trữ tệp bền vững kèm lịch sử phiên bản.

Phương thứcĐường dẫnMô tả
POST/api/v1/uploadTải tệp lên không gian làm việc (xử lý tạm thời)
POST/api/v1/files/uploadTải tệp lên thư viện tệp bền vững
POST/api/v1/files/save-resultLưu kết quả xử lý của công cụ thành phiên bản tệp mới
GET/api/v1/filesLiệt kê tệp đã lưu (phân trang, có tìm kiếm)
GET/api/v1/files/:idLấy metadata tệp + chuỗi phiên bản
GET/api/v1/files/:id/downloadTải tệp xuống
GET/api/v1/files/:id/thumbnailLấy hình thu nhỏ JPEG 300px
DELETE/api/v1/filesXóa hàng loạt tệp và chuỗi phiên bản của chúng (thân: { ids: [...] })
POST/api/v1/fetch-urlsTải URL từ xa vào không gian làm việc cho các lần nhập dựa trên URL
POST/api/v1/previewTạo bản xem trước WebP tương thích trình duyệt (cho định dạng HEIC/HEIF/RAW)
GET/api/v1/files/:id/previewStream bản xem trước tương thích trình duyệt được cache hoặc tạo mới cho một tệp PDF, tài liệu văn phòng, video hoặc âm thanh đã lưu
POST/api/v1/preview/generateTạo bản xem trước MP4 hoặc MP3 theo yêu cầu cho một tệp phương tiện đã tải lên mà không cần lưu trước
GET/api/v1/download/:jobId/:filenameTải một tệp đã xử lý từ không gian làm việc

Để tự động lưu kết quả công cụ vào thư viện, hãy đưa vào fileId làm một trường form multipart tham chiếu đến một tệp có sẵn trong thư viện. Kết quả đã xử lý sẽ được lưu thành phiên bản mới.

Quản lý khóa API

Phương thứcĐường dẫnQuyền truy cậpMô tả
POST/api/v1/api-keysXác thựcTạo khóa mới - chỉ hiển thị một lần
GET/api/v1/api-keysXác thựcLiệt kê khóa (name, id, lastUsedAt - không phải khóa thô)
DELETE/api/v1/api-keys/:idXác thựcXóa khóa

Nhóm

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/teamsAdmin (teams:manage)Liệt kê nhóm
POST/api/v1/teamsAdmin (teams:manage)Tạo nhóm
PUT/api/v1/teams/:idAdmin (teams:manage)Đổi tên nhóm
DELETE/api/v1/teams/:idAdmin (teams:manage)Xóa nhóm (không thể xóa nhóm mặc định hoặc nhóm có thành viên)

Cài đặt

Cấu hình khóa-giá trị lúc chạy (bất kỳ người dùng đã xác thực nào cũng đọc được, chỉ admin ghi được).

Phương thứcĐường dẫnMô tả
GET/api/v1/settingsLấy tất cả cài đặt
PUT/api/v1/settingsCập nhật hàng loạt cài đặt (thân JSON với các cặp khóa-giá trị)
GET/api/v1/settings/:keyLấy một cài đặt cụ thể theo khóa

Các khóa đã biết: disabledTools (mảng JSON gồm các ID công cụ), enableExperimentalTools (chuỗi bool), loginAttemptLimit (số).

Tùy chọn

Tùy chọn theo từng người dùng tách biệt với cài đặt instance. Bất kỳ người dùng đã xác thực nào cũng có thể đọc và cập nhật bản đồ tùy chọn của riêng mình.

Phương thứcĐường dẫnMô tả
GET/api/v1/preferencesLấy tùy chọn của người dùng hiện tại dưới dạng { "preferences": { ... } }
PUT/api/v1/preferencesChèn/cập nhật một hoặc nhiều khóa tùy chọn cho người dùng hiện tại

Vai trò

Quản lý vai trò tùy chỉnh với quyền hạn chi tiết.

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/rolesAdmin (audit:read)Liệt kê tất cả vai trò kèm số người dùng
POST/api/v1/rolesAdmin (security:manage)Tạo một vai trò tùy chỉnh (name, description, permissions)
PUT/api/v1/roles/:idAdmin (security:manage)Cập nhật một vai trò tùy chỉnh (không thể sửa vai trò tích hợp sẵn)
DELETE/api/v1/roles/:idAdmin (security:manage)Xóa một vai trò tùy chỉnh (không thể xóa vai trò tích hợp sẵn; người dùng bị ảnh hưởng trở về vai trò user)

Các quyền hạn có sẵn (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.

Nhật ký kiểm toán

Endpoint chỉ dành cho admin để xem lại các hành động liên quan đến bảo mật.

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/audit-logAdmin (audit:read)Nhật ký kiểm toán phân trang với bộ lọc tùy chọn

Các tham số truy vấn:

Tham sốMô tả
pageSố trang (mặc định: 1)
limitSố mục mỗi trang (mặc định: 50, tối đa: 100)
actionLọc theo loại hành động (ví dụ ROLE_CREATED, ROLE_DELETED)
ipLọc theo địa chỉ IP nguồn
fromLọc các mục sau ngày ISO 8601 này
toLọc các mục trước ngày ISO 8601 này

Phân tích

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/config/analyticsCông khaiLấy cấu hình phân tích có hiệu lực (khóa PostHog, Sentry DSN, tỷ lệ lấy mẫu). Khóa, DSN và ID instance để trống khi phân tích bị tắt, dù từ việc nướng lúc biên dịch hay từ cài đặt analyticsEnabled của instance.
POST/api/v1/feedbackXác thựcGửi phản hồi rõ ràng của người dùng đến dự án PostHog đã cấu hình dưới dạng feedback_submitted. Route tuân thủ cổng phân tích, giới hạn tốc độ gửi, loại bỏ các trường liên hệ trừ khi contactOk là true, và không bao giờ nhận nội dung tệp, tên tệp, đường dẫn tải lên hoặc văn bản lỗi riêng tư thô. Khi phân tích bị tắt, nó trả về { "ok": true, "accepted": false }.
PUT/api/v1/settingsAdmin (settings:write)Đặt tùy chọn từ chối trên toàn instance. Gửi một thân JSON { "analyticsEnabled": "false" } để tắt phân tích cho tất cả mọi người, hoặc "true" để bật lại.

Tính năng / Bundle AI

Quản lý các bundle tính năng AI (cài đặt/gỡ cài đặt các gói mô hình AI trong môi trường Docker). Ưu tiên endpoint cài đặt ở cấp công cụ khi bật một công cụ từ tự động hóa tùy chỉnh: một số công cụ AI cần nhiều hơn một bundle dùng chung, và endpoint này bỏ qua các bundle đã cài đặt trong khi chỉ xếp hàng những bundle còn thiếu.

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/featuresXác thựcLiệt kê tất cả bundle tính năng và trạng thái cài đặt của chúng
POST/api/v1/admin/features/:bundleId/installAdmin (features:manage)Cài đặt một bundle tính năng (bất đồng bộ, trả về jobId để theo dõi tiến trình)
POST/api/v1/admin/tools/:toolId/features/installAdmin (features:manage)Cài đặt mọi bundle mà một công cụ cần; trả về trạng thái đã xếp hàng/đã bỏ qua theo từng bundle
POST/api/v1/admin/features/:bundleId/uninstallAdmin (features:manage)Gỡ cài đặt một bundle tính năng và dọn dẹp các tệp mô hình
GET/api/v1/admin/features/disk-usageAdmin (features:manage)Lấy tổng dung lượng đĩa của các mô hình AI
POST/api/v1/admin/features/importAdmin (features:manage)Nhập một kho lưu trữ bundle AI ngoại tuyến

Thao tác quản trị

Các endpoint vận hành cho quan sát, hỗ trợ, báo cáo sử dụng và trạng thái sao lưu.

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/admin/log-levelAdmin (settings:write)Đọc mức log lúc chạy hiện tại
POST/api/v1/admin/log-levelAdmin (settings:write)Thay đổi mức log lúc chạy (fatal, error, warn, info, debug, trace, hoặc silent)
GET/api/v1/metricsAdmin (system:health)Số liệu Prometheus ở định dạng văn bản
GET/api/v1/admin/support-bundleAdmin (system:health)Tải một bundle hỗ trợ chẩn đoán đã ẩn thông tin dưới dạng ZIP
GET/api/v1/admin/usageAdmin (audit:read)Dữ liệu bảng điều khiển sử dụng, với tham số truy vấn days tùy chọn
GET/api/v1/admin/backup-statusAdmin (system:health)Đọc metadata sao lưu gần nhất và trạng thái mới cũ
POST/api/v1/admin/backup-statusAdmin (system:health)Ghi nhận một lần sao lưu đã hoàn tất (type, sizeBytes tùy chọn, notes tùy chọn)

API Enterprise

Các route này bị khóa theo giấy phép của tính năng enterprise liên quan. Chúng vẫn yêu cầu quyền hạn SnapOtter được liệt kê.

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/enterprise/audit/exportAdmin (audit:read)Xuất các mục kiểm toán dưới dạng JSON hoặc CSV với bộ lọc
GET/api/v1/enterprise/config/exportAdmin (system:health)Xuất cấu hình instance, vai trò tùy chỉnh và nhóm đã ẩn thông tin
POST/api/v1/enterprise/config/importAdmin (system:health)Nhập cấu hình, với chạy thử tùy chọn
GET/api/v1/enterprise/ip-allowlistAdmin (security:manage)Đọc danh sách cho phép CIDR đã cấu hình
PUT/api/v1/enterprise/ip-allowlistAdmin (security:manage)Cập nhật danh sách cho phép CIDR với cơ chế ngăn tự khóa mình ra ngoài
GET/api/v1/enterprise/legal-holdAdmin (compliance:manage)Liệt kê các lệnh giữ pháp lý của người dùng và nhóm
PUT/api/v1/enterprise/legal-holdAdmin (compliance:manage)Áp dụng hoặc gỡ bỏ lệnh giữ pháp lý cho một người dùng hoặc nhóm
POST/api/v1/enterprise/scim/tokenAdmin (users:manage)Tạo một token bearer SCIM, chỉ trả về một lần
DELETE/api/v1/enterprise/scim/tokenAdmin (users:manage)Thu hồi token bearer SCIM hiện tại
GET/api/v1/enterprise/siem/configAdmin (webhooks:manage)Đọc cấu hình chuyển tiếp SIEM
PUT/api/v1/enterprise/siem/configAdmin (webhooks:manage)Cập nhật cấu hình chuyển tiếp SIEM
GET/api/v1/enterprise/webhooksAdmin (webhooks:manage)Liệt kê các đích webhook
POST/api/v1/enterprise/webhooksAdmin (webhooks:manage)Tạo một đích webhook
PUT/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Cập nhật một đích webhook
DELETE/api/v1/enterprise/webhooks/:indexAdmin (webhooks:manage)Xóa một đích webhook
POST/api/v1/enterprise/webhooks/:index/testAdmin (webhooks:manage)Gửi một payload webhook thử nghiệm
POST/api/v1/enterprise/users/:id/exportAdmin (compliance:manage)Bắt đầu một tác vụ xuất dữ liệu người dùng GDPR
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin (compliance:manage)Đọc trạng thái xuất GDPR và URL tải xuống
DELETE/api/v1/enterprise/users/:id/purgeAdmin (compliance:manage)Xóa vĩnh viễn dữ liệu của một người dùng sau khi xác nhận
DELETE/api/v1/enterprise/teams/:id/purgeAdmin (compliance:manage)Xóa vĩnh viễn dữ liệu của một nhóm sau khi xác nhận
GET/api/v1/admin/versionAdmin (system:health)Đọc metadata phiên bản của app, build, Node và schema
GET/api/v1/admin/migrations/pendingAdmin (system:health)So sánh các migration được đóng gói với các migration đã áp dụng
GET/api/v1/admin/upgrade-checkAdmin (system:health)Chạy các kiểm tra sẵn sàng nâng cấp

SCIM 2.0

Các endpoint khám phá SCIM là công khai. Các endpoint người dùng và nhóm yêu cầu token bearer SCIM được tạo ở trên.

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/scim/v2/ServiceProviderConfigCông khaiKhả năng của máy chủ SCIM
GET/api/v1/scim/v2/SchemasCông khaiKhám phá schema SCIM
GET/api/v1/scim/v2/ResourceTypesCông khaiKhám phá loại tài nguyên SCIM
GET/api/v1/scim/v2/UsersToken SCIMLiệt kê người dùng, với bộ lọc SCIM tùy chọn
POST/api/v1/scim/v2/UsersToken SCIMTạo một người dùng
GET/api/v1/scim/v2/Users/:idToken SCIMLấy một người dùng
PUT/api/v1/scim/v2/Users/:idToken SCIMThay thế một người dùng
DELETE/api/v1/scim/v2/Users/:idToken SCIMVô hiệu hóa mềm một người dùng
GET/api/v1/scim/v2/GroupsToken SCIMLiệt kê nhóm dưới dạng nhóm SCIM
POST/api/v1/scim/v2/GroupsToken SCIMTạo một nhóm
GET/api/v1/scim/v2/Groups/:idToken SCIMLấy một nhóm
PUT/api/v1/scim/v2/Groups/:idToken SCIMThay thế một nhóm và thành viên nhóm
DELETE/api/v1/scim/v2/Groups/:idToken SCIMXóa một nhóm

Mẫu Meme

API hỗ trợ cho công cụ trình tạo meme.

Phương thứcĐường dẫnQuyền truy cậpMô tả
GET/api/v1/meme-templatesXác thựcLiệt kê tất cả mẫu meme có sẵn kèm vị trí các ô văn bản
GET/api/v1/meme-templates/full/:filenameXác thựcPhục vụ ảnh mẫu kích thước đầy đủ
GET/api/v1/meme-templates/thumbs/:filenameXác thựcPhục vụ hình thu nhỏ của mẫu
GET/api/v1/meme-templates/fonts/:filenameXác thựcPhục vụ tệp phông chữ dùng để hiển thị văn bản meme

Phản hồi lỗi

Mọi lỗi đều trả về JSON:

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
Trạng tháiÝ nghĩa
400Request không hợp lệ / xác thực thất bại
401Chưa xác thực
403Không đủ quyền hạn
404Không tìm thấy tài nguyên
413Tệp quá lớn (xem MAX_UPLOAD_SIZE_MB)
422Xử lý thất bại sau khi xác thực
429Bị giới hạn tốc độ (xem RATE_LIMIT_PER_MIN)
501Bundle tính năng AI cần thiết chưa được cài đặt (FEATURE_NOT_INSTALLED)
500Lỗi máy chủ nội bộ