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

REST API リファレンス

リクエスト/レスポンスの例を含むインタラクティブな API ドキュメントは http://localhost:1349/api/docs で利用できます。

機械可読な仕様:

  • /api/v1/openapi.yaml - OpenAPI 3.1 仕様
  • /llms.txt - LLM 向けのサマリー
  • /llms-full.txt - LLM 向けの完全なドキュメント

認証

AUTH_ENABLED=falseでない限り、すべてのエンドポイントは認証を必要とします。

セッショントークン

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

セッションは 7 日後に期限切れになります(SESSION_DURATION_HOURS で設定可能)。

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

キーには si_ というプレフィックスが付き、scrypt ハッシュとして保存されます。生のキーは一度だけ表示され、二度と取得できません。

認証エンドポイント

メソッドパスアクセス説明
POST/api/auth/loginPublicログインしてセッショントークンを取得
POST/api/auth/logoutAuth現在のセッションを破棄
GET/api/auth/sessionAuth現在のセッションを検証
POST/api/auth/change-passwordAuth自分のパスワードを変更(他のすべてのセッションと API キーを無効化)
GET/api/auth/usersAdminすべてのユーザーを一覧表示
POST/api/auth/registerAdmin新しいユーザーを作成
PUT/api/auth/users/:idAdminユーザーのロールまたはチームを更新
POST/api/auth/users/:id/reset-passwordAdminユーザーのパスワードをリセット
DELETE/api/auth/users/:idAdminユーザーを削除
GET/api/v1/config/authPublic認証が有効かどうかを確認({ authEnabled: bool }
POST/api/auth/mfa/enrollAuthTOTP MFA 登録を開始。エンタープライズの mfa 機能が必要
POST/api/auth/mfa/verifyAuthTOTP コードで MFA 登録を確定
POST/api/auth/mfa/completePublic保留中の MFA ログインチャレンジを完了
POST/api/auth/mfa/disableAuth現在のユーザーの MFA を無効化
POST/api/auth/users/:id/mfa/resetAdmin(users:manageユーザーの MFA をリセット
GET/api/auth/oidc/loginPublicOIDC が有効なとき OIDC ログインを開始
GET/api/auth/oidc/callbackPublicOIDC 認可コールバック
GET/api/auth/saml/metadataPublicSAML が有効なときの SAML SP メタデータ XML
GET/api/auth/saml/loginPublicSAML ログインを開始
POST/api/auth/saml/callbackPublicSAML アサーションコンシューマーサービス

ユーザーに対して MFA が有効な場合、POST /api/auth/login はセッショントークンの代わりに {"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false} を返します。その mfaToken と TOTP またはリカバリコードを /api/auth/mfa/complete に送信してください。

パーミッション

パーミッションAdminUser
ツールを使用
自分のファイル/パイプライン/API キー
全ユーザーのファイル/パイプライン/キーを閲覧-
設定の書き込み-
ユーザーとチームの管理-
ブランディングの管理-

ヘルスチェック

メソッドパスアクセス説明
GET/api/v1/healthPublic基本的なヘルスチェック。200 で {"status":"healthy","version":"..."} を返し、データベースに到達できない場合は 503 で {"status":"unhealthy"} を返します。
GET/api/v1/readyzPublicレディネスプローブ。PostgreSQL、Redis、ディスク容量、および設定されている場合は S3 をチェックします。インスタンスがトラフィックを受け取るべきでない場合は 503 を返します。
GET/api/v1/admin/healthAdmin(system:health稼働時間、ストレージモード、データベースステータス、キューの状態、GPU の可用性を含む詳細な診断。

ツールの使用

すべてのツールは同じパターンに従います:

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>imagevideoaudiopdffiles のいずれかです。

  • アップロードは multipart/form-data です。
  • settings はツール固有のオプションを含む JSON 文字列です。
  • clientJobId は、呼び出し元が指定する進捗相関のためのオプションのフォームフィールドです。
  • fileId は、既存のファイルライブラリ項目を参照するオプションのフォームフィールドです。存在する場合、処理された出力は新しいバージョンとして保存され、レスポンスに savedFileId が含まれます。
  • 高速ツール は通常 200 JSON を返します: {"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}。処理されたファイルは downloadUrl から取得します。
  • キューに入るツール は、長時間実行される場合や同期待機ウィンドウを超える場合、202 JSON を返すことがあります: {"jobId":"...","async":true}。進捗のために SSE に接続し、完了したらダウンロードします(進捗トラッキング を参照)。
  • バッチ ルートは、汎用バッチレジストリに登録されたツールについて、ZIP アーカイブを直接ストリーミングして返します(X-Job-Id ヘッダー付き)。

ツールリファレンス

変換プリセット

共有カタログには、jpg-to-pngmov-to-mp4m4a-to-mp3pdf-to-jpgexcel-to-csv など、83 個の専用変換プリセットエンドポイントが含まれています。プリセットはファーストクラスのツールルートです:

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

各プリセットは出力形式を固定し、convertconvert-videoextract-audioconvert-audioimage-to-pdfpdf-to-imagesvg-to-rasterconvert-spreadsheet などのベースツールに委譲します。完全なルートテーブルとオプション設定については、変換プリセット を参照してください。

基本ツール

ツール ID名前主な設定
resizeリサイズwidth, height, fit(cover/contain/fill/inside/outside), percentage, withoutEnlargement, 加えて 23 種類のソーシャルメディアプリセット
cropクロップleft, top, width, height, unit(px/percent)
rotate回転と反転angle, horizontal(bool), vertical(bool)
convert変換format(jpg/png/webp/avif/tiff/gif/heic/heif), quality
compress圧縮mode(quality/targetSize), quality(1–100), targetSizeKb

最適化

ツール ID名前主な設定
optimize-for-webWeb 向け最適化format(webp/jpeg/avif/png), quality, maxWidth, maxHeight, progressive, stripMetadata
strip-metadataメタデータ削除-
edit-metadataメタデータ編集title, description, author, copyright, keywords, gps(lat/lon), dateTime
bulk-rename一括リネームpattern{n}, {date}, {original} に対応), startIndex, padding
image-to-pdf画像から PDFpageSize(A4/Letter/...), orientation, margin, targetSize({value, unit})
faviconファビコンジェネレーターpadding, backgroundColor, borderRadius - 標準サイズをすべて生成

調整

ツール ID名前主な設定
adjust-colors色の調整brightness, contrast, exposure, saturation, temperature, tint, hue, sharpness, red, green, blue, effect(none/grayscale/sepia/invert)
sharpeningシャープニング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色の置換sourceColor, targetColor(置換色), makeTransparent, tolerance
color-blindness色覚異常シミュレーションsimulationType(protanopia/deuteranopia/tritanopia/protanomaly/deuteranomaly/tritanomaly/achromatopsia/blueConeMonochromacy、デフォルト "deuteranomaly")
duotoneデュオトーンshadow(hex), highlight(hex), intensity(0-100)
pixelateピクセレートblockSize(2-128), region(部分的なピクセレートのための {left, top, width, height})
vignetteビネットstrength(0.1-1), color(hex), radius, softness, roundness, centerX, centerY

AI ツール

すべての AI ツールはお使いのハードウェア上で動作します。デフォルトでは CPU、サポートされている NVIDIA GPU が利用可能な場合は NVIDIA CUDA を使用します。VA-API、Quick Sync、OpenCL による Intel/AMD iGPU アクセラレーションは、現在 AI 推論ではサポートされていません。インターネット接続は不要です。

ツール ID名前AI モデル主な設定
remove-background背景の削除rembg(BiRefNet / U2-Net)model, backgroundType(transparent/color/gradient/blur/image), backgroundColor, gradientColor1, gradientColor2, gradientAngle, blurEnabled, blurIntensity, shadowEnabled, shadowOpacity
upscale画像のアップスケールRealESRGANscale(2/4), model, faceEnhance, denoise, format, quality
erase-objectオブジェクト消しゴムLaMa(ONNX)マスクは 2 番目のファイルパートとして送信(フィールド名 mask), format, quality
ocrOCR / テキスト抽出PaddleOCR / Tesseractquality(fast/balanced/best), language, enhance
blur-faces顔 / PII ぼかしMediaPipeblurRadius, sensitivity
smart-cropスマートクロップMediaPipe + 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-enhancement画像の強調解析ベースmode(auto/exposure/contrast/color/sharpness), strength
enhance-faces顔の強調GFPGAN / CodeFormermodel(gfpgan/codeformer), strength, sensitivity, centerFace
colorizeAI カラー化DDColorintensity, model
noise-removalノイズ除去段階的デノイズtier(quick/balanced/quality/maximum), strength, detailPreservation, colorNoise, format, quality
red-eye-removal赤目除去顔ランドマーク + 色解析sensitivity, strength
restore-photo写真復元複数ステップのパイプラインmode(auto/light/heavy), scratchRemoval, faceEnhancement, fidelity, denoise, denoiseStrength, colorize
passport-photoパスポート写真MediaPipe ランドマーク2 フェーズフロー。解析はマルチパート file を使用。生成は countryCode, bgColor, printLayout(none/4x6/a4), ランドマーク, 画像寸法を含む JSON を使用
content-aware-resizeコンテンツ認識リサイズシームカービング(caire)width, height, protectFaces, blurRadius, sobelThreshold, square
transparency-fixerPNG 透明度フィクサーBiRefNet HR-mattingdefringe(0-100), outputFormat(png/webp)
background-replace背景の置き換えrembg(BiRefNet)backgroundType(color/gradient), color(hex), gradientColor1, gradientColor2, gradientAngle, feather(0-20), format(png/webp)
blur-background背景ぼかしrembg(BiRefNet)intensity(1-100), feather(0-20), format(png/webp)
ai-canvas-expandAI キャンバス拡張LaMa(アウトペインティング)extendTop, extendRight, extendBottom, extendLeft(px), tier(fast/balanced/high), format, quality

ウォーターマークとオーバーレイ

ツール ID名前主な設定
watermark-textテキストウォーターマークtext, font, fontSize, color, opacity, position, rotation, tile
watermark-image画像ウォーターマークopacity, position, scale - 2 番目のファイルがウォーターマーク
text-overlayテキストオーバーレイtext, font, fontSize, color, x, y, background, padding, borderRadius
compose画像合成x, y, opacity, blend - 2 番目のファイルが上にレイヤーされる
meme-generatorミームジェネレーター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。テンプレートモード(templateId を含む JSON ボディ)またはカスタム画像モード(ファイル付きマルチパート)に対応。

ユーティリティ

ツール ID名前主な設定
info画像情報-(width, height, format, size, channels, hasAlpha, DPI, EXIF を返す)
compare画像比較mode(side-by-side/overlay/diff), diffThreshold - 2 番目のファイルが比較対象
find-duplicates重複の検出threshold(知覚ハッシュ距離、デフォルト 8) - 複数ファイル
color-paletteカラーパレットcount(主要色の数), format(hex/rgb)
qr-generateQR コードジェネレーターdata, size, margin, colorDark, colorLight, errorCorrectionLevel, dotStyle, cornerStyle, logo(オプションのファイル)
barcode-readバーコードリーダー-(QR, EAN, Code128, DataMatrix などを自動検出)
image-to-base64画像から Base64format(data-uri/plain), mimeType
html-to-imageHTML から画像url, format(png/jpg/webp), quality, fullPage, devicePreset(desktop/tablet/mobile/custom), viewportWidth, viewportHeight
histogramヒストグラムscale(linear/log) - RGB ヒストグラムチャートとチャンネルごとの統計を返す
lqip-placeholderLQIP プレースホルダーwidth(4-64), blur, strategy(blur/pixelate/solid), format(webp/png/jpeg), quality
barcode-generateバーコードジェネレーターtext, type(code128/ean13/upca/code39/itf14/datamatrix), scale(1-8), includeText(bool)。JSON ボディ、ファイルアップロードなし。

レイアウトと構成

ツール ID名前主な設定
collageコラージュ / グリッドtemplate(25 以上のレイアウト), gap, backgroundColor, borderRadius - 複数ファイル
stitch連結 / 結合direction(horizontal/vertical/grid), gap, backgroundColor, alignment - 複数ファイル
split画像分割mode(grid/rows/cols), rows, cols, tileWidth, tileHeight
borderボーダーとフレームwidth, color, style(solid/gradient/pattern), borderRadius, padding, shadow
beautifyスクリーンショットの装飾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円形クロップzoom(1-5), offsetX, offsetY, borderWidth, borderColor, background(transparent/hex), outputSize
image-pad画像パディング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スプライトシートcolumns(1-16), padding, background(hex), format(png/webp/jpeg), quality - 複数ファイル(2-64 枚の画像)

形式と変換

ツール ID名前主な設定
svg-to-rasterSVG からラスターformat(png/jpeg/webp/avif/tiff/gif/heif), width, height, scale, dpi, background
vectorize画像から SVGcolorMode(bw/color), threshold, colorPrecision, filterSpeckle, pathMode(none/polygon/spline)
gif-toolsGIF ツールaction(resize/optimize/reverse/speed/extract-frames/rotate/add-text), アクション固有のパラメータ
gif-webpGIF/WebP コンバーターquality(1-100), lossless(bool), resizePercent(10-100)

動画ツール

ツール ID名前主な設定
convert-video動画の変換format(mp4/mov/webm/avi/mkv), quality(high/balanced/small)
compress-video動画の圧縮quality(light/balanced/strong), resolution(original/1080p/720p/480p)
trim-video動画のトリミングstartS, endS, precise(bool、フレーム精度のカット)
mute-video動画のミュート-
video-to-gif動画から GIFfps(1-30), width, startS, durationS(最大 60 秒)
resize-video動画のリサイズwidth, height, preset(custom/2160p/1440p/1080p/720p/480p/360p)
crop-video動画のクロップwidth, height, x, y
rotate-video動画の回転transform(cw90/ccw90/180/hflip/vflip)
change-fpsFPS の変更fps(1-120)
video-color動画の色調整brightness, contrast, saturation, gamma
video-speed動画の速度factor(0.25-4), keepPitch(bool)
reverse-video動画の逆再生-(最大 5 分)
video-loudnorm音声のノーマライズ-(EBU R128)
aspect-padアスペクトパディングtarget(16:9/9:16/1:1/4:3/3:4), color(hex)
blur-padぼかしパディングtarget(16:9/9:16/1:1/4:3/3:4), blur(2-50)
watermark-video動画のウォーターマークtext, position, fontSize, opacity, color
stabilize-video動画の手ぶれ補正smoothing(5-60、フレーム単位)
gif-to-videoGIF から動画format(mp4/webm/mov)
video-to-webp動画から WebPfps, width, quality, loop(bool)
video-to-frames動画からフレームmode(all/nth/timestamps), n, timestamps, format(png/jpg)
merge-videos動画の結合-(複数ファイル、最初の動画の解像度にノーマライズ)
replace-audio音声の置き換え-(動画 + 音声ファイル、2 ファイル)
burn-subtitles字幕の焼き込みfontSize(8-72) - 動画 + 字幕ファイル
embed-subtitles字幕の埋め込みlanguage(ISO 639-2/B コード) - 動画 + 字幕ファイル
extract-subtitles字幕の抽出-(SRT を出力)
images-to-video画像から動画secondsPerImage(0.5-10), resolution(1080p/720p/square), fps - 複数ファイル
video-metadata動画メタデータのクリーン-
auto-subtitles自動字幕(AI)language(auto/en/de/fr/es/zh/ja/ko/id/th/vi), format(srt/vtt)
extract-audio音声の抽出format(mp3/wav/m4a/ogg)

音声ツール

ツール ID名前主な設定
convert-audio音声の変換format(mp3/wav/ogg/flac/m4a), bitrateKbps(32-320)
trim-audio音声のトリミングstartS, endS
volume-adjust音量調整gainDb(-30 から 30)
normalize-audio音声のノーマライズ-(EBU R128、-16 LUFS)
fade-audio音声のフェードfadeInS(0-30), fadeOutS(0-30)
reverse-audio音声の逆再生-
audio-speed音声の速度factor(0.25-4)
pitch-shiftピッチシフトsemitones(-12 から 12)
audio-channels音声チャンネルmode(stereo-to-mono/mono-to-stereo/swap)
silence-removal無音の除去thresholdDb(-80 から -20), minSilenceS(0.1-5)
noise-reductionノイズ低減strength(light/medium/strong)
merge-audio音声の結合format(mp3/wav/flac/m4a) - 複数ファイル
split-audio音声の分割mode(time/parts/silence), segmentS, parts, thresholdDb, minSilenceS
ringtone-maker着信音メーカーstartS, durationS(1-30)
waveform-image波形画像width, height, color(hex)
audio-metadata音声メタデータstrip(bool), title, artist, album
transcribe-audio音声の文字起こし(AI)language(auto/en/de/fr/es/zh/ja/ko/id/th/vi), outputFormat(txt/srt/vtt)

ドキュメントツール

ツール ID名前主な設定
merge-pdfPDF の結合-(複数ファイル、最大 20 個の PDF)
split-pdfPDF の分割mode(range/every), range, everyN(1-500)
compress-pdfPDF の圧縮mode(quality/targetSize), quality(1-100), targetSizeKb
rotate-pdfPDF の回転angle(90/180/270), range(ページ範囲)
extract-pagesページの抽出range(qpdf 構文、例 "1-5,8,10-z")
remove-pagesページの削除pages(削除する qpdf 範囲)
organize-pdfPDF の整理order(qpdf ページ順、例 "3,1,2,5-z")
protect-pdfPDF の保護userPassword, ownerPassword(AES-256)
unlock-pdfPDF のロック解除password
repair-pdfPDF の修復-
linearize-pdfPDF の Web 最適化-(高速な Web 表示のためにリニアライズ)
grayscale-pdfPDF のグレースケール化-
pdfa-convertPDF/A 変換-(アーカイブ用 PDF/A-2)
crop-pdfPDF のクロップmargin(0-2000 ポイント)
nup-pdfN-up PDFperSheet(2/3/4/8/9/12/16)
booklet-pdfブックレット PDFperSheet(2/4/6/8)
watermark-pdfPDF のウォーターマークtext, position, fontSize, opacity, rotation
pdf-page-numbersPDF ページ番号position(bl/bc/br/tl/tc/tr), fontSize
flatten-pdfPDF のフラット化-(フォームと注釈を焼き込む)
redact-pdfPDF の墨消しterms(string[]), caseSensitive(bool)
sign-pdfPDF の署名PDF file、署名ファイル sig0sig1placements JSON 配列を含むカスタムマルチパートルート
pdf-to-textPDF からテキスト-
pdf-to-wordPDF から Word-
pdf-metadataPDF メタデータtitle, author, subject, keywords
convert-documentドキュメントの変換format(docx/odt/rtf/txt)
convert-presentationプレゼンテーションの変換format(pptx/odp)
convert-spreadsheetスプレッドシートの変換format(xlsx/ods/csv)
excel-to-pdfExcel から PDF-
word-to-pdfWord から PDF-
powerpoint-to-pdfPowerPoint から PDF-
html-to-pdfHTML から PDF-(リモートリソースは無効)
markdown-to-docxMarkdown から Word-
markdown-to-htmlMarkdown から HTML-
markdown-to-pdfMarkdown から PDF-(リモートリソースは無効)
epub-convertEPUB の変換format(pdf/docx/html/md)
to-epubEPUB への変換-(.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 から画像pages(all/range), format, dpi, quality
pdf-to-jpgPDF から JPGpages, dpi, quality, colorMode
pdf-to-pngPDF から PNGpages, dpi, quality, colorMode
pdf-to-tiffPDF から TIFFpages, dpi, quality, colorMode

ファイルツール

ツール ID名前主な設定
chart-makerチャートメーカーkind(bar/line/pie), title, width, height
csv-excelCSV から Excelsheet(XLSX 入力のワークシート番号) - 双方向
csv-jsonCSV から JSONpretty(bool) - 双方向
json-xmlJSON から XMLpretty(bool) - 双方向
split-csvCSV の分割rowsPerFile(1-1000000), keepHeader(bool)
merge-csvsCSV の結合-(複数ファイル、列が一致するもの)
yaml-jsonYAML / JSON-(双方向)
xml-to-csvXML から CSV-(繰り返し要素を自動検出)
excel-to-csvExcel から CSVconvert-spreadsheet を基盤とする専用の変換プリセット
create-zipZIP の作成-(複数ファイル、2-50 ファイル)
extract-zipZIP の展開-(ボム対策済み)

HTML から画像

Web ページを画像としてキャプチャします。他のツールと異なり、このエンドポイントはマルチパートフォームデータの代わりに application/json を受け付けます(ファイルアップロードは不要)。

エンドポイント: POST /api/v1/tools/image/html-to-image

Content-Type: application/json

パラメータデフォルト説明
urlstring(必須)キャプチャする URL(http/https のみ)
formatstring"png"出力形式: jpg, png, webp
qualitynumber90品質 1-100(JPG/WebP のみ)
fullPagebooleanfalseスクロール可能なページ全体をキャプチャ
devicePresetstring"desktop"desktop, tablet, mobile, custom
viewportWidthnumber1280カスタムビューポート幅 320-3840
viewportHeightnumber720カスタムビューポート高さ 320-2160

例:

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

レスポンス:

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

ツールのサブルート

一部のツールは、標準の POST /api/v1/tools/<section>/<toolId> 以外に追加のエンドポイントを公開します:

メソッドパス説明
GET/api/v1/tools/popular人気のツール ID を返す。使用データが乏しい場合はキュレーションされたデフォルトリストにフォールバック
POST/api/v1/tools/image/remove-background/effectsAI を再実行せずに背景エフェクト(color/gradient/blur/shadow)を適用。初回削除時のキャッシュされたマスクを使用。
POST/api/v1/tools/image/edit-metadata/inspect画像から既存の EXIF/IPTC/XMP メタデータを読み取る
POST/api/v1/tools/image/strip-metadata/inspect削除前にメタデータフィールドを確認
POST/api/v1/tools/image/passport-photo/analyzeフェーズ 1: AI 顔検出 + 背景削除。顔ランドマークとキャッシュデータを返す。
POST/api/v1/tools/image/passport-photo/generateフェーズ 2: キャッシュされた解析を使ってクロップ、リサイズ、タイル化。AI の再実行なし。
POST/api/v1/tools/image/gif-tools/infoGIF メタデータ(フレーム数、寸法、再生時間)を取得
POST/api/v1/tools/pdf/pdf-to-image/infoPDF メタデータ(ページ数、寸法)を取得
POST/api/v1/tools/pdf/pdf-to-image/preview特定の PDF ページのプレビューを生成
POST/api/v1/tools/pdf/pdf-to-jpg/info専用の JPG プリセット向けの PDF メタデータを取得
POST/api/v1/tools/pdf/pdf-to-jpg/previewJPG プリセットの PDF ページプレビューを生成
POST/api/v1/tools/pdf/pdf-to-png/info専用の PNG プリセット向けの PDF メタデータを取得
POST/api/v1/tools/pdf/pdf-to-png/previewPNG プリセットの PDF ページプレビューを生成
POST/api/v1/tools/pdf/pdf-to-tiff/info専用の TIFF プリセット向けの PDF メタデータを取得
POST/api/v1/tools/pdf/pdf-to-tiff/previewTIFF プリセットの PDF ページプレビューを生成
POST/api/v1/tools/image/svg-to-raster/batch複数の SVG を一括でラスターに変換
POST/api/v1/tools/image/image-enhancement/analyze画像品質を解析し、強調の推奨事項を返す
POST/api/v1/tools/image/optimize-for-web/previewライブパラメータ調整のための軽量プレビュー。サイズヘッダー付きの最適化された画像を返す。

バッチ処理

汎用のバッチ対応ツールを複数のファイルに一度に適用します。ZIP アーカイブを返します。PDF 署名、PDF OCR、PDF から画像へのプリセットルートなど、カスタムの複数ファイルまたは複数ステップのルートは、汎用の /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}'

並列度は CONCURRENT_JOBS で制御されます(デフォルト: CPU コアから自動検出)。MAX_BATCH_SIZE はバッチあたりのファイル数を制限します(デフォルト: 100、無制限にするには 0 を設定)。

パイプライン

パイプラインの実行

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

各ステップの出力が次のステップの入力になります。パイプラインはデフォルトで 20 ステップまで許可され、MAX_PIPELINE_STEPS で設定可能です。MAX_PIPELINE_STEPS=0 を設定すると制限が解除されます。

パイプラインの保存と管理

メソッドパス説明
POST/api/v1/pipeline/save名前付きパイプラインを保存(name, description, steps[]
GET/api/v1/pipeline/list保存済みパイプラインを一覧表示(管理者はすべて、ユーザーは自分のものを閲覧)
DELETE/api/v1/pipeline/:id削除(所有者または管理者)
GET/api/v1/pipeline/toolsパイプラインステップに有効なツール ID を一覧表示

進捗トラッキング

長時間実行されるジョブ、キューに入るツール、バッチジョブ、パイプラインは、Server-Sent Events を介してリアルタイムの進捗を送信します。進捗ストリームは公開されており、ジョブ ID をキーとしているため、クライアントは読み取りに Authorization ヘッダーを送信する必要はありません。

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

イベント形式:

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

POST /api/v1/jobs/:jobId/cancel を使って、キューに入っているまたは実行中のジョブのキャンセルをリクエストできます。レスポンスは {"canceled":true|false} です。

ファイルライブラリ

バージョン履歴付きの永続的なファイルストレージ。

メソッドパス説明
POST/api/v1/uploadワークスペースにファイルをアップロード(一時的な処理用)
POST/api/v1/files/upload永続的なファイルライブラリにファイルをアップロード
POST/api/v1/files/save-resultツール処理の結果を新しいファイルバージョンとして保存
GET/api/v1/files保存済みファイルを一覧表示(ページネーション、検索付き)
GET/api/v1/files/:idファイルメタデータ + バージョンチェーンを取得
GET/api/v1/files/:id/downloadファイルをダウンロード
GET/api/v1/files/:id/thumbnail300px の JPEG サムネイルを取得
DELETE/api/v1/filesファイルとそのバージョンチェーンを一括削除(ボディ: { ids: [...] }
POST/api/v1/fetch-urlsURL ベースのインポートのためにリモート URL をワークスペースに取得
POST/api/v1/previewブラウザ互換の WebP プレビューを生成(HEIC/HEIF/RAW 形式向け)
GET/api/v1/files/:id/preview保存済みの PDF、Office ドキュメント、動画、音声ファイルについて、キャッシュされたまたは生成されたブラウザ互換プレビューをストリーミング
POST/api/v1/preview/generateアップロードされたメディアファイルを先に保存せずに、オンデマンドで MP4 または MP3 プレビューを生成
GET/api/v1/download/:jobId/:filenameワークスペースから処理済みファイルをダウンロード

ツールの結果をライブラリに自動保存するには、既存のライブラリファイルを参照する fileId をマルチパートフォームフィールドとして含めます。処理結果は新しいバージョンとして保存されます。

API キー管理

メソッドパスアクセス説明
POST/api/v1/api-keysAuth新しいキーを生成 - 一度だけ表示
GET/api/v1/api-keysAuthキーを一覧表示(name, id, lastUsedAt - 生のキーは含まない)
DELETE/api/v1/api-keys/:idAuthキーを削除

チーム

メソッドパスアクセス説明
GET/api/v1/teamsAdmin(teams:manageチームを一覧表示
POST/api/v1/teamsAdmin(teams:manageチームを作成
PUT/api/v1/teams/:idAdmin(teams:manageチームを名前変更
DELETE/api/v1/teams/:idAdmin(teams:manageチームを削除(デフォルトチームやメンバーがいるチームは削除不可)

設定

ランタイムのキー・バリュー設定(認証済みユーザーは誰でも読み取り可能、書き込みは管理者のみ)。

メソッドパス説明
GET/api/v1/settingsすべての設定を取得
PUT/api/v1/settings設定を一括更新(キー・バリューのペアを含む JSON ボディ)
GET/api/v1/settings/:keyキーで特定の設定を取得

既知のキー: disabledTools(ツール ID の JSON 配列), enableExperimentalTools(bool 文字列), loginAttemptLimit(数値)。

環境設定

ユーザーごとの環境設定は、インスタンス設定とは別です。認証済みユーザーは誰でも自分の環境設定マップを読み取り、更新できます。

メソッドパス説明
GET/api/v1/preferences現在のユーザーの環境設定を { "preferences": { ... } } として取得
PUT/api/v1/preferences現在のユーザーの 1 つ以上の環境設定キーをアップサート

ロール

細分化されたパーミッションを持つカスタムロール管理。

メソッドパスアクセス説明
GET/api/v1/rolesAdmin(audit:readユーザー数付きですべてのロールを一覧表示
POST/api/v1/rolesAdmin(security:manageカスタムロールを作成(name, description, permissions
PUT/api/v1/roles/:idAdmin(security:manageカスタムロールを更新(組み込みロールは変更不可)
DELETE/api/v1/roles/:idAdmin(security:manageカスタムロールを削除(組み込みロールは削除不可。影響を受けるユーザーは user ロールに戻る)

利用可能なパーミッション(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

監査ログ

セキュリティ関連のアクションを確認するための管理者専用エンドポイント。

メソッドパスアクセス説明
GET/api/v1/audit-logAdmin(audit:readオプションのフィルタ付きのページネーションされた監査ログ

クエリパラメータ:

パラメータ説明
pageページ番号(デフォルト: 1)
limitページあたりのエントリ数(デフォルト: 50、最大: 100)
actionアクションタイプでフィルタ(例 ROLE_CREATED, ROLE_DELETED
ipソース IP アドレスでフィルタ
fromこの ISO 8601 日付より後のエントリでフィルタ
toこの ISO 8601 日付より前のエントリでフィルタ

アナリティクス

メソッドパスアクセス説明
GET/api/v1/config/analyticsPublic有効なアナリティクス設定(PostHog キー、Sentry DSN、サンプルレート)を取得。アナリティクスがオフの場合(コンパイル時のベイクまたはインスタンスの analyticsEnabled 設定のいずれか)、キー、DSN、インスタンス ID は空白になります。
POST/api/v1/feedbackAuth明示的なユーザーフィードバックを、設定された PostHog プロジェクトに feedback_submitted として送信。このルートはアナリティクスゲートを尊重し、送信をレート制限し、contactOk が true でない限り連絡先フィールドを取り除き、ファイルの内容、ファイル名、アップロードパス、生のプライベートエラーテキストを一切受け付けません。アナリティクスが無効な場合、{ "ok": true, "accepted": false } を返します。
PUT/api/v1/settingsAdmin(settings:writeインスタンス全体のオプトアウトを設定。全員のアナリティクスをオフにするには JSON ボディ { "analyticsEnabled": "false" } を、再びオンにするには "true" を送信します。

機能 / AI バンドル

AI 機能バンドル(Docker 環境での AI モデルパッケージのインストール/アンインストール)を管理します。カスタム自動化からツールを有効化する場合は、ツールレベルのインストールエンドポイントを推奨します。一部の AI ツールは複数の共有バンドルを必要とし、このエンドポイントはインストール済みのバンドルをスキップして、不足しているものだけをキューに入れます。

メソッドパスアクセス説明
GET/api/v1/featuresAuthすべての機能バンドルとそのインストール状況を一覧表示
POST/api/v1/admin/features/:bundleId/installAdmin(features:manage機能バンドルをインストール(非同期、進捗トラッキング用の jobId を返す)
POST/api/v1/admin/tools/:toolId/features/installAdmin(features:manageツールが必要とするすべてのバンドルをインストール。バンドルごとの queued/skipped ステータスを返す
POST/api/v1/admin/features/:bundleId/uninstallAdmin(features:manage機能バンドルをアンインストールし、モデルファイルをクリーンアップ
GET/api/v1/admin/features/disk-usageAdmin(features:manageAI モデルの合計ディスク使用量を取得
POST/api/v1/admin/features/importAdmin(features:manageオフラインの AI バンドルアーカイブをインポート

管理者操作

オブザーバビリティ、サポート、使用状況レポート、バックアップステータスのための運用エンドポイント。

メソッドパスアクセス説明
GET/api/v1/admin/log-levelAdmin(settings:write現在のランタイムログレベルを読み取る
POST/api/v1/admin/log-levelAdmin(settings:writeランタイムログレベルを変更(fatal, error, warn, info, debug, trace, silent のいずれか)
GET/api/v1/metricsAdmin(system:healthテキスト形式の Prometheus メトリクス
GET/api/v1/admin/support-bundleAdmin(system:health秘匿化された診断サポートバンドル ZIP をダウンロード
GET/api/v1/admin/usageAdmin(audit:read使用状況ダッシュボードデータ(オプションの days クエリパラメータ付き)
GET/api/v1/admin/backup-statusAdmin(system:health最新のバックアップメタデータと鮮度ステータスを読み取る
POST/api/v1/admin/backup-statusAdmin(system:health完了したバックアップを記録(type, オプションの sizeBytes, オプションの notes

エンタープライズ API

これらのルートは、関連するエンタープライズ機能によってライセンスゲートされています。それでも、記載された SnapOtter のパーミッションを必要とします。

メソッドパスアクセス説明
GET/api/v1/enterprise/audit/exportAdmin(audit:read監査エントリをフィルタ付きで JSON または CSV としてエクスポート
GET/api/v1/enterprise/config/exportAdmin(system:health秘匿化されたインスタンス設定、カスタムロール、チームをエクスポート
POST/api/v1/enterprise/config/importAdmin(system:health設定をインポート(オプションのドライラン付き)
GET/api/v1/enterprise/ip-allowlistAdmin(security:manage設定された CIDR 許可リストを読み取る
PUT/api/v1/enterprise/ip-allowlistAdmin(security:manage自己ロックアウト防止付きで CIDR 許可リストを更新
GET/api/v1/enterprise/legal-holdAdmin(compliance:manageユーザーおよびチームのリーガルホールドを一覧表示
PUT/api/v1/enterprise/legal-holdAdmin(compliance:manageユーザーまたはチームにリーガルホールドを適用または解除
POST/api/v1/enterprise/scim/tokenAdmin(users:manageSCIM ベアラートークンを生成(一度だけ返される)
DELETE/api/v1/enterprise/scim/tokenAdmin(users:manage現在の SCIM ベアラートークンを失効
GET/api/v1/enterprise/siem/configAdmin(webhooks:manageSIEM 転送設定を読み取る
PUT/api/v1/enterprise/siem/configAdmin(webhooks:manageSIEM 転送設定を更新
GET/api/v1/enterprise/webhooksAdmin(webhooks:manageWebhook の宛先を一覧表示
POST/api/v1/enterprise/webhooksAdmin(webhooks:manageWebhook の宛先を作成
PUT/api/v1/enterprise/webhooks/:indexAdmin(webhooks:manageWebhook の宛先を更新
DELETE/api/v1/enterprise/webhooks/:indexAdmin(webhooks:manageWebhook の宛先を削除
POST/api/v1/enterprise/webhooks/:index/testAdmin(webhooks:manageテスト用の Webhook ペイロードを送信
POST/api/v1/enterprise/users/:id/exportAdmin(compliance:manageGDPR ユーザーエクスポートジョブを開始
GET/api/v1/enterprise/users/:id/export/:jobIdAdmin(compliance:manageGDPR エクスポートのステータスとダウンロード URL を読み取る
DELETE/api/v1/enterprise/users/:id/purgeAdmin(compliance:manage確認後にユーザーのデータを完全に消去
DELETE/api/v1/enterprise/teams/:id/purgeAdmin(compliance:manage確認後にチームのデータを完全に消去
GET/api/v1/admin/versionAdmin(system:healthアプリ、ビルド、Node、スキーマのバージョンメタデータを読み取る
GET/api/v1/admin/migrations/pendingAdmin(system:healthパッケージされたマイグレーションと適用済みマイグレーションを比較
GET/api/v1/admin/upgrade-checkAdmin(system:healthアップグレードのレディネスチェックを実行

SCIM 2.0

SCIM のディスカバリエンドポイントは公開されています。ユーザーおよびグループのエンドポイントには、上で生成した SCIM ベアラートークンが必要です。

メソッドパスアクセス説明
GET/api/v1/scim/v2/ServiceProviderConfigPublicSCIM サーバーの機能
GET/api/v1/scim/v2/SchemasPublicSCIM スキーマのディスカバリ
GET/api/v1/scim/v2/ResourceTypesPublicSCIM リソースタイプのディスカバリ
GET/api/v1/scim/v2/UsersSCIM tokenユーザーを一覧表示(オプションの SCIM フィルタ付き)
POST/api/v1/scim/v2/UsersSCIM tokenユーザーを作成
GET/api/v1/scim/v2/Users/:idSCIM tokenユーザーを取得
PUT/api/v1/scim/v2/Users/:idSCIM tokenユーザーを置換
DELETE/api/v1/scim/v2/Users/:idSCIM tokenユーザーをソフト無効化
GET/api/v1/scim/v2/GroupsSCIM tokenチームを SCIM グループとして一覧表示
POST/api/v1/scim/v2/GroupsSCIM tokenチームを作成
GET/api/v1/scim/v2/Groups/:idSCIM tokenチームを取得
PUT/api/v1/scim/v2/Groups/:idSCIM tokenチームとグループメンバーシップを置換
DELETE/api/v1/scim/v2/Groups/:idSCIM tokenチームを削除

ミームテンプレート

ミームジェネレーターツールをサポートする API。

メソッドパスアクセス説明
GET/api/v1/meme-templatesAuthテキストボックスの位置を含むすべての利用可能なミームテンプレートを一覧表示
GET/api/v1/meme-templates/full/:filenameAuthフルサイズのテンプレート画像を配信
GET/api/v1/meme-templates/thumbs/:filenameAuthテンプレートのサムネイルを配信
GET/api/v1/meme-templates/fonts/:filenameAuthミームテキストのレンダリングに使用されるフォントファイルを配信

エラーレスポンス

すべてのエラーは JSON を返します:

json
{
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE"
}
ステータス意味
400無効なリクエスト / 検証失敗
401未認証
403パーミッション不足
404リソースが見つからない
413ファイルが大きすぎる(MAX_UPLOAD_SIZE_MB を参照)
422検証後に処理が失敗
429レート制限(RATE_LIMIT_PER_MIN を参照)
501必要な AI 機能バンドルがインストールされていない(FEATURE_NOT_INSTALLED
500内部サーバーエラー