docs: organize tool pages by modality under /tools/<modality>/

Move all 157 tool pages into image/video/audio/pdf/data subfolders so URLs read /tools/<modality>/<id> (e.g. /tools/image/crop). Nest the image sub-categories under an Image group in the sidebar so the nav reads by modality. Add public/_redirects (301, clean + .html forms) mapping every old flat /tools/<id> URL to its new path so inbound links keep working. Rewrite all internal /tools links. Verified with a clean docs build (no dead links).
This commit is contained in:
SnapOtter
2026-06-18 14:12:28 +08:00
parent 03c1a5e36f
commit d24e244af4
162 changed files with 874 additions and 554 deletions
+164 -158
View File
@@ -90,7 +90,7 @@ export default defineConfig({
nav: [ nav: [
{ text: "Home", link: "/" }, { text: "Home", link: "/" },
{ text: "Guide", link: "/guide/getting-started" }, { text: "Guide", link: "/guide/getting-started" },
{ text: "Tools", link: "/tools/resize" }, { text: "Tools", link: "/tools/image/resize" },
{ text: "API Reference", link: "/api/rest" }, { text: "API Reference", link: "/api/rest" },
{ text: "Changelog", link: "/changelog" }, { text: "Changelog", link: "/changelog" },
{ {
@@ -121,221 +121,227 @@ export default defineConfig({
{ {
text: "Tools", text: "Tools",
items: [ items: [
{
text: "Image",
collapsed: false,
items: [
{ {
text: "Essentials", text: "Essentials",
items: [ items: [
{ text: "Resize", link: "/tools/resize" }, { text: "Resize", link: "/tools/image/resize" },
{ text: "Crop", link: "/tools/crop" }, { text: "Crop", link: "/tools/image/crop" },
{ text: "Rotate & Flip", link: "/tools/rotate" }, { text: "Rotate & Flip", link: "/tools/image/rotate" },
{ text: "Convert", link: "/tools/convert" }, { text: "Convert", link: "/tools/image/convert" },
{ text: "Compress", link: "/tools/compress" }, { text: "Compress", link: "/tools/image/compress" },
], ],
}, },
{ {
text: "Optimization", text: "Optimization",
items: [ items: [
{ text: "Optimize for Web", link: "/tools/optimize-for-web" }, { text: "Optimize for Web", link: "/tools/image/optimize-for-web" },
{ text: "Remove Metadata", link: "/tools/strip-metadata" }, { text: "Remove Metadata", link: "/tools/image/strip-metadata" },
{ text: "Edit Metadata", link: "/tools/edit-metadata" }, { text: "Edit Metadata", link: "/tools/image/edit-metadata" },
{ text: "Bulk Rename", link: "/tools/bulk-rename" }, { text: "Bulk Rename", link: "/tools/image/bulk-rename" },
{ text: "Image to PDF", link: "/tools/image-to-pdf" }, { text: "Image to PDF", link: "/tools/image/image-to-pdf" },
{ text: "Favicon Generator", link: "/tools/favicon" }, { text: "Favicon Generator", link: "/tools/image/favicon" },
], ],
}, },
{ {
text: "Adjustments", text: "Adjustments",
items: [ items: [
{ text: "Adjust Colors", link: "/tools/adjust-colors" }, { text: "Adjust Colors", link: "/tools/image/adjust-colors" },
{ text: "Sharpening", link: "/tools/sharpening" }, { text: "Sharpening", link: "/tools/image/sharpening" },
{ text: "Replace & Invert Color", link: "/tools/replace-color" }, { text: "Replace & Invert Color", link: "/tools/image/replace-color" },
{ text: "Color Blindness Simulation", link: "/tools/color-blindness" }, { text: "Color Blindness Simulation", link: "/tools/image/color-blindness" },
{ text: "Duotone", link: "/tools/duotone" }, { text: "Duotone", link: "/tools/image/duotone" },
{ text: "Pixelate", link: "/tools/pixelate" }, { text: "Pixelate", link: "/tools/image/pixelate" },
{ text: "Vignette", link: "/tools/vignette" }, { text: "Vignette", link: "/tools/image/vignette" },
], ],
}, },
{ {
text: "Watermark & Overlay", text: "Watermark & Overlay",
items: [ items: [
{ text: "Text Watermark", link: "/tools/watermark-text" }, { text: "Text Watermark", link: "/tools/image/watermark-text" },
{ text: "Image Watermark", link: "/tools/watermark-image" }, { text: "Image Watermark", link: "/tools/image/watermark-image" },
{ text: "Text Overlay", link: "/tools/text-overlay" }, { text: "Text Overlay", link: "/tools/image/text-overlay" },
{ text: "Image Composition", link: "/tools/compose" }, { text: "Image Composition", link: "/tools/image/compose" },
{ text: "Meme Generator", link: "/tools/meme-generator" }, { text: "Meme Generator", link: "/tools/image/meme-generator" },
], ],
}, },
{ {
text: "Utilities", text: "Utilities",
items: [ items: [
{ text: "Image Info", link: "/tools/info" }, { text: "Image Info", link: "/tools/image/info" },
{ text: "Image Compare", link: "/tools/compare" }, { text: "Image Compare", link: "/tools/image/compare" },
{ text: "Find Duplicates", link: "/tools/find-duplicates" }, { text: "Find Duplicates", link: "/tools/image/find-duplicates" },
{ text: "Color Palette", link: "/tools/color-palette" }, { text: "Color Palette", link: "/tools/image/color-palette" },
{ text: "QR Code Generator", link: "/tools/qr-generate" }, { text: "QR Code Generator", link: "/tools/image/qr-generate" },
{ text: "HTML to Image", link: "/tools/html-to-image" }, { text: "HTML to Image", link: "/tools/image/html-to-image" },
{ text: "Barcode Reader", link: "/tools/barcode-read" }, { text: "Barcode Reader", link: "/tools/image/barcode-read" },
{ text: "Image to Base64", link: "/tools/image-to-base64" }, { text: "Image to Base64", link: "/tools/image/image-to-base64" },
{ text: "Histogram", link: "/tools/histogram" }, { text: "Histogram", link: "/tools/image/histogram" },
{ text: "LQIP Placeholder", link: "/tools/lqip-placeholder" }, { text: "LQIP Placeholder", link: "/tools/image/lqip-placeholder" },
{ text: "Barcode Generator", link: "/tools/barcode-generate" }, { text: "Barcode Generator", link: "/tools/image/barcode-generate" },
], ],
}, },
{ {
text: "Layout", text: "Layout",
items: [ items: [
{ text: "Collage / Grid", link: "/tools/collage" }, { text: "Collage / Grid", link: "/tools/image/collage" },
{ text: "Stitch / Combine", link: "/tools/stitch" }, { text: "Stitch / Combine", link: "/tools/image/stitch" },
{ text: "Image Splitting", link: "/tools/split" }, { text: "Image Splitting", link: "/tools/image/split" },
{ text: "Border & Frame", link: "/tools/border" }, { text: "Border & Frame", link: "/tools/image/border" },
{ text: "Beautify Screenshot", link: "/tools/beautify" }, { text: "Beautify Screenshot", link: "/tools/image/beautify" },
{ text: "Circle Crop", link: "/tools/circle-crop" }, { text: "Circle Crop", link: "/tools/image/circle-crop" },
{ text: "Image Pad", link: "/tools/image-pad" }, { text: "Image Pad", link: "/tools/image/image-pad" },
{ text: "Sprite Sheet", link: "/tools/sprite-sheet" }, { text: "Sprite Sheet", link: "/tools/image/sprite-sheet" },
], ],
}, },
{ {
text: "Format", text: "Format",
items: [ items: [
{ text: "SVG to Raster", link: "/tools/svg-to-raster" }, { text: "SVG to Raster", link: "/tools/image/svg-to-raster" },
{ text: "Image to SVG", link: "/tools/vectorize" }, { text: "Image to SVG", link: "/tools/image/vectorize" },
{ text: "GIF Tools", link: "/tools/gif-tools" }, { text: "GIF Tools", link: "/tools/image/gif-tools" },
{ text: "GIF/WebP Converter", link: "/tools/gif-webp" }, { text: "GIF/WebP Converter", link: "/tools/image/gif-webp" },
], ],
}, },
{ {
text: "AI Tools", text: "AI Tools",
items: [ items: [
{ text: "Remove Background", link: "/tools/remove-background" }, { text: "Remove Background", link: "/tools/image/remove-background" },
{ text: "Image Upscaling", link: "/tools/upscale" }, { text: "Image Upscaling", link: "/tools/image/upscale" },
{ text: "Object Eraser", link: "/tools/erase-object" }, { text: "Object Eraser", link: "/tools/image/erase-object" },
{ text: "OCR / Text Extraction", link: "/tools/ocr" }, { text: "OCR / Text Extraction", link: "/tools/image/ocr" },
{ text: "Face / PII Blur", link: "/tools/blur-faces" }, { text: "Face / PII Blur", link: "/tools/image/blur-faces" },
{ text: "Smart Crop", link: "/tools/smart-crop" }, { text: "Smart Crop", link: "/tools/image/smart-crop" },
{ text: "Image Enhancement", link: "/tools/image-enhancement" }, { text: "Image Enhancement", link: "/tools/image/image-enhancement" },
{ text: "Face Enhancement", link: "/tools/enhance-faces" }, { text: "Face Enhancement", link: "/tools/image/enhance-faces" },
{ text: "AI Colorization", link: "/tools/colorize" }, { text: "AI Colorization", link: "/tools/image/colorize" },
{ text: "Noise Removal", link: "/tools/noise-removal" }, { text: "Noise Removal", link: "/tools/image/noise-removal" },
{ text: "Red Eye Removal", link: "/tools/red-eye-removal" }, { text: "Red Eye Removal", link: "/tools/image/red-eye-removal" },
{ text: "Photo Restoration", link: "/tools/restore-photo" }, { text: "Photo Restoration", link: "/tools/image/restore-photo" },
{ text: "Passport Photo", link: "/tools/passport-photo" }, { text: "Passport Photo", link: "/tools/image/passport-photo" },
{ text: "Content-Aware Resize", link: "/tools/content-aware-resize" }, { text: "Content-Aware Resize", link: "/tools/image/content-aware-resize" },
{ text: "AI Canvas Expand", link: "/tools/ai-canvas-expand" }, { text: "AI Canvas Expand", link: "/tools/image/ai-canvas-expand" },
{ text: "PNG Transparency Fixer", link: "/tools/transparency-fixer" }, { text: "PNG Transparency Fixer", link: "/tools/image/transparency-fixer" },
{ text: "Background Replace", link: "/tools/background-replace" }, { text: "Background Replace", link: "/tools/image/background-replace" },
{ text: "Blur Background", link: "/tools/blur-background" }, { text: "Blur Background", link: "/tools/image/blur-background" },
],
},
], ],
}, },
{ {
text: "Video", text: "Video",
items: [ items: [
{ text: "Convert Video", link: "/tools/convert-video" }, { text: "Convert Video", link: "/tools/video/convert-video" },
{ text: "Compress Video", link: "/tools/compress-video" }, { text: "Compress Video", link: "/tools/video/compress-video" },
{ text: "Trim Video", link: "/tools/trim-video" }, { text: "Trim Video", link: "/tools/video/trim-video" },
{ text: "Mute Video", link: "/tools/mute-video" }, { text: "Mute Video", link: "/tools/video/mute-video" },
{ text: "Video to GIF", link: "/tools/video-to-gif" }, { text: "Video to GIF", link: "/tools/video/video-to-gif" },
{ text: "Resize Video", link: "/tools/resize-video" }, { text: "Resize Video", link: "/tools/video/resize-video" },
{ text: "Crop Video", link: "/tools/crop-video" }, { text: "Crop Video", link: "/tools/video/crop-video" },
{ text: "Rotate Video", link: "/tools/rotate-video" }, { text: "Rotate Video", link: "/tools/video/rotate-video" },
{ text: "Change FPS", link: "/tools/change-fps" }, { text: "Change FPS", link: "/tools/video/change-fps" },
{ text: "Video Color", link: "/tools/video-color" }, { text: "Video Color", link: "/tools/video/video-color" },
{ text: "Video Speed", link: "/tools/video-speed" }, { text: "Video Speed", link: "/tools/video/video-speed" },
{ text: "Reverse Video", link: "/tools/reverse-video" }, { text: "Reverse Video", link: "/tools/video/reverse-video" },
{ text: "Normalize Audio", link: "/tools/video-loudnorm" }, { text: "Normalize Audio", link: "/tools/video/video-loudnorm" },
{ text: "Aspect Pad", link: "/tools/aspect-pad" }, { text: "Aspect Pad", link: "/tools/video/aspect-pad" },
{ text: "Blur Pad", link: "/tools/blur-pad" }, { text: "Blur Pad", link: "/tools/video/blur-pad" },
{ text: "Watermark Video", link: "/tools/watermark-video" }, { text: "Watermark Video", link: "/tools/video/watermark-video" },
{ text: "Stabilize Video", link: "/tools/stabilize-video" }, { text: "Stabilize Video", link: "/tools/video/stabilize-video" },
{ text: "GIF to Video", link: "/tools/gif-to-video" }, { text: "GIF to Video", link: "/tools/video/gif-to-video" },
{ text: "Video to WebP", link: "/tools/video-to-webp" }, { text: "Video to WebP", link: "/tools/video/video-to-webp" },
{ text: "Video to Frames", link: "/tools/video-to-frames" }, { text: "Video to Frames", link: "/tools/video/video-to-frames" },
{ text: "Merge Videos", link: "/tools/merge-videos" }, { text: "Merge Videos", link: "/tools/video/merge-videos" },
{ text: "Replace Audio", link: "/tools/replace-audio" }, { text: "Replace Audio", link: "/tools/video/replace-audio" },
{ text: "Burn Subtitles", link: "/tools/burn-subtitles" }, { text: "Burn Subtitles", link: "/tools/video/burn-subtitles" },
{ text: "Embed Subtitles", link: "/tools/embed-subtitles" }, { text: "Embed Subtitles", link: "/tools/video/embed-subtitles" },
{ text: "Extract Subtitles", link: "/tools/extract-subtitles" }, { text: "Extract Subtitles", link: "/tools/video/extract-subtitles" },
{ text: "Images to Video", link: "/tools/images-to-video" }, { text: "Images to Video", link: "/tools/video/images-to-video" },
{ text: "Clean Video Metadata", link: "/tools/video-metadata" }, { text: "Clean Video Metadata", link: "/tools/video/video-metadata" },
{ text: "Auto Subtitles", link: "/tools/auto-subtitles" }, { text: "Auto Subtitles", link: "/tools/video/auto-subtitles" },
{ text: "Extract Audio", link: "/tools/extract-audio" }, { text: "Extract Audio", link: "/tools/video/extract-audio" },
], ],
}, },
{ {
text: "Audio", text: "Audio",
items: [ items: [
{ text: "Convert Audio", link: "/tools/convert-audio" }, { text: "Convert Audio", link: "/tools/audio/convert-audio" },
{ text: "Trim Audio", link: "/tools/trim-audio" }, { text: "Trim Audio", link: "/tools/audio/trim-audio" },
{ text: "Volume Adjust", link: "/tools/volume-adjust" }, { text: "Volume Adjust", link: "/tools/audio/volume-adjust" },
{ text: "Normalize Audio", link: "/tools/normalize-audio" }, { text: "Normalize Audio", link: "/tools/audio/normalize-audio" },
{ text: "Fade Audio", link: "/tools/fade-audio" }, { text: "Fade Audio", link: "/tools/audio/fade-audio" },
{ text: "Reverse Audio", link: "/tools/reverse-audio" }, { text: "Reverse Audio", link: "/tools/audio/reverse-audio" },
{ text: "Audio Speed", link: "/tools/audio-speed" }, { text: "Audio Speed", link: "/tools/audio/audio-speed" },
{ text: "Pitch Shift", link: "/tools/pitch-shift" }, { text: "Pitch Shift", link: "/tools/audio/pitch-shift" },
{ text: "Audio Channels", link: "/tools/audio-channels" }, { text: "Audio Channels", link: "/tools/audio/audio-channels" },
{ text: "Silence Removal", link: "/tools/silence-removal" }, { text: "Silence Removal", link: "/tools/audio/silence-removal" },
{ text: "Noise Reduction", link: "/tools/noise-reduction" }, { text: "Noise Reduction", link: "/tools/audio/noise-reduction" },
{ text: "Merge Audio", link: "/tools/merge-audio" }, { text: "Merge Audio", link: "/tools/audio/merge-audio" },
{ text: "Split Audio", link: "/tools/split-audio" }, { text: "Split Audio", link: "/tools/audio/split-audio" },
{ text: "Ringtone Maker", link: "/tools/ringtone-maker" }, { text: "Ringtone Maker", link: "/tools/audio/ringtone-maker" },
{ text: "Waveform Image", link: "/tools/waveform-image" }, { text: "Waveform Image", link: "/tools/audio/waveform-image" },
{ text: "Audio Metadata", link: "/tools/audio-metadata" }, { text: "Audio Metadata", link: "/tools/audio/audio-metadata" },
{ text: "Transcribe Audio", link: "/tools/transcribe-audio" }, { text: "Transcribe Audio", link: "/tools/audio/transcribe-audio" },
], ],
}, },
{ {
text: "PDF & Documents", text: "PDF & Documents",
items: [ items: [
{ text: "PDF to Image", link: "/tools/pdf-to-image" }, { text: "PDF to Image", link: "/tools/pdf/pdf-to-image" },
{ text: "Merge PDFs", link: "/tools/merge-pdf" }, { text: "Merge PDFs", link: "/tools/pdf/merge-pdf" },
{ text: "Split PDF", link: "/tools/split-pdf" }, { text: "Split PDF", link: "/tools/pdf/split-pdf" },
{ text: "Compress PDF", link: "/tools/compress-pdf" }, { text: "Compress PDF", link: "/tools/pdf/compress-pdf" },
{ text: "Rotate PDF", link: "/tools/rotate-pdf" }, { text: "Rotate PDF", link: "/tools/pdf/rotate-pdf" },
{ text: "Convert Document", link: "/tools/convert-document" }, { text: "Convert Document", link: "/tools/pdf/convert-document" },
{ text: "Convert Presentation", link: "/tools/convert-presentation" }, { text: "Convert Presentation", link: "/tools/pdf/convert-presentation" },
{ text: "Convert Spreadsheet", link: "/tools/convert-spreadsheet" }, { text: "Convert Spreadsheet", link: "/tools/pdf/convert-spreadsheet" },
{ text: "Excel to PDF", link: "/tools/excel-to-pdf" }, { text: "Excel to PDF", link: "/tools/pdf/excel-to-pdf" },
{ text: "Word to PDF", link: "/tools/word-to-pdf" }, { text: "Word to PDF", link: "/tools/pdf/word-to-pdf" },
{ text: "Extract Pages", link: "/tools/extract-pages" }, { text: "Extract Pages", link: "/tools/pdf/extract-pages" },
{ text: "Remove Pages", link: "/tools/remove-pages" }, { text: "Remove Pages", link: "/tools/pdf/remove-pages" },
{ text: "Organize PDF", link: "/tools/organize-pdf" }, { text: "Organize PDF", link: "/tools/pdf/organize-pdf" },
{ text: "Protect PDF", link: "/tools/protect-pdf" }, { text: "Protect PDF", link: "/tools/pdf/protect-pdf" },
{ text: "Unlock PDF", link: "/tools/unlock-pdf" }, { text: "Unlock PDF", link: "/tools/pdf/unlock-pdf" },
{ text: "Repair PDF", link: "/tools/repair-pdf" }, { text: "Repair PDF", link: "/tools/pdf/repair-pdf" },
{ text: "Web-Optimize PDF", link: "/tools/linearize-pdf" }, { text: "Web-Optimize PDF", link: "/tools/pdf/linearize-pdf" },
{ text: "Grayscale PDF", link: "/tools/grayscale-pdf" }, { text: "Grayscale PDF", link: "/tools/pdf/grayscale-pdf" },
{ text: "PDF/A Convert", link: "/tools/pdfa-convert" }, { text: "PDF/A Convert", link: "/tools/pdf/pdfa-convert" },
{ text: "Crop PDF", link: "/tools/crop-pdf" }, { text: "Crop PDF", link: "/tools/pdf/crop-pdf" },
{ text: "N-up PDF", link: "/tools/nup-pdf" }, { text: "N-up PDF", link: "/tools/pdf/nup-pdf" },
{ text: "Booklet PDF", link: "/tools/booklet-pdf" }, { text: "Booklet PDF", link: "/tools/pdf/booklet-pdf" },
{ text: "Watermark PDF", link: "/tools/watermark-pdf" }, { text: "Watermark PDF", link: "/tools/pdf/watermark-pdf" },
{ text: "PDF Page Numbers", link: "/tools/pdf-page-numbers" }, { text: "PDF Page Numbers", link: "/tools/pdf/pdf-page-numbers" },
{ text: "Flatten PDF", link: "/tools/flatten-pdf" }, { text: "Flatten PDF", link: "/tools/pdf/flatten-pdf" },
{ text: "Redact PDF", link: "/tools/redact-pdf" }, { text: "Redact PDF", link: "/tools/pdf/redact-pdf" },
{ text: "PDF to Text", link: "/tools/pdf-to-text" }, { text: "PDF to Text", link: "/tools/pdf/pdf-to-text" },
{ text: "PDF to Word", link: "/tools/pdf-to-word" }, { text: "PDF to Word", link: "/tools/pdf/pdf-to-word" },
{ text: "PDF Metadata", link: "/tools/pdf-metadata" }, { text: "PDF Metadata", link: "/tools/pdf/pdf-metadata" },
{ text: "PowerPoint to PDF", link: "/tools/powerpoint-to-pdf" }, { text: "PowerPoint to PDF", link: "/tools/pdf/powerpoint-to-pdf" },
{ text: "HTML to PDF", link: "/tools/html-to-pdf" }, { text: "HTML to PDF", link: "/tools/pdf/html-to-pdf" },
{ text: "Markdown to Word", link: "/tools/markdown-to-docx" }, { text: "Markdown to Word", link: "/tools/pdf/markdown-to-docx" },
{ text: "Markdown to HTML", link: "/tools/markdown-to-html" }, { text: "Markdown to HTML", link: "/tools/pdf/markdown-to-html" },
{ text: "Markdown to PDF", link: "/tools/markdown-to-pdf" }, { text: "Markdown to PDF", link: "/tools/pdf/markdown-to-pdf" },
{ text: "Convert EPUB", link: "/tools/epub-convert" }, { text: "Convert EPUB", link: "/tools/pdf/epub-convert" },
{ text: "Convert to EPUB", link: "/tools/to-epub" }, { text: "Convert to EPUB", link: "/tools/pdf/to-epub" },
{ text: "PDF OCR", link: "/tools/ocr-pdf" }, { text: "PDF OCR", link: "/tools/pdf/ocr-pdf" },
], ],
}, },
{ {
text: "Data", text: "Data",
items: [ items: [
{ text: "Chart Maker", link: "/tools/chart-maker" }, { text: "Chart Maker", link: "/tools/data/chart-maker" },
{ text: "CSV to Excel", link: "/tools/csv-excel" }, { text: "CSV to Excel", link: "/tools/data/csv-excel" },
{ text: "CSV to JSON", link: "/tools/csv-json" }, { text: "CSV to JSON", link: "/tools/data/csv-json" },
{ text: "JSON to XML", link: "/tools/json-xml" }, { text: "JSON to XML", link: "/tools/data/json-xml" },
{ text: "Split CSV", link: "/tools/split-csv" }, { text: "Split CSV", link: "/tools/data/split-csv" },
{ text: "Merge CSVs", link: "/tools/merge-csvs" }, { text: "Merge CSVs", link: "/tools/data/merge-csvs" },
{ text: "YAML / JSON", link: "/tools/yaml-json" }, { text: "YAML / JSON", link: "/tools/data/yaml-json" },
{ text: "XML to CSV", link: "/tools/xml-to-csv" }, { text: "XML to CSV", link: "/tools/data/xml-to-csv" },
{ text: "Create ZIP", link: "/tools/create-zip" }, { text: "Create ZIP", link: "/tools/data/create-zip" },
{ text: "Extract ZIP", link: "/tools/extract-zip" }, { text: "Extract ZIP", link: "/tools/data/extract-zip" },
], ],
}, },
], ],
+2 -2
View File
@@ -240,7 +240,7 @@ Analyzes the image and applies automatic corrections for exposure, contrast, whi
| `corrections.sharpness` | boolean | true | Apply sharpness correction | | `corrections.sharpness` | boolean | true | Apply sharpness correction |
| `corrections.denoise` | boolean | true | Apply denoising | | `corrections.denoise` | boolean | true | Apply denoising |
An additional analysis endpoint is available at `POST /api/v1/tools/image-enhancement/analyze` which returns the detected corrections without applying them. An additional analysis endpoint is available at `POST /api/v1/tools/image/image-enhancement/analyze` which returns the detected corrections without applying them.
## Content-Aware Resize (Seam Carving) ## Content-Aware Resize (Seam Carving)
@@ -279,7 +279,7 @@ Fixes "fake transparent" PNGs where the background was removed but left behind f
| `outputFormat` | `"png"` \| `"webp"` | `"png"` | Output image format | | `outputFormat` | `"png"` \| `"webp"` | `"png"` | Output image format |
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/transparency-fixer \ curl -X POST http://localhost:1349/api/v1/tools/image/transparency-fixer \
-H "Authorization: Bearer <token>" \ -H "Authorization: Bearer <token>" \
-F "file=@fake-transparent.png" \ -F "file=@fake-transparent.png" \
-F 'settings={"defringe":30,"outputFormat":"png"}' -F 'settings={"defringe":30,"outputFormat":"png"}'
+16 -16
View File
@@ -25,7 +25,7 @@ curl -X POST http://localhost:1349/api/auth/login \
# Returns: {"token":"<session-token>"} # Returns: {"token":"<session-token>"}
# Use token # Use token
curl http://localhost:1349/api/v1/tools/resize \ curl http://localhost:1349/api/v1/tools/image/resize \
-H "Authorization: Bearer <session-token>" -H "Authorization: Bearer <session-token>"
``` ```
@@ -42,7 +42,7 @@ curl -X POST http://localhost:1349/api/v1/api-keys \
# Returns: {"key":"si_<96 hex chars>","id":"...","name":"my-script"} # Returns: {"key":"si_<96 hex chars>","id":"...","name":"my-script"}
# Use the key # Use the key
curl http://localhost:1349/api/v1/tools/resize \ curl http://localhost:1349/api/v1/tools/image/resize \
-H "Authorization: Bearer si_<your-key>" -H "Authorization: Bearer si_<your-key>"
``` ```
@@ -329,7 +329,7 @@ All AI tools run on your hardware (CPU or NVIDIA GPU). No internet required.
Capture a webpage as an image. Unlike other tools, this endpoint accepts `application/json` instead of multipart form data (no file upload needed). Capture a webpage as an image. Unlike other tools, this endpoint accepts `application/json` instead of multipart form data (no file upload needed).
**Endpoint:** `POST /api/v1/tools/html-to-image` **Endpoint:** `POST /api/v1/tools/image/html-to-image`
**Content-Type:** `application/json` **Content-Type:** `application/json`
@@ -346,7 +346,7 @@ Capture a webpage as an image. Unlike other tools, this endpoint accepts `applic
**Example:** **Example:**
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/html-to-image \ curl -X POST http://localhost:1349/api/v1/tools/image/html-to-image \
-H "Authorization: Bearer $TOKEN" \ -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"url": "https://snapotter.com", "format": "png", "devicePreset": "desktop"}' -d '{"url": "https://snapotter.com", "format": "png", "devicePreset": "desktop"}'
@@ -369,24 +369,24 @@ Some tools expose additional endpoints beyond the standard `POST /api/v1/tools/<
| Method | Path | Description | | Method | Path | Description |
|--------|------|-------------| |--------|------|-------------|
| `POST` | `/api/v1/tools/remove-background/effects` | Apply background effects (color/gradient/blur/shadow) without re-running AI. Uses cached mask from initial removal. | | `POST` | `/api/v1/tools/image/remove-background/effects` | Apply background effects (color/gradient/blur/shadow) without re-running AI. Uses cached mask from initial removal. |
| `POST` | `/api/v1/tools/edit-metadata/inspect` | Read existing EXIF/IPTC/XMP metadata from an image | | `POST` | `/api/v1/tools/image/edit-metadata/inspect` | Read existing EXIF/IPTC/XMP metadata from an image |
| `POST` | `/api/v1/tools/strip-metadata/inspect` | Inspect metadata fields before stripping | | `POST` | `/api/v1/tools/image/strip-metadata/inspect` | Inspect metadata fields before stripping |
| `POST` | `/api/v1/tools/passport-photo/analyze` | Phase 1: AI face detection + background removal. Returns face landmarks and cached data. | | `POST` | `/api/v1/tools/image/passport-photo/analyze` | Phase 1: AI face detection + background removal. Returns face landmarks and cached data. |
| `POST` | `/api/v1/tools/passport-photo/generate` | Phase 2: Crop, resize, and tile using cached analysis. No AI re-run. | | `POST` | `/api/v1/tools/image/passport-photo/generate` | Phase 2: Crop, resize, and tile using cached analysis. No AI re-run. |
| `POST` | `/api/v1/tools/gif-tools/info` | Get GIF metadata (frame count, dimensions, duration) | | `POST` | `/api/v1/tools/image/gif-tools/info` | Get GIF metadata (frame count, dimensions, duration) |
| `POST` | `/api/v1/tools/pdf-to-image/info` | Get PDF metadata (page count, dimensions) | | `POST` | `/api/v1/tools/pdf/pdf-to-image/info` | Get PDF metadata (page count, dimensions) |
| `POST` | `/api/v1/tools/pdf-to-image/preview` | Generate a preview of a specific PDF page | | `POST` | `/api/v1/tools/pdf/pdf-to-image/preview` | Generate a preview of a specific PDF page |
| `POST` | `/api/v1/tools/svg-to-raster/batch` | Batch convert multiple SVGs to raster | | `POST` | `/api/v1/tools/image/svg-to-raster/batch` | Batch convert multiple SVGs to raster |
| `POST` | `/api/v1/tools/image-enhancement/analyze` | Analyze image quality and return enhancement recommendations | | `POST` | `/api/v1/tools/image/image-enhancement/analyze` | Analyze image quality and return enhancement recommendations |
| `POST` | `/api/v1/tools/optimize-for-web/preview` | Lightweight preview for live parameter tuning. Returns optimized image with size headers. | | `POST` | `/api/v1/tools/image/optimize-for-web/preview` | Lightweight preview for live parameter tuning. Returns optimized image with size headers. |
## Batch Processing ## Batch Processing
Apply any tool to multiple files at once. Returns a ZIP archive. Apply any tool to multiple files at once. Returns a ZIP archive.
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/compress/batch \ curl -X POST http://localhost:1349/api/v1/tools/image/compress/batch \
-H "Authorization: Bearer <token>" \ -H "Authorization: Bearer <token>" \
-F "files=@a.jpg" \ -F "files=@a.jpg" \
-F "files=@b.jpg" \ -F "files=@b.jpg" \
+1 -1
View File
@@ -139,7 +139,7 @@ Every file you process can be saved to your **Files** library. SnapOtter tracks
Every tool is accessible via HTTP: Every tool is accessible via HTTP:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/resize \ curl -X POST http://localhost:1349/api/v1/tools/image/resize \
-H "Authorization: Bearer si_<your-api-key>" \ -H "Authorization: Bearer si_<your-api-key>" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"width":800,"height":600,"fit":"cover"}' -F 'settings={"width":800,"height":600,"fit":"cover"}'
+314
View File
@@ -0,0 +1,314 @@
/tools/adjust-colors /tools/image/adjust-colors 301
/tools/adjust-colors.html /tools/image/adjust-colors 301
/tools/ai-canvas-expand /tools/image/ai-canvas-expand 301
/tools/ai-canvas-expand.html /tools/image/ai-canvas-expand 301
/tools/aspect-pad /tools/video/aspect-pad 301
/tools/aspect-pad.html /tools/video/aspect-pad 301
/tools/audio-channels /tools/audio/audio-channels 301
/tools/audio-channels.html /tools/audio/audio-channels 301
/tools/audio-metadata /tools/audio/audio-metadata 301
/tools/audio-metadata.html /tools/audio/audio-metadata 301
/tools/audio-speed /tools/audio/audio-speed 301
/tools/audio-speed.html /tools/audio/audio-speed 301
/tools/auto-subtitles /tools/video/auto-subtitles 301
/tools/auto-subtitles.html /tools/video/auto-subtitles 301
/tools/background-replace /tools/image/background-replace 301
/tools/background-replace.html /tools/image/background-replace 301
/tools/barcode-generate /tools/image/barcode-generate 301
/tools/barcode-generate.html /tools/image/barcode-generate 301
/tools/barcode-read /tools/image/barcode-read 301
/tools/barcode-read.html /tools/image/barcode-read 301
/tools/beautify /tools/image/beautify 301
/tools/beautify.html /tools/image/beautify 301
/tools/blur-background /tools/image/blur-background 301
/tools/blur-background.html /tools/image/blur-background 301
/tools/blur-faces /tools/image/blur-faces 301
/tools/blur-faces.html /tools/image/blur-faces 301
/tools/blur-pad /tools/video/blur-pad 301
/tools/blur-pad.html /tools/video/blur-pad 301
/tools/booklet-pdf /tools/pdf/booklet-pdf 301
/tools/booklet-pdf.html /tools/pdf/booklet-pdf 301
/tools/border /tools/image/border 301
/tools/border.html /tools/image/border 301
/tools/bulk-rename /tools/image/bulk-rename 301
/tools/bulk-rename.html /tools/image/bulk-rename 301
/tools/burn-subtitles /tools/video/burn-subtitles 301
/tools/burn-subtitles.html /tools/video/burn-subtitles 301
/tools/change-fps /tools/video/change-fps 301
/tools/change-fps.html /tools/video/change-fps 301
/tools/chart-maker /tools/data/chart-maker 301
/tools/chart-maker.html /tools/data/chart-maker 301
/tools/circle-crop /tools/image/circle-crop 301
/tools/circle-crop.html /tools/image/circle-crop 301
/tools/collage /tools/image/collage 301
/tools/collage.html /tools/image/collage 301
/tools/color-blindness /tools/image/color-blindness 301
/tools/color-blindness.html /tools/image/color-blindness 301
/tools/color-palette /tools/image/color-palette 301
/tools/color-palette.html /tools/image/color-palette 301
/tools/colorize /tools/image/colorize 301
/tools/colorize.html /tools/image/colorize 301
/tools/compare /tools/image/compare 301
/tools/compare.html /tools/image/compare 301
/tools/compose /tools/image/compose 301
/tools/compose.html /tools/image/compose 301
/tools/compress /tools/image/compress 301
/tools/compress-pdf /tools/pdf/compress-pdf 301
/tools/compress-pdf.html /tools/pdf/compress-pdf 301
/tools/compress-video /tools/video/compress-video 301
/tools/compress-video.html /tools/video/compress-video 301
/tools/compress.html /tools/image/compress 301
/tools/content-aware-resize /tools/image/content-aware-resize 301
/tools/content-aware-resize.html /tools/image/content-aware-resize 301
/tools/convert /tools/image/convert 301
/tools/convert-audio /tools/audio/convert-audio 301
/tools/convert-audio.html /tools/audio/convert-audio 301
/tools/convert-document /tools/pdf/convert-document 301
/tools/convert-document.html /tools/pdf/convert-document 301
/tools/convert-presentation /tools/pdf/convert-presentation 301
/tools/convert-presentation.html /tools/pdf/convert-presentation 301
/tools/convert-spreadsheet /tools/pdf/convert-spreadsheet 301
/tools/convert-spreadsheet.html /tools/pdf/convert-spreadsheet 301
/tools/convert-video /tools/video/convert-video 301
/tools/convert-video.html /tools/video/convert-video 301
/tools/convert.html /tools/image/convert 301
/tools/create-zip /tools/data/create-zip 301
/tools/create-zip.html /tools/data/create-zip 301
/tools/crop /tools/image/crop 301
/tools/crop-pdf /tools/pdf/crop-pdf 301
/tools/crop-pdf.html /tools/pdf/crop-pdf 301
/tools/crop-video /tools/video/crop-video 301
/tools/crop-video.html /tools/video/crop-video 301
/tools/crop.html /tools/image/crop 301
/tools/csv-excel /tools/data/csv-excel 301
/tools/csv-excel.html /tools/data/csv-excel 301
/tools/csv-json /tools/data/csv-json 301
/tools/csv-json.html /tools/data/csv-json 301
/tools/duotone /tools/image/duotone 301
/tools/duotone.html /tools/image/duotone 301
/tools/edit-metadata /tools/image/edit-metadata 301
/tools/edit-metadata.html /tools/image/edit-metadata 301
/tools/embed-subtitles /tools/video/embed-subtitles 301
/tools/embed-subtitles.html /tools/video/embed-subtitles 301
/tools/enhance-faces /tools/image/enhance-faces 301
/tools/enhance-faces.html /tools/image/enhance-faces 301
/tools/epub-convert /tools/pdf/epub-convert 301
/tools/epub-convert.html /tools/pdf/epub-convert 301
/tools/erase-object /tools/image/erase-object 301
/tools/erase-object.html /tools/image/erase-object 301
/tools/excel-to-pdf /tools/pdf/excel-to-pdf 301
/tools/excel-to-pdf.html /tools/pdf/excel-to-pdf 301
/tools/extract-audio /tools/video/extract-audio 301
/tools/extract-audio.html /tools/video/extract-audio 301
/tools/extract-pages /tools/pdf/extract-pages 301
/tools/extract-pages.html /tools/pdf/extract-pages 301
/tools/extract-subtitles /tools/video/extract-subtitles 301
/tools/extract-subtitles.html /tools/video/extract-subtitles 301
/tools/extract-zip /tools/data/extract-zip 301
/tools/extract-zip.html /tools/data/extract-zip 301
/tools/fade-audio /tools/audio/fade-audio 301
/tools/fade-audio.html /tools/audio/fade-audio 301
/tools/favicon /tools/image/favicon 301
/tools/favicon.html /tools/image/favicon 301
/tools/find-duplicates /tools/image/find-duplicates 301
/tools/find-duplicates.html /tools/image/find-duplicates 301
/tools/flatten-pdf /tools/pdf/flatten-pdf 301
/tools/flatten-pdf.html /tools/pdf/flatten-pdf 301
/tools/gif-to-video /tools/video/gif-to-video 301
/tools/gif-to-video.html /tools/video/gif-to-video 301
/tools/gif-tools /tools/image/gif-tools 301
/tools/gif-tools.html /tools/image/gif-tools 301
/tools/gif-webp /tools/image/gif-webp 301
/tools/gif-webp.html /tools/image/gif-webp 301
/tools/grayscale-pdf /tools/pdf/grayscale-pdf 301
/tools/grayscale-pdf.html /tools/pdf/grayscale-pdf 301
/tools/histogram /tools/image/histogram 301
/tools/histogram.html /tools/image/histogram 301
/tools/html-to-image /tools/image/html-to-image 301
/tools/html-to-image.html /tools/image/html-to-image 301
/tools/html-to-pdf /tools/pdf/html-to-pdf 301
/tools/html-to-pdf.html /tools/pdf/html-to-pdf 301
/tools/image-enhancement /tools/image/image-enhancement 301
/tools/image-enhancement.html /tools/image/image-enhancement 301
/tools/image-pad /tools/image/image-pad 301
/tools/image-pad.html /tools/image/image-pad 301
/tools/image-to-base64 /tools/image/image-to-base64 301
/tools/image-to-base64.html /tools/image/image-to-base64 301
/tools/image-to-pdf /tools/image/image-to-pdf 301
/tools/image-to-pdf.html /tools/image/image-to-pdf 301
/tools/images-to-video /tools/video/images-to-video 301
/tools/images-to-video.html /tools/video/images-to-video 301
/tools/info /tools/image/info 301
/tools/info.html /tools/image/info 301
/tools/json-xml /tools/data/json-xml 301
/tools/json-xml.html /tools/data/json-xml 301
/tools/linearize-pdf /tools/pdf/linearize-pdf 301
/tools/linearize-pdf.html /tools/pdf/linearize-pdf 301
/tools/lqip-placeholder /tools/image/lqip-placeholder 301
/tools/lqip-placeholder.html /tools/image/lqip-placeholder 301
/tools/markdown-to-docx /tools/pdf/markdown-to-docx 301
/tools/markdown-to-docx.html /tools/pdf/markdown-to-docx 301
/tools/markdown-to-html /tools/pdf/markdown-to-html 301
/tools/markdown-to-html.html /tools/pdf/markdown-to-html 301
/tools/markdown-to-pdf /tools/pdf/markdown-to-pdf 301
/tools/markdown-to-pdf.html /tools/pdf/markdown-to-pdf 301
/tools/meme-generator /tools/image/meme-generator 301
/tools/meme-generator.html /tools/image/meme-generator 301
/tools/merge-audio /tools/audio/merge-audio 301
/tools/merge-audio.html /tools/audio/merge-audio 301
/tools/merge-csvs /tools/data/merge-csvs 301
/tools/merge-csvs.html /tools/data/merge-csvs 301
/tools/merge-pdf /tools/pdf/merge-pdf 301
/tools/merge-pdf.html /tools/pdf/merge-pdf 301
/tools/merge-videos /tools/video/merge-videos 301
/tools/merge-videos.html /tools/video/merge-videos 301
/tools/mute-video /tools/video/mute-video 301
/tools/mute-video.html /tools/video/mute-video 301
/tools/noise-reduction /tools/audio/noise-reduction 301
/tools/noise-reduction.html /tools/audio/noise-reduction 301
/tools/noise-removal /tools/image/noise-removal 301
/tools/noise-removal.html /tools/image/noise-removal 301
/tools/normalize-audio /tools/audio/normalize-audio 301
/tools/normalize-audio.html /tools/audio/normalize-audio 301
/tools/nup-pdf /tools/pdf/nup-pdf 301
/tools/nup-pdf.html /tools/pdf/nup-pdf 301
/tools/ocr /tools/image/ocr 301
/tools/ocr-pdf /tools/pdf/ocr-pdf 301
/tools/ocr-pdf.html /tools/pdf/ocr-pdf 301
/tools/ocr.html /tools/image/ocr 301
/tools/optimize-for-web /tools/image/optimize-for-web 301
/tools/optimize-for-web.html /tools/image/optimize-for-web 301
/tools/organize-pdf /tools/pdf/organize-pdf 301
/tools/organize-pdf.html /tools/pdf/organize-pdf 301
/tools/passport-photo /tools/image/passport-photo 301
/tools/passport-photo.html /tools/image/passport-photo 301
/tools/pdf-metadata /tools/pdf/pdf-metadata 301
/tools/pdf-metadata.html /tools/pdf/pdf-metadata 301
/tools/pdf-page-numbers /tools/pdf/pdf-page-numbers 301
/tools/pdf-page-numbers.html /tools/pdf/pdf-page-numbers 301
/tools/pdf-to-image /tools/pdf/pdf-to-image 301
/tools/pdf-to-image.html /tools/pdf/pdf-to-image 301
/tools/pdf-to-text /tools/pdf/pdf-to-text 301
/tools/pdf-to-text.html /tools/pdf/pdf-to-text 301
/tools/pdf-to-word /tools/pdf/pdf-to-word 301
/tools/pdf-to-word.html /tools/pdf/pdf-to-word 301
/tools/pdfa-convert /tools/pdf/pdfa-convert 301
/tools/pdfa-convert.html /tools/pdf/pdfa-convert 301
/tools/pitch-shift /tools/audio/pitch-shift 301
/tools/pitch-shift.html /tools/audio/pitch-shift 301
/tools/pixelate /tools/image/pixelate 301
/tools/pixelate.html /tools/image/pixelate 301
/tools/powerpoint-to-pdf /tools/pdf/powerpoint-to-pdf 301
/tools/powerpoint-to-pdf.html /tools/pdf/powerpoint-to-pdf 301
/tools/protect-pdf /tools/pdf/protect-pdf 301
/tools/protect-pdf.html /tools/pdf/protect-pdf 301
/tools/qr-generate /tools/image/qr-generate 301
/tools/qr-generate.html /tools/image/qr-generate 301
/tools/red-eye-removal /tools/image/red-eye-removal 301
/tools/red-eye-removal.html /tools/image/red-eye-removal 301
/tools/redact-pdf /tools/pdf/redact-pdf 301
/tools/redact-pdf.html /tools/pdf/redact-pdf 301
/tools/remove-background /tools/image/remove-background 301
/tools/remove-background.html /tools/image/remove-background 301
/tools/remove-pages /tools/pdf/remove-pages 301
/tools/remove-pages.html /tools/pdf/remove-pages 301
/tools/repair-pdf /tools/pdf/repair-pdf 301
/tools/repair-pdf.html /tools/pdf/repair-pdf 301
/tools/replace-audio /tools/video/replace-audio 301
/tools/replace-audio.html /tools/video/replace-audio 301
/tools/replace-color /tools/image/replace-color 301
/tools/replace-color.html /tools/image/replace-color 301
/tools/resize /tools/image/resize 301
/tools/resize-video /tools/video/resize-video 301
/tools/resize-video.html /tools/video/resize-video 301
/tools/resize.html /tools/image/resize 301
/tools/restore-photo /tools/image/restore-photo 301
/tools/restore-photo.html /tools/image/restore-photo 301
/tools/reverse-audio /tools/audio/reverse-audio 301
/tools/reverse-audio.html /tools/audio/reverse-audio 301
/tools/reverse-video /tools/video/reverse-video 301
/tools/reverse-video.html /tools/video/reverse-video 301
/tools/ringtone-maker /tools/audio/ringtone-maker 301
/tools/ringtone-maker.html /tools/audio/ringtone-maker 301
/tools/rotate /tools/image/rotate 301
/tools/rotate-pdf /tools/pdf/rotate-pdf 301
/tools/rotate-pdf.html /tools/pdf/rotate-pdf 301
/tools/rotate-video /tools/video/rotate-video 301
/tools/rotate-video.html /tools/video/rotate-video 301
/tools/rotate.html /tools/image/rotate 301
/tools/sharpening /tools/image/sharpening 301
/tools/sharpening.html /tools/image/sharpening 301
/tools/silence-removal /tools/audio/silence-removal 301
/tools/silence-removal.html /tools/audio/silence-removal 301
/tools/smart-crop /tools/image/smart-crop 301
/tools/smart-crop.html /tools/image/smart-crop 301
/tools/split /tools/image/split 301
/tools/split-audio /tools/audio/split-audio 301
/tools/split-audio.html /tools/audio/split-audio 301
/tools/split-csv /tools/data/split-csv 301
/tools/split-csv.html /tools/data/split-csv 301
/tools/split-pdf /tools/pdf/split-pdf 301
/tools/split-pdf.html /tools/pdf/split-pdf 301
/tools/split.html /tools/image/split 301
/tools/sprite-sheet /tools/image/sprite-sheet 301
/tools/sprite-sheet.html /tools/image/sprite-sheet 301
/tools/stabilize-video /tools/video/stabilize-video 301
/tools/stabilize-video.html /tools/video/stabilize-video 301
/tools/stitch /tools/image/stitch 301
/tools/stitch.html /tools/image/stitch 301
/tools/strip-metadata /tools/image/strip-metadata 301
/tools/strip-metadata.html /tools/image/strip-metadata 301
/tools/svg-to-raster /tools/image/svg-to-raster 301
/tools/svg-to-raster.html /tools/image/svg-to-raster 301
/tools/text-overlay /tools/image/text-overlay 301
/tools/text-overlay.html /tools/image/text-overlay 301
/tools/to-epub /tools/pdf/to-epub 301
/tools/to-epub.html /tools/pdf/to-epub 301
/tools/transcribe-audio /tools/audio/transcribe-audio 301
/tools/transcribe-audio.html /tools/audio/transcribe-audio 301
/tools/transparency-fixer /tools/image/transparency-fixer 301
/tools/transparency-fixer.html /tools/image/transparency-fixer 301
/tools/trim-audio /tools/audio/trim-audio 301
/tools/trim-audio.html /tools/audio/trim-audio 301
/tools/trim-video /tools/video/trim-video 301
/tools/trim-video.html /tools/video/trim-video 301
/tools/unlock-pdf /tools/pdf/unlock-pdf 301
/tools/unlock-pdf.html /tools/pdf/unlock-pdf 301
/tools/upscale /tools/image/upscale 301
/tools/upscale.html /tools/image/upscale 301
/tools/vectorize /tools/image/vectorize 301
/tools/vectorize.html /tools/image/vectorize 301
/tools/video-color /tools/video/video-color 301
/tools/video-color.html /tools/video/video-color 301
/tools/video-loudnorm /tools/video/video-loudnorm 301
/tools/video-loudnorm.html /tools/video/video-loudnorm 301
/tools/video-metadata /tools/video/video-metadata 301
/tools/video-metadata.html /tools/video/video-metadata 301
/tools/video-speed /tools/video/video-speed 301
/tools/video-speed.html /tools/video/video-speed 301
/tools/video-to-frames /tools/video/video-to-frames 301
/tools/video-to-frames.html /tools/video/video-to-frames 301
/tools/video-to-gif /tools/video/video-to-gif 301
/tools/video-to-gif.html /tools/video/video-to-gif 301
/tools/video-to-webp /tools/video/video-to-webp 301
/tools/video-to-webp.html /tools/video/video-to-webp 301
/tools/vignette /tools/image/vignette 301
/tools/vignette.html /tools/image/vignette 301
/tools/volume-adjust /tools/audio/volume-adjust 301
/tools/volume-adjust.html /tools/audio/volume-adjust 301
/tools/watermark-image /tools/image/watermark-image 301
/tools/watermark-image.html /tools/image/watermark-image 301
/tools/watermark-pdf /tools/pdf/watermark-pdf 301
/tools/watermark-pdf.html /tools/pdf/watermark-pdf 301
/tools/watermark-text /tools/image/watermark-text 301
/tools/watermark-text.html /tools/image/watermark-text 301
/tools/watermark-video /tools/video/watermark-video 301
/tools/watermark-video.html /tools/video/watermark-video 301
/tools/waveform-image /tools/audio/waveform-image 301
/tools/waveform-image.html /tools/audio/waveform-image 301
/tools/word-to-pdf /tools/pdf/word-to-pdf 301
/tools/word-to-pdf.html /tools/pdf/word-to-pdf 301
/tools/xml-to-csv /tools/data/xml-to-csv 301
/tools/xml-to-csv.html /tools/data/xml-to-csv 301
/tools/yaml-json /tools/data/yaml-json 301
/tools/yaml-json.html /tools/data/yaml-json 301
@@ -8,7 +8,7 @@ Convert audio between mono and stereo layouts, or swap the left and right channe
## API Endpoint ## API Endpoint
`POST /api/v1/tools/audio-channels` `POST /api/v1/tools/audio/audio-channels`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/audio-channels \ curl -X POST http://localhost:1349/api/v1/tools/audio/audio-channels \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"mode": "stereo-to-mono"}' -F 'settings={"mode": "stereo-to-mono"}'
@@ -8,7 +8,7 @@ View, edit, or strip audio metadata tags such as title, artist, and album (ID3 a
## API Endpoint ## API Endpoint
`POST /api/v1/tools/audio-metadata` `POST /api/v1/tools/audio/audio-metadata`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -26,7 +26,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
Edit metadata tags: Edit metadata tags:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/audio-metadata \ curl -X POST http://localhost:1349/api/v1/tools/audio/audio-metadata \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"title": "My Song", "artist": "Artist Name", "album": "Album Name"}' -F 'settings={"title": "My Song", "artist": "Artist Name", "album": "Album Name"}'
@@ -35,7 +35,7 @@ curl -X POST http://localhost:1349/api/v1/tools/audio-metadata \
Strip all metadata: Strip all metadata:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/audio-metadata \ curl -X POST http://localhost:1349/api/v1/tools/audio/audio-metadata \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"strip": true}' -F 'settings={"strip": true}'
@@ -8,7 +8,7 @@ Speed up or slow down audio playback by applying a speed multiplier.
## API Endpoint ## API Endpoint
`POST /api/v1/tools/audio-speed` `POST /api/v1/tools/audio/audio-speed`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/audio-speed \ curl -X POST http://localhost:1349/api/v1/tools/audio/audio-speed \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"factor": 2}' -F 'settings={"factor": 2}'
@@ -8,7 +8,7 @@ Convert audio files between common formats including MP3, WAV, OGG, FLAC, and M4
## API Endpoint ## API Endpoint
`POST /api/v1/tools/convert-audio` `POST /api/v1/tools/audio/convert-audio`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/convert-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/convert-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"format": "flac", "bitrateKbps": 256}' -F 'settings={"format": "flac", "bitrateKbps": 256}'
@@ -8,7 +8,7 @@ Add fade-in and fade-out effects to the beginning and end of an audio file.
## API Endpoint ## API Endpoint
`POST /api/v1/tools/fade-audio` `POST /api/v1/tools/audio/fade-audio`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/fade-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/fade-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"fadeInS": 2, "fadeOutS": 3}' -F 'settings={"fadeInS": 2, "fadeOutS": 3}'
@@ -8,7 +8,7 @@ Combine two or more audio files into a single sequential track, concatenated in
## API Endpoint ## API Endpoint
`POST /api/v1/tools/merge-audio` `POST /api/v1/tools/audio/merge-audio`
Accepts multipart form data with multiple audio files and a JSON `settings` field. Accepts multipart form data with multiple audio files and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with multiple audio files and a JSON `settings` fiel
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/merge-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/merge-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@intro.mp3" \ -F "file=@intro.mp3" \
-F "file=@main.mp3" \ -F "file=@main.mp3" \
@@ -8,7 +8,7 @@ Reduce background noise in an audio file using FFT-based denoising with selectab
## API Endpoint ## API Endpoint
`POST /api/v1/tools/noise-reduction` `POST /api/v1/tools/audio/noise-reduction`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/noise-reduction \ curl -X POST http://localhost:1349/api/v1/tools/audio/noise-reduction \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"strength": "strong"}' -F 'settings={"strength": "strong"}'
@@ -8,7 +8,7 @@ Even out audio loudness to broadcast standard levels using EBU R128 normalizatio
## API Endpoint ## API Endpoint
`POST /api/v1/tools/normalize-audio` `POST /api/v1/tools/audio/normalize-audio`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -19,7 +19,7 @@ This tool has no configurable parameters. It applies EBU R128 loudness normaliza
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/normalize-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/normalize-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" -F "file=@audio.mp3"
``` ```
@@ -8,7 +8,7 @@ Raise or lower the pitch of an audio file by a number of semitones without chang
## API Endpoint ## API Endpoint
`POST /api/v1/tools/pitch-shift` `POST /api/v1/tools/audio/pitch-shift`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/pitch-shift \ curl -X POST http://localhost:1349/api/v1/tools/audio/pitch-shift \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"semitones": -5}' -F 'settings={"semitones": -5}'
@@ -8,7 +8,7 @@ Reverse an audio file so it plays backwards.
## API Endpoint ## API Endpoint
`POST /api/v1/tools/reverse-audio` `POST /api/v1/tools/audio/reverse-audio`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -19,7 +19,7 @@ This tool has no configurable parameters. The entire audio file is reversed.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/reverse-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/reverse-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" -F "file=@audio.mp3"
``` ```
@@ -8,7 +8,7 @@ Create a ringtone clip (.m4r) from any audio file by selecting a start time and
## API Endpoint ## API Endpoint
`POST /api/v1/tools/ringtone-maker` `POST /api/v1/tools/audio/ringtone-maker`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/ringtone-maker \ curl -X POST http://localhost:1349/api/v1/tools/audio/ringtone-maker \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"startS": 15, "durationS": 20}' -F 'settings={"startS": 15, "durationS": 20}'
@@ -8,7 +8,7 @@ Detect and remove silent sections from an audio file based on a configurable thr
## API Endpoint ## API Endpoint
`POST /api/v1/tools/silence-removal` `POST /api/v1/tools/audio/silence-removal`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/silence-removal \ curl -X POST http://localhost:1349/api/v1/tools/audio/silence-removal \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"thresholdDb": -45, "minSilenceS": 1}' -F 'settings={"thresholdDb": -45, "minSilenceS": 1}'
@@ -8,7 +8,7 @@ Split an audio file into segments by fixed time intervals, equal parts, or autom
## API Endpoint ## API Endpoint
`POST /api/v1/tools/split-audio` `POST /api/v1/tools/audio/split-audio`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -27,7 +27,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
Split into 30-second segments: Split into 30-second segments:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/split-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/split-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"mode": "time", "segmentS": 30}' -F 'settings={"mode": "time", "segmentS": 30}'
@@ -36,7 +36,7 @@ curl -X POST http://localhost:1349/api/v1/tools/split-audio \
Split by silence detection: Split by silence detection:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/split-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/split-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"mode": "silence", "thresholdDb": -35, "minSilenceS": 0.5}' -F 'settings={"mode": "silence", "thresholdDb": -35, "minSilenceS": 0.5}'
@@ -8,7 +8,7 @@ Convert speech to text using AI-powered transcription (faster-whisper). Supports
## API Endpoint ## API Endpoint
`POST /api/v1/tools/transcribe-audio` `POST /api/v1/tools/audio/transcribe-audio`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/transcribe-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/transcribe-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"language": "en", "outputFormat": "srt"}' -F 'settings={"language": "en", "outputFormat": "srt"}'
@@ -8,7 +8,7 @@ Cut a section out of an audio file by specifying start and end times in seconds.
## API Endpoint ## API Endpoint
`POST /api/v1/tools/trim-audio` `POST /api/v1/tools/audio/trim-audio`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/trim-audio \ curl -X POST http://localhost:1349/api/v1/tools/audio/trim-audio \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"startS": 10, "endS": 45}' -F 'settings={"startS": 10, "endS": 45}'
@@ -8,7 +8,7 @@ Increase or decrease the volume of an audio file by applying a fixed gain in dec
## API Endpoint ## API Endpoint
`POST /api/v1/tools/volume-adjust` `POST /api/v1/tools/audio/volume-adjust`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/volume-adjust \ curl -X POST http://localhost:1349/api/v1/tools/audio/volume-adjust \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"gainDb": 6}' -F 'settings={"gainDb": 6}'
@@ -8,7 +8,7 @@ Generate a waveform visualization as a PNG image from an audio file, with config
## API Endpoint ## API Endpoint
`POST /api/v1/tools/waveform-image` `POST /api/v1/tools/audio/waveform-image`
Accepts multipart form data with an audio file and a JSON `settings` field. Accepts multipart form data with an audio file and a JSON `settings` field.
@@ -23,7 +23,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/waveform-image \ curl -X POST http://localhost:1349/api/v1/tools/audio/waveform-image \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@audio.mp3" \ -F "file=@audio.mp3" \
-F 'settings={"width": 1920, "height": 400, "color": "#e07832"}' -F 'settings={"width": 1920, "height": 400, "color": "#e07832"}'
@@ -8,7 +8,7 @@ Create bar, line, or pie charts from CSV or JSON data. Returns a PNG image of th
## API Endpoint ## API Endpoint
`POST /api/v1/tools/chart-maker` `POST /api/v1/tools/data/chart-maker`
Accepts multipart form data with a CSV or JSON file and a JSON `settings` field. Accepts multipart form data with a CSV or JSON file and a JSON `settings` field.
@@ -24,7 +24,7 @@ Accepts multipart form data with a CSV or JSON file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/chart-maker \ curl -X POST http://localhost:1349/api/v1/tools/data/chart-maker \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@sales.csv" \ -F "file=@sales.csv" \
-F 'settings={"kind": "line", "title": "Monthly Sales", "width": 960, "height": 540}' -F 'settings={"kind": "line", "title": "Monthly Sales", "width": 960, "height": 540}'
@@ -8,7 +8,7 @@ Bundle multiple files of any type into a single ZIP archive. Duplicate filenames
## API Endpoint ## API Endpoint
`POST /api/v1/tools/create-zip` `POST /api/v1/tools/data/create-zip`
Accepts multipart form data with two or more files. No settings field is required. Accepts multipart form data with two or more files. No settings field is required.
@@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload 2--50 files of any type to bund
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/create-zip \ curl -X POST http://localhost:1349/api/v1/tools/data/create-zip \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@report.pdf" \ -F "file=@report.pdf" \
-F "file=@data.csv" \ -F "file=@data.csv" \
@@ -8,7 +8,7 @@ Convert between CSV and Excel (XLSX) formats in both directions. Upload a CSV or
## API Endpoint ## API Endpoint
`POST /api/v1/tools/csv-excel` `POST /api/v1/tools/data/csv-excel`
Accepts multipart form data with a CSV, TSV, or XLSX file and a JSON `settings` field. Accepts multipart form data with a CSV, TSV, or XLSX file and a JSON `settings` field.
@@ -23,7 +23,7 @@ Accepts multipart form data with a CSV, TSV, or XLSX file and a JSON `settings`
CSV to Excel: CSV to Excel:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/csv-excel \ curl -X POST http://localhost:1349/api/v1/tools/data/csv-excel \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@data.csv" \ -F "file=@data.csv" \
-F 'settings={"sheet": 1}' -F 'settings={"sheet": 1}'
@@ -32,7 +32,7 @@ curl -X POST http://localhost:1349/api/v1/tools/csv-excel \
Excel to CSV: Excel to CSV:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/csv-excel \ curl -X POST http://localhost:1349/api/v1/tools/data/csv-excel \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@report.xlsx" \ -F "file=@report.xlsx" \
-F 'settings={"sheet": 2}' -F 'settings={"sheet": 2}'
@@ -8,7 +8,7 @@ Convert between CSV and JSON formats in both directions. Upload a CSV or TSV fil
## API Endpoint ## API Endpoint
`POST /api/v1/tools/csv-json` `POST /api/v1/tools/data/csv-json`
Accepts multipart form data with a CSV, TSV, or JSON file and a JSON `settings` field. Accepts multipart form data with a CSV, TSV, or JSON file and a JSON `settings` field.
@@ -23,7 +23,7 @@ Accepts multipart form data with a CSV, TSV, or JSON file and a JSON `settings`
CSV to JSON: CSV to JSON:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/csv-json \ curl -X POST http://localhost:1349/api/v1/tools/data/csv-json \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@users.csv" \ -F "file=@users.csv" \
-F 'settings={"pretty": true}' -F 'settings={"pretty": true}'
@@ -32,7 +32,7 @@ curl -X POST http://localhost:1349/api/v1/tools/csv-json \
JSON to CSV: JSON to CSV:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/csv-json \ curl -X POST http://localhost:1349/api/v1/tools/data/csv-json \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@users.json" \ -F "file=@users.json" \
-F 'settings={}' -F 'settings={}'
@@ -8,7 +8,7 @@ Safely extract files from a ZIP archive. Single-file archives return the contain
## API Endpoint ## API Endpoint
`POST /api/v1/tools/extract-zip` `POST /api/v1/tools/data/extract-zip`
Accepts multipart form data with a ZIP file. No settings field is required. Accepts multipart form data with a ZIP file. No settings field is required.
@@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a `.zip` file to extract.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/extract-zip \ curl -X POST http://localhost:1349/api/v1/tools/data/extract-zip \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@archive.zip" -F "file=@archive.zip"
``` ```
@@ -8,7 +8,7 @@ Convert between JSON and XML formats in both directions. Upload a JSON file to g
## API Endpoint ## API Endpoint
`POST /api/v1/tools/json-xml` `POST /api/v1/tools/data/json-xml`
Accepts multipart form data with a JSON or XML file and a JSON `settings` field. Accepts multipart form data with a JSON or XML file and a JSON `settings` field.
@@ -23,7 +23,7 @@ Accepts multipart form data with a JSON or XML file and a JSON `settings` field.
JSON to XML: JSON to XML:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/json-xml \ curl -X POST http://localhost:1349/api/v1/tools/data/json-xml \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@config.json" \ -F "file=@config.json" \
-F 'settings={"pretty": true}' -F 'settings={"pretty": true}'
@@ -32,7 +32,7 @@ curl -X POST http://localhost:1349/api/v1/tools/json-xml \
XML to JSON: XML to JSON:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/json-xml \ curl -X POST http://localhost:1349/api/v1/tools/data/json-xml \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@config.xml" \ -F "file=@config.xml" \
-F 'settings={"pretty": true}' -F 'settings={"pretty": true}'
@@ -8,7 +8,7 @@ Combine multiple CSV or TSV files with matching columns into a single merged fil
## API Endpoint ## API Endpoint
`POST /api/v1/tools/merge-csvs` `POST /api/v1/tools/data/merge-csvs`
Accepts multipart form data with two or more CSV files. No settings field is required. Accepts multipart form data with two or more CSV files. No settings field is required.
@@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload 2--20 CSV or TSV files with mat
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/merge-csvs \ curl -X POST http://localhost:1349/api/v1/tools/data/merge-csvs \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@january.csv" \ -F "file=@january.csv" \
-F "file=@february.csv" \ -F "file=@february.csv" \
@@ -8,7 +8,7 @@ Split a large CSV or TSV file into smaller files by row count. Returns a ZIP arc
## API Endpoint ## API Endpoint
`POST /api/v1/tools/split-csv` `POST /api/v1/tools/data/split-csv`
Accepts multipart form data with a CSV file and a JSON `settings` field. Accepts multipart form data with a CSV file and a JSON `settings` field.
@@ -22,7 +22,7 @@ Accepts multipart form data with a CSV file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/split-csv \ curl -X POST http://localhost:1349/api/v1/tools/data/split-csv \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@large-dataset.csv" \ -F "file=@large-dataset.csv" \
-F 'settings={"rowsPerFile": 500, "keepHeader": true}' -F 'settings={"rowsPerFile": 500, "keepHeader": true}'
@@ -8,7 +8,7 @@ Extract repeating elements from an XML file into a flat CSV table. The tool auto
## API Endpoint ## API Endpoint
`POST /api/v1/tools/xml-to-csv` `POST /api/v1/tools/data/xml-to-csv`
Accepts multipart form data with an XML file. No settings field is required. Accepts multipart form data with an XML file. No settings field is required.
@@ -19,7 +19,7 @@ This tool has no configurable parameters. The repeating element is auto-detected
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/xml-to-csv \ curl -X POST http://localhost:1349/api/v1/tools/data/xml-to-csv \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@catalog.xml" -F "file=@catalog.xml"
``` ```
@@ -40,4 +40,4 @@ curl -X POST http://localhost:1349/api/v1/tools/xml-to-csv \
- Only `.xml` files are accepted as input. - Only `.xml` files are accepted as input.
- The tool scans the XML tree for the first repeating set of sibling elements and uses those as rows. - The tool scans the XML tree for the first repeating set of sibling elements and uses those as rows.
- Each unique child element or attribute name becomes a CSV column header. - Each unique child element or attribute name becomes a CSV column header.
- This is a one-way conversion. For bidirectional JSON/XML conversion, use the [JSON to XML](/tools/json-xml) tool. - This is a one-way conversion. For bidirectional JSON/XML conversion, use the [JSON to XML](/tools/data/json-xml) tool.
@@ -8,7 +8,7 @@ Convert between YAML and JSON formats in both directions. Upload a YAML file to
## API Endpoint ## API Endpoint
`POST /api/v1/tools/yaml-json` `POST /api/v1/tools/data/yaml-json`
Accepts multipart form data with a YAML or JSON file. No settings field is required. Accepts multipart form data with a YAML or JSON file. No settings field is required.
@@ -21,7 +21,7 @@ This tool has no configurable parameters. The conversion direction is determined
YAML to JSON: YAML to JSON:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/yaml-json \ curl -X POST http://localhost:1349/api/v1/tools/data/yaml-json \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@config.yaml" -F "file=@config.yaml"
``` ```
@@ -29,7 +29,7 @@ curl -X POST http://localhost:1349/api/v1/tools/yaml-json \
JSON to YAML: JSON to YAML:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/yaml-json \ curl -X POST http://localhost:1349/api/v1/tools/data/yaml-json \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@config.json" -F "file=@config.json"
``` ```
@@ -8,7 +8,7 @@ Comprehensive color adjustment tool combining brightness, contrast, exposure, sa
## API Endpoint ## API Endpoint
`POST /api/v1/tools/adjust-colors` `POST /api/v1/tools/image/adjust-colors`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -32,7 +32,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/adjust-colors \ curl -X POST http://localhost:1349/api/v1/tools/image/adjust-colors \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"brightness": 20, "contrast": 10, "saturation": -30, "effect": "none"}' -F 'settings={"brightness": 20, "contrast": 10, "saturation": -30, "effect": "none"}'
@@ -41,7 +41,7 @@ curl -X POST http://localhost:1349/api/v1/tools/adjust-colors \
Apply a warm vintage look: Apply a warm vintage look:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/adjust-colors \ curl -X POST http://localhost:1349/api/v1/tools/image/adjust-colors \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"temperature": 40, "saturation": -15, "contrast": 10, "effect": "sepia"}' -F 'settings={"temperature": 40, "saturation": -15, "contrast": 10, "effect": "sepia"}'
@@ -4,7 +4,7 @@ Expand the canvas of an image with AI-powered fill (outpainting). Extends the im
## API Endpoint ## API Endpoint
`POST /api/v1/tools/ai-canvas-expand` `POST /api/v1/tools/image/ai-canvas-expand`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -28,7 +28,7 @@ At least one extend direction must be greater than 0.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/ai-canvas-expand \ curl -X POST http://localhost:13490/api/v1/tools/image/ai-canvas-expand \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"extendTop":200,"extendBottom":200,"extendLeft":100,"extendRight":100,"tier":"balanced"}' -F 'settings={"extendTop":200,"extendBottom":200,"extendLeft":100,"extendRight":100,"tier":"balanced"}'
``` ```
@@ -8,7 +8,7 @@ Replace the background of an image with a solid color or gradient. The AI model
## API Endpoint ## API Endpoint
`POST /api/v1/tools/background-replace` `POST /api/v1/tools/image/background-replace`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -27,7 +27,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/background-replace \ curl -X POST http://localhost:1349/api/v1/tools/image/background-replace \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"backgroundType": "color", "color": "#2563eb", "feather": 2}' -F 'settings={"backgroundType": "color", "color": "#2563eb", "feather": 2}'
@@ -8,7 +8,7 @@ Generate barcode images from text input. Supports Code 128, EAN-13, UPC-A, Code
## API Endpoint ## API Endpoint
`POST /api/v1/tools/barcode-generate` `POST /api/v1/tools/image/barcode-generate`
Accepts an `application/json` body (not multipart). The barcode is generated from the provided text, not from an uploaded file. Accepts an `application/json` body (not multipart). The barcode is generated from the provided text, not from an uploaded file.
@@ -24,7 +24,7 @@ Accepts an `application/json` body (not multipart). The barcode is generated fro
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/barcode-generate \ curl -X POST http://localhost:1349/api/v1/tools/image/barcode-generate \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"text": "5901234123457", "type": "ean13", "scale": 4}' -d '{"text": "5901234123457", "type": "ean13", "scale": 4}'
@@ -8,7 +8,7 @@ Scan uploaded images for all types of barcodes and QR codes. Returns decoded tex
## API Endpoint ## API Endpoint
`POST /api/v1/tools/barcode-read` `POST /api/v1/tools/image/barcode-read`
Accepts multipart form data with an image file and an optional JSON `settings` field. Accepts multipart form data with an image file and an optional JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with an image file and an optional JSON `settings` f
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/barcode-read \ curl -X POST http://localhost:1349/api/v1/tools/image/barcode-read \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@receipt.jpg" \ -F "file=@receipt.jpg" \
-F 'settings={"tryHarder": true}' -F 'settings={"tryHarder": true}'
@@ -4,7 +4,7 @@ Add gradient backgrounds, device frames, shadows, watermarks, and social media s
## API Endpoint ## API Endpoint
`POST /api/v1/tools/beautify` `POST /api/v1/tools/image/beautify`
## Parameters ## Parameters
@@ -33,7 +33,7 @@ Add gradient backgrounds, device frames, shadows, watermarks, and social media s
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/beautify \ curl -X POST http://localhost:13490/api/v1/tools/image/beautify \
-F "file=@screenshot.png" \ -F "file=@screenshot.png" \
-F 'settings={"backgroundType":"linear-gradient","gradientStops":[{"color":"#667eea","position":0},{"color":"#764ba2","position":100}],"gradientAngle":135,"padding":64,"borderRadius":12,"shadowPreset":"medium","frame":"macos-dark","socialPreset":"twitter"}' -F 'settings={"backgroundType":"linear-gradient","gradientStops":[{"color":"#667eea","position":0},{"color":"#764ba2","position":100}],"gradientAngle":135,"padding":64,"borderRadius":12,"shadowPreset":"medium","frame":"macos-dark","socialPreset":"twitter"}'
``` ```
@@ -41,7 +41,7 @@ curl -X POST http://localhost:13490/api/v1/tools/beautify \
### With Background Image ### With Background Image
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/beautify \ curl -X POST http://localhost:13490/api/v1/tools/image/beautify \
-F "file=@screenshot.png" \ -F "file=@screenshot.png" \
-F "backgroundImage=@bg-texture.jpg" \ -F "backgroundImage=@bg-texture.jpg" \
-F 'settings={"backgroundType":"image","padding":80,"borderRadius":16,"shadowPreset":"dramatic"}' -F 'settings={"backgroundType":"image","padding":80,"borderRadius":16,"shadowPreset":"dramatic"}'
@@ -8,7 +8,7 @@ Blur the background of an image while keeping the subject sharp. The AI model is
## API Endpoint ## API Endpoint
`POST /api/v1/tools/blur-background` `POST /api/v1/tools/image/blur-background`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -23,7 +23,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/blur-background \ curl -X POST http://localhost:1349/api/v1/tools/image/blur-background \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"intensity": 75, "feather": 3}' -F 'settings={"intensity": 75, "feather": 3}'
@@ -4,7 +4,7 @@ Auto-detect and blur faces in images using AI-powered face detection (MediaPipe)
## API Endpoint ## API Endpoint
`POST /api/v1/tools/blur-faces` `POST /api/v1/tools/image/blur-faces`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -21,7 +21,7 @@ Auto-detect and blur faces in images using AI-powered face detection (MediaPipe)
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/blur-faces \ curl -X POST http://localhost:13490/api/v1/tools/image/blur-faces \
-F "file=@group-photo.jpg" \ -F "file=@group-photo.jpg" \
-F 'settings={"blurRadius":40,"sensitivity":0.3}' -F 'settings={"blurRadius":40,"sensitivity":0.3}'
``` ```
@@ -4,7 +4,7 @@ Add borders, padding, rounded corners, and drop shadows to images. The tool appl
## API Endpoint ## API Endpoint
`POST /api/v1/tools/border` `POST /api/v1/tools/image/border`
## Parameters ## Parameters
@@ -25,7 +25,7 @@ Add borders, padding, rounded corners, and drop shadows to images. The tool appl
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/border \ curl -X POST http://localhost:13490/api/v1/tools/image/border \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"borderWidth":20,"borderColor":"#333333","cornerRadius":16,"shadow":true,"shadowBlur":25,"shadowOpacity":50}' -F 'settings={"borderWidth":20,"borderColor":"#333333","cornerRadius":16,"shadow":true,"shadowBlur":25,"shadowOpacity":50}'
``` ```
@@ -8,7 +8,7 @@ Rename multiple files using a pattern template with placeholders for index, padd
## API Endpoint ## API Endpoint
`POST /api/v1/tools/bulk-rename` `POST /api/v1/tools/image/bulk-rename`
Accepts multipart form data with multiple files and a JSON `settings` field. Accepts multipart form data with multiple files and a JSON `settings` field.
@@ -32,7 +32,7 @@ The original file extension is always preserved.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/bulk-rename \ curl -X POST http://localhost:1349/api/v1/tools/image/bulk-rename \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo1.jpg" \ -F "file=@photo1.jpg" \
-F "file=@photo2.jpg" \ -F "file=@photo2.jpg" \
@@ -45,7 +45,7 @@ This produces: `vacation-1.jpg`, `vacation-2.jpg`, `vacation-3.jpg`
Using original filename: Using original filename:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/bulk-rename \ curl -X POST http://localhost:1349/api/v1/tools/image/bulk-rename \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@IMG_001.jpg" \ -F "file=@IMG_001.jpg" \
-F "file=@IMG_002.jpg" \ -F "file=@IMG_002.jpg" \
@@ -8,7 +8,7 @@ Crop an image to a centered circle with transparent corners. Supports adjustable
## API Endpoint ## API Endpoint
`POST /api/v1/tools/circle-crop` `POST /api/v1/tools/image/circle-crop`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -27,7 +27,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/circle-crop \ curl -X POST http://localhost:1349/api/v1/tools/image/circle-crop \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"zoom": 1.2, "borderWidth": 4, "borderColor": "#333333"}' -F 'settings={"zoom": 1.2, "borderWidth": 4, "borderColor": "#333333"}'
@@ -4,7 +4,7 @@ Combine multiple images into beautiful grid collages with 25+ templates. Support
## API Endpoint ## API Endpoint
`POST /api/v1/tools/collage` `POST /api/v1/tools/image/collage`
## Parameters ## Parameters
@@ -55,7 +55,7 @@ Combine multiple images into beautiful grid collages with 25+ templates. Support
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/collage \ curl -X POST http://localhost:13490/api/v1/tools/image/collage \
-F "file=@photo1.jpg" \ -F "file=@photo1.jpg" \
-F "file=@photo2.jpg" \ -F "file=@photo2.jpg" \
-F "file=@photo3.jpg" \ -F "file=@photo3.jpg" \
@@ -8,7 +8,7 @@ Simulate color vision deficiency (CVD) to preview how images appear to people wi
## API Endpoint ## API Endpoint
`POST /api/v1/tools/color-blindness` `POST /api/v1/tools/image/color-blindness`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -34,7 +34,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/color-blindness \ curl -X POST http://localhost:1349/api/v1/tools/image/color-blindness \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@design.png" \ -F "file=@design.png" \
-F 'settings={"simulationType": "deuteranopia"}' -F 'settings={"simulationType": "deuteranopia"}'
@@ -8,7 +8,7 @@ Extract the dominant colors from an image and return them as hex color values. U
## API Endpoint ## API Endpoint
`POST /api/v1/tools/color-palette` `POST /api/v1/tools/image/color-palette`
Accepts multipart form data with an image file. No settings field is needed. Accepts multipart form data with an image file. No settings field is needed.
@@ -23,7 +23,7 @@ This tool has no configurable parameters. Simply upload the image file.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/color-palette \ curl -X POST http://localhost:1349/api/v1/tools/image/color-palette \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" -F "file=@photo.jpg"
``` ```
@@ -4,7 +4,7 @@ Convert black-and-white or grayscale photos to full color using AI (DDColor mode
## API Endpoint ## API Endpoint
`POST /api/v1/tools/colorize` `POST /api/v1/tools/image/colorize`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -21,7 +21,7 @@ Convert black-and-white or grayscale photos to full color using AI (DDColor mode
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/colorize \ curl -X POST http://localhost:13490/api/v1/tools/image/colorize \
-F "file=@old-bw-photo.jpg" \ -F "file=@old-bw-photo.jpg" \
-F 'settings={"intensity":0.9,"model":"auto"}' -F 'settings={"intensity":0.9,"model":"auto"}'
``` ```
@@ -8,7 +8,7 @@ Upload two images to compute a pixel-level difference map and a numerical simila
## API Endpoint ## API Endpoint
`POST /api/v1/tools/compare` `POST /api/v1/tools/image/compare`
Accepts multipart form data with **two** image files. No settings field is needed. Accepts multipart form data with **two** image files. No settings field is needed.
@@ -24,7 +24,7 @@ This tool has no configurable parameters. Upload exactly two image files.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/compare \ curl -X POST http://localhost:1349/api/v1/tools/image/compare \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@original.jpg" \ -F "file=@original.jpg" \
-F "file=@modified.jpg" -F "file=@modified.jpg"
@@ -8,7 +8,7 @@ Layer an overlay image on top of a base image with configurable position, opacit
## API Endpoint ## API Endpoint
`POST /api/v1/tools/compose` `POST /api/v1/tools/image/compose`
Accepts multipart form data with **two** image files and a JSON `settings` field. Accepts multipart form data with **two** image files and a JSON `settings` field.
@@ -46,7 +46,7 @@ Accepts multipart form data with **two** image files and a JSON `settings` field
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/compose \ curl -X POST http://localhost:1349/api/v1/tools/image/compose \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@background.jpg" \ -F "file=@background.jpg" \
-F "overlay=@graphic.png" \ -F "overlay=@graphic.png" \
@@ -56,7 +56,7 @@ curl -X POST http://localhost:1349/api/v1/tools/compose \
Using multiply blend mode: Using multiply blend mode:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/compose \ curl -X POST http://localhost:1349/api/v1/tools/image/compose \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F "overlay=@texture.jpg" \ -F "overlay=@texture.jpg" \
@@ -8,7 +8,7 @@ Reduce image file size by specifying a quality level or a target file size in ki
## API Endpoint ## API Endpoint
`POST /api/v1/tools/compress` `POST /api/v1/tools/image/compress`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -25,7 +25,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
Compress to quality 60: Compress to quality 60:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/compress \ curl -X POST http://localhost:1349/api/v1/tools/image/compress \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"mode": "quality", "quality": 60}' -F 'settings={"mode": "quality", "quality": 60}'
@@ -34,7 +34,7 @@ curl -X POST http://localhost:1349/api/v1/tools/compress \
Compress to target size of 200 KB: Compress to target size of 200 KB:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/compress \ curl -X POST http://localhost:1349/api/v1/tools/image/compress \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"mode": "targetSize", "targetSizeKb": 200}' -F 'settings={"mode": "targetSize", "targetSizeKb": 200}'
@@ -4,7 +4,7 @@ Seam carving resize that intelligently removes or adds pixels along paths of lea
## API Endpoint ## API Endpoint
`POST /api/v1/tools/content-aware-resize` `POST /api/v1/tools/image/content-aware-resize`
**Processing:** Synchronous (returns result directly) **Processing:** Synchronous (returns result directly)
@@ -27,7 +27,7 @@ At least one of `width`, `height`, or `square` must be specified.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/content-aware-resize \ curl -X POST http://localhost:13490/api/v1/tools/image/content-aware-resize \
-F "file=@landscape.jpg" \ -F "file=@landscape.jpg" \
-F 'settings={"width":800,"protectFaces":true}' -F 'settings={"width":800,"protectFaces":true}'
``` ```
@@ -8,7 +8,7 @@ Convert images between formats. Supports common web formats as well as specializ
## API Endpoint ## API Endpoint
`POST /api/v1/tools/convert` `POST /api/v1/tools/image/convert`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -42,7 +42,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
Convert to WebP: Convert to WebP:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/convert \ curl -X POST http://localhost:1349/api/v1/tools/image/convert \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"format": "webp", "quality": 85}' -F 'settings={"format": "webp", "quality": 85}'
@@ -51,7 +51,7 @@ curl -X POST http://localhost:1349/api/v1/tools/convert \
Convert to PNG (lossless): Convert to PNG (lossless):
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/convert \ curl -X POST http://localhost:1349/api/v1/tools/image/convert \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"format": "png"}' -F 'settings={"format": "png"}'
@@ -8,7 +8,7 @@ Crop images by defining a rectangular region using position and size. Supports b
## API Endpoint ## API Endpoint
`POST /api/v1/tools/crop` `POST /api/v1/tools/image/crop`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -25,7 +25,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/crop \ curl -X POST http://localhost:1349/api/v1/tools/image/crop \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"left": 100, "top": 50, "width": 800, "height": 600}' -F 'settings={"left": 100, "top": 50, "width": 800, "height": 600}'
@@ -34,7 +34,7 @@ curl -X POST http://localhost:1349/api/v1/tools/crop \
Crop using percentage values: Crop using percentage values:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/crop \ curl -X POST http://localhost:1349/api/v1/tools/image/crop \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"left": 10, "top": 10, "width": 80, "height": 80, "unit": "percent"}' -F 'settings={"left": 10, "top": 10, "width": 80, "height": 80, "unit": "percent"}'
@@ -8,7 +8,7 @@ Apply a two-color duotone effect to an image. The image is converted to grayscal
## API Endpoint ## API Endpoint
`POST /api/v1/tools/duotone` `POST /api/v1/tools/image/duotone`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -23,7 +23,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/duotone \ curl -X POST http://localhost:1349/api/v1/tools/image/duotone \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"shadow": "#0f172a", "highlight": "#f97316", "intensity": 80}' -F 'settings={"shadow": "#0f172a", "highlight": "#f97316", "intensity": 80}'
@@ -10,13 +10,13 @@ Edit image metadata fields including EXIF, IPTC, GPS coordinates, dates, and key
### Edit Metadata ### Edit Metadata
`POST /api/v1/tools/edit-metadata` `POST /api/v1/tools/image/edit-metadata`
Writes metadata fields to the image and returns the modified file. Writes metadata fields to the image and returns the modified file.
### Inspect Metadata ### Inspect Metadata
`POST /api/v1/tools/edit-metadata/inspect` `POST /api/v1/tools/image/edit-metadata/inspect`
Returns the full metadata from the image via ExifTool as JSON. Does not modify the image. Returns the full metadata from the image via ExifTool as JSON. Does not modify the image.
@@ -52,7 +52,7 @@ Returns the full metadata from the image via ExifTool as JSON. Does not modify t
Set author and copyright: Set author and copyright:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/edit-metadata \ curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"author": "Jane Smith", "copyright": "2024 Jane Smith"}' -F 'settings={"author": "Jane Smith", "copyright": "2024 Jane Smith"}'
@@ -61,7 +61,7 @@ curl -X POST http://localhost:1349/api/v1/tools/edit-metadata \
Set GPS coordinates: Set GPS coordinates:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/edit-metadata \ curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"gpsLatitude": 48.8566, "gpsLongitude": 2.3522, "gpsAltitude": 35}' -F 'settings={"gpsLatitude": 48.8566, "gpsLongitude": 2.3522, "gpsAltitude": 35}'
@@ -70,7 +70,7 @@ curl -X POST http://localhost:1349/api/v1/tools/edit-metadata \
Remove GPS and add keywords: Remove GPS and add keywords:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/edit-metadata \ curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"clearGps": true, "keywords": ["landscape", "sunset"], "keywordsMode": "add"}' -F 'settings={"clearGps": true, "keywords": ["landscape", "sunset"], "keywordsMode": "add"}'
@@ -79,7 +79,7 @@ curl -X POST http://localhost:1349/api/v1/tools/edit-metadata \
Inspect metadata: Inspect metadata:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/edit-metadata/inspect \ curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata/inspect \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" -F "file=@photo.jpg"
``` ```
@@ -4,7 +4,7 @@ Restore and enhance faces in images using AI models (GFPGAN/CodeFormer).
## API Endpoint ## API Endpoint
`POST /api/v1/tools/enhance-faces` `POST /api/v1/tools/image/enhance-faces`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -23,7 +23,7 @@ Restore and enhance faces in images using AI models (GFPGAN/CodeFormer).
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/enhance-faces \ curl -X POST http://localhost:13490/api/v1/tools/image/enhance-faces \
-F "file=@portrait.jpg" \ -F "file=@portrait.jpg" \
-F 'settings={"model":"codeformer","strength":0.7,"onlyCenterFace":false}' -F 'settings={"model":"codeformer","strength":0.7,"onlyCenterFace":false}'
``` ```
@@ -4,7 +4,7 @@ Remove unwanted objects from images using AI inpainting (LaMa model). Accepts an
## API Endpoint ## API Endpoint
`POST /api/v1/tools/erase-object` `POST /api/v1/tools/image/erase-object`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -22,7 +22,7 @@ Remove unwanted objects from images using AI inpainting (LaMa model). Accepts an
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/erase-object \ curl -X POST http://localhost:13490/api/v1/tools/image/erase-object \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F "mask=@mask.png" \ -F "mask=@mask.png" \
-F "format=png" \ -F "format=png" \
@@ -8,7 +8,7 @@ Generate a complete set of favicon and app icon files from a source image. Produ
## API Endpoint ## API Endpoint
`POST /api/v1/tools/favicon` `POST /api/v1/tools/image/favicon`
Accepts multipart form data with one or more image files. No settings are required. Accepts multipart form data with one or more image files. No settings are required.
@@ -37,7 +37,7 @@ For each input image, the following files are produced:
Single source image: Single source image:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/favicon \ curl -X POST http://localhost:1349/api/v1/tools/image/favicon \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@logo.png" -F "file=@logo.png"
``` ```
@@ -45,7 +45,7 @@ curl -X POST http://localhost:1349/api/v1/tools/favicon \
Multiple source images (each gets its own set in a subfolder): Multiple source images (each gets its own set in a subfolder):
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/favicon \ curl -X POST http://localhost:1349/api/v1/tools/image/favicon \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@logo-light.png" \ -F "file=@logo-light.png" \
-F "file=@logo-dark.png" -F "file=@logo-dark.png"
@@ -8,7 +8,7 @@ Upload multiple images to detect duplicates and near-duplicates using perceptual
## API Endpoint ## API Endpoint
`POST /api/v1/tools/find-duplicates` `POST /api/v1/tools/image/find-duplicates`
Accepts multipart form data with multiple image files and an optional JSON `settings` field. Accepts multipart form data with multiple image files and an optional JSON `settings` field.
@@ -25,7 +25,7 @@ Upload at least 2 image files in the multipart request (all using the `file` fie
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/find-duplicates \ curl -X POST http://localhost:1349/api/v1/tools/image/find-duplicates \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo1.jpg" \ -F "file=@photo1.jpg" \
-F "file=@photo2.jpg" \ -F "file=@photo2.jpg" \
@@ -4,7 +4,7 @@ Resize, optimize, change speed, reverse, extract frames, and rotate animated GIF
## API Endpoint ## API Endpoint
`POST /api/v1/tools/gif-tools` `POST /api/v1/tools/image/gif-tools`
## Parameters ## Parameters
@@ -60,7 +60,7 @@ Resize, optimize, change speed, reverse, extract frames, and rotate animated GIF
### Resize ### Resize
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools \ curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools \
-F "file=@animation.gif" \ -F "file=@animation.gif" \
-F 'settings={"mode":"resize","percentage":50}' -F 'settings={"mode":"resize","percentage":50}'
``` ```
@@ -68,7 +68,7 @@ curl -X POST http://localhost:13490/api/v1/tools/gif-tools \
### Optimize ### Optimize
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools \ curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools \
-F "file=@large.gif" \ -F "file=@large.gif" \
-F 'settings={"mode":"optimize","colors":128,"effort":9}' -F 'settings={"mode":"optimize","colors":128,"effort":9}'
``` ```
@@ -76,7 +76,7 @@ curl -X POST http://localhost:13490/api/v1/tools/gif-tools \
### Speed Up ### Speed Up
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools \ curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools \
-F "file=@animation.gif" \ -F "file=@animation.gif" \
-F 'settings={"mode":"speed","speedFactor":2.0}' -F 'settings={"mode":"speed","speedFactor":2.0}'
``` ```
@@ -84,7 +84,7 @@ curl -X POST http://localhost:13490/api/v1/tools/gif-tools \
### Extract Single Frame ### Extract Single Frame
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools \ curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools \
-F "file=@animation.gif" \ -F "file=@animation.gif" \
-F 'settings={"mode":"extract","extractMode":"single","frameNumber":5,"extractFormat":"png"}' -F 'settings={"mode":"extract","extractMode":"single","frameNumber":5,"extractFormat":"png"}'
``` ```
@@ -102,14 +102,14 @@ curl -X POST http://localhost:13490/api/v1/tools/gif-tools \
## Info Sub-Route ## Info Sub-Route
`POST /api/v1/tools/gif-tools/info` `POST /api/v1/tools/image/gif-tools/info`
Returns metadata about an animated GIF without processing it. Returns metadata about an animated GIF without processing it.
### Info Request ### Info Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/gif-tools/info \ curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools/info \
-F "file=@animation.gif" -F "file=@animation.gif"
``` ```
@@ -8,7 +8,7 @@ Convert animated GIF files to WebP and vice versa, preserving all frames and ani
## API Endpoint ## API Endpoint
`POST /api/v1/tools/gif-webp` `POST /api/v1/tools/image/gif-webp`
Accepts multipart form data with a GIF or WebP file and a JSON `settings` field. Accepts multipart form data with a GIF or WebP file and a JSON `settings` field.
@@ -23,7 +23,7 @@ Accepts multipart form data with a GIF or WebP file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/gif-webp \ curl -X POST http://localhost:1349/api/v1/tools/image/gif-webp \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@animation.gif" \ -F "file=@animation.gif" \
-F 'settings={"quality": 85, "resizePercent": 50}' -F 'settings={"quality": 85, "resizePercent": 50}'
@@ -8,7 +8,7 @@ Generate an RGB histogram chart from an image. Returns a PNG histogram image alo
## API Endpoint ## API Endpoint
`POST /api/v1/tools/histogram` `POST /api/v1/tools/image/histogram`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/histogram \ curl -X POST http://localhost:1349/api/v1/tools/image/histogram \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"scale": "linear"}' -F 'settings={"scale": "linear"}'
@@ -8,7 +8,7 @@ Capture a webpage URL or raw HTML content as a screenshot image. Supports device
## API Endpoint ## API Endpoint
`POST /api/v1/tools/html-to-image` `POST /api/v1/tools/image/html-to-image`
Accepts a **JSON body** (not multipart). No file upload is needed. Accepts a **JSON body** (not multipart). No file upload is needed.
@@ -41,7 +41,7 @@ Either `url` or `html` must be provided, but not both.
Capture a webpage: Capture a webpage:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/html-to-image \ curl -X POST http://localhost:1349/api/v1/tools/image/html-to-image \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"url": "https://example.com", "format": "png", "fullPage": true, "devicePreset": "desktop"}' -d '{"url": "https://example.com", "format": "png", "fullPage": true, "devicePreset": "desktop"}'
@@ -50,7 +50,7 @@ curl -X POST http://localhost:1349/api/v1/tools/html-to-image \
Render HTML content: Render HTML content:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/html-to-image \ curl -X POST http://localhost:1349/api/v1/tools/image/html-to-image \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"html": "<div style=\"padding: 20px; background: #f0f0f0;\"><h1>Hello</h1></div>", "format": "png"}' -d '{"html": "<div style=\"padding: 20px; background: #f0f0f0;\"><h1>Hello</h1></div>", "format": "png"}'
@@ -4,7 +4,7 @@ One-click auto-improve with smart analysis. Analyzes the image and applies expos
## API Endpoint ## API Endpoint
`POST /api/v1/tools/image-enhancement` `POST /api/v1/tools/image/image-enhancement`
**Processing:** Synchronous (uses `createToolRoute` factory, returns result directly) **Processing:** Synchronous (uses `createToolRoute` factory, returns result directly)
@@ -34,7 +34,7 @@ One-click auto-improve with smart analysis. Analyzes the image and applies expos
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/image-enhancement \ curl -X POST http://localhost:13490/api/v1/tools/image/image-enhancement \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"mode":"portrait","intensity":70,"corrections":{"exposure":true,"contrast":true,"sharpness":false}}' -F 'settings={"mode":"portrait","intensity":70,"corrections":{"exposure":true,"contrast":true,"sharpness":false}}'
``` ```
@@ -52,7 +52,7 @@ curl -X POST http://localhost:13490/api/v1/tools/image-enhancement \
## Analyze Endpoint ## Analyze Endpoint
`POST /api/v1/tools/image-enhancement/analyze` `POST /api/v1/tools/image/image-enhancement/analyze`
Analyzes an image and returns correction recommendations without applying them. Analyzes an image and returns correction recommendations without applying them.
@@ -65,7 +65,7 @@ Analyzes an image and returns correction recommendations without applying them.
### Example Request ### Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/image-enhancement/analyze \ curl -X POST http://localhost:13490/api/v1/tools/image/image-enhancement/analyze \
-F "file=@photo.jpg" -F "file=@photo.jpg"
``` ```
@@ -8,7 +8,7 @@ Pad an image to a target aspect ratio by adding a solid color, transparent, or b
## API Endpoint ## API Endpoint
`POST /api/v1/tools/image-pad` `POST /api/v1/tools/image/image-pad`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -26,7 +26,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/image-pad \ curl -X POST http://localhost:1349/api/v1/tools/image/image-pad \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"target": "16:9", "background": "blur", "padding": 5}' -F 'settings={"target": "16:9", "background": "blur", "padding": 5}'
@@ -8,7 +8,7 @@ Convert one or more images to base64-encoded strings and data URIs. Supports opt
## API Endpoint ## API Endpoint
`POST /api/v1/tools/image-to-base64` `POST /api/v1/tools/image/image-to-base64`
Accepts multipart form data with one or more image files and an optional JSON `settings` field. Accepts multipart form data with one or more image files and an optional JSON `settings` field.
@@ -24,7 +24,7 @@ Accepts multipart form data with one or more image files and an optional JSON `s
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/image-to-base64 \ curl -X POST http://localhost:1349/api/v1/tools/image/image-to-base64 \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@icon.png" \ -F "file=@icon.png" \
-F 'settings={"outputFormat": "webp", "quality": 80, "maxWidth": 200}' -F 'settings={"outputFormat": "webp", "quality": 80, "maxWidth": 200}'
@@ -33,7 +33,7 @@ curl -X POST http://localhost:1349/api/v1/tools/image-to-base64 \
Multiple files: Multiple files:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/image-to-base64 \ curl -X POST http://localhost:1349/api/v1/tools/image/image-to-base64 \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@icon1.png" \ -F "file=@icon1.png" \
-F "file=@icon2.png" \ -F "file=@icon2.png" \
@@ -8,7 +8,7 @@ Combine one or more images into a PDF document. Supports multiple page sizes, or
## API Endpoint ## API Endpoint
`POST /api/v1/tools/image-to-pdf` `POST /api/v1/tools/image/image-to-pdf`
Accepts multipart form data with one or more image files and a JSON `settings` field. Accepts multipart form data with one or more image files and a JSON `settings` field.
@@ -36,7 +36,7 @@ Minimum target size is 50 KB.
Basic multi-image PDF: Basic multi-image PDF:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/image-to-pdf \ curl -X POST http://localhost:1349/api/v1/tools/image/image-to-pdf \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@page1.jpg" \ -F "file=@page1.jpg" \
-F "file=@page2.jpg" \ -F "file=@page2.jpg" \
@@ -47,7 +47,7 @@ curl -X POST http://localhost:1349/api/v1/tools/image-to-pdf \
With file size target: With file size target:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/image-to-pdf \ curl -X POST http://localhost:1349/api/v1/tools/image/image-to-pdf \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@scan1.jpg" \ -F "file=@scan1.jpg" \
-F "file=@scan2.jpg" \ -F "file=@scan2.jpg" \
@@ -57,7 +57,7 @@ curl -X POST http://localhost:1349/api/v1/tools/image-to-pdf \
One PDF per image: One PDF per image:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/image-to-pdf \ curl -X POST http://localhost:1349/api/v1/tools/image/image-to-pdf \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo1.jpg" \ -F "file=@photo1.jpg" \
-F "file=@photo2.jpg" \ -F "file=@photo2.jpg" \
@@ -8,7 +8,7 @@ Read-only analysis tool that returns comprehensive image metadata including dime
## API Endpoint ## API Endpoint
`POST /api/v1/tools/info` `POST /api/v1/tools/image/info`
Accepts multipart form data with an image file. No settings field is needed. Accepts multipart form data with an image file. No settings field is needed.
@@ -23,7 +23,7 @@ This tool has no configurable parameters. Simply upload the image file.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/info \ curl -X POST http://localhost:1349/api/v1/tools/image/info \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" -F "file=@photo.jpg"
``` ```
@@ -8,7 +8,7 @@ Generate a tiny low-quality image placeholder (LQIP) from a source image. Return
## API Endpoint ## API Endpoint
`POST /api/v1/tools/lqip-placeholder` `POST /api/v1/tools/image/lqip-placeholder`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -25,7 +25,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/lqip-placeholder \ curl -X POST http://localhost:1349/api/v1/tools/image/lqip-placeholder \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"width": 20, "strategy": "blur", "format": "webp"}' -F 'settings={"width": 20, "strategy": "blur", "format": "webp"}'
@@ -8,7 +8,7 @@ Create memes using built-in templates or custom images. Add text with classic me
## API Endpoint ## API Endpoint
`POST /api/v1/tools/meme-generator` `POST /api/v1/tools/image/meme-generator`
Accepts either: Accepts either:
- **Multipart form data** with an image file and a JSON `settings` field (custom image mode) - **Multipart form data** with an image file and a JSON `settings` field (custom image mode)
@@ -52,7 +52,7 @@ Each entry in the `textBoxes` array should have:
Custom image with top and bottom text: Custom image with top and bottom text:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/meme-generator \ curl -X POST http://localhost:1349/api/v1/tools/image/meme-generator \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"textLayout": "top-bottom", "textBoxes": [{"id": "top", "text": "When the code works"}, {"id": "bottom", "text": "On the first try"}], "fontFamily": "anton", "allCaps": true}' -F 'settings={"textLayout": "top-bottom", "textBoxes": [{"id": "top", "text": "When the code works"}, {"id": "bottom", "text": "On the first try"}], "fontFamily": "anton", "allCaps": true}'
@@ -61,7 +61,7 @@ curl -X POST http://localhost:1349/api/v1/tools/meme-generator \
Using a built-in template (JSON body, no file upload): Using a built-in template (JSON body, no file upload):
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/meme-generator \ curl -X POST http://localhost:1349/api/v1/tools/image/meme-generator \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"templateId": "drake", "textBoxes": [{"id": "top", "text": "Manual testing"}, {"id": "bottom", "text": "Automated tests"}]}' -d '{"templateId": "drake", "textBoxes": [{"id": "top", "text": "Manual testing"}, {"id": "bottom", "text": "Automated tests"}]}'
@@ -4,7 +4,7 @@ AI-powered noise and grain removal with multi-tier quality options, using the Py
## API Endpoint ## API Endpoint
`POST /api/v1/tools/noise-removal` `POST /api/v1/tools/image/noise-removal`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -25,7 +25,7 @@ AI-powered noise and grain removal with multi-tier quality options, using the Py
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/noise-removal \ curl -X POST http://localhost:13490/api/v1/tools/image/noise-removal \
-F "file=@noisy-photo.jpg" \ -F "file=@noisy-photo.jpg" \
-F 'settings={"tier":"quality","strength":60,"detailPreservation":70,"colorNoise":40}' -F 'settings={"tier":"quality","strength":60,"detailPreservation":70,"colorNoise":40}'
``` ```
@@ -4,7 +4,7 @@ Extract text from images using AI-powered optical character recognition. Support
## API Endpoint ## API Endpoint
`POST /api/v1/tools/ocr` `POST /api/v1/tools/image/ocr`
**Processing:** Synchronous (returns extracted text directly, though progress is reported via SSE if a `clientJobId` is provided) **Processing:** Synchronous (returns extracted text directly, though progress is reported via SSE if a `clientJobId` is provided)
@@ -23,7 +23,7 @@ Extract text from images using AI-powered optical character recognition. Support
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/ocr \ curl -X POST http://localhost:13490/api/v1/tools/image/ocr \
-F "file=@document.png" \ -F "file=@document.png" \
-F 'settings={"quality":"best","language":"en","enhance":true}' -F 'settings={"quality":"best","language":"en","enhance":true}'
``` ```
@@ -8,11 +8,11 @@ Optimize images for web delivery in a single step. Combines format conversion, q
## API Endpoint ## API Endpoint
`POST /api/v1/tools/optimize-for-web` `POST /api/v1/tools/image/optimize-for-web`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
A live preview endpoint is also available at `POST /api/v1/tools/optimize-for-web/preview`, which returns the processed image directly as binary (no workspace creation) for real-time parameter tuning. A live preview endpoint is also available at `POST /api/v1/tools/image/optimize-for-web/preview`, which returns the processed image directly as binary (no workspace creation) for real-time parameter tuning.
## Parameters ## Parameters
@@ -28,7 +28,7 @@ A live preview endpoint is also available at `POST /api/v1/tools/optimize-for-we
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/optimize-for-web \ curl -X POST http://localhost:1349/api/v1/tools/image/optimize-for-web \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"format": "webp", "quality": 75, "maxWidth": 1920}' -F 'settings={"format": "webp", "quality": 75, "maxWidth": 1920}'
@@ -37,7 +37,7 @@ curl -X POST http://localhost:1349/api/v1/tools/optimize-for-web \
Optimize for AVIF with aggressive compression: Optimize for AVIF with aggressive compression:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/optimize-for-web \ curl -X POST http://localhost:1349/api/v1/tools/image/optimize-for-web \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"format": "avif", "quality": 50, "maxWidth": 1200, "maxHeight": 800}' -F 'settings={"format": "avif", "quality": 50, "maxWidth": 1200, "maxHeight": 800}'
@@ -56,7 +56,7 @@ curl -X POST http://localhost:1349/api/v1/tools/optimize-for-web \
### Preview Endpoint Response ### Preview Endpoint Response
The preview endpoint (`/api/v1/tools/optimize-for-web/preview`) returns the binary image directly with informational headers: The preview endpoint (`/api/v1/tools/image/optimize-for-web/preview`) returns the binary image directly with informational headers:
- `X-Original-Size` - Original file size in bytes - `X-Original-Size` - Original file size in bytes
- `X-Processed-Size` - Processed file size in bytes - `X-Processed-Size` - Processed file size in bytes
@@ -12,7 +12,7 @@ This tool uses a two-phase flow with separate endpoints for analysis and generat
### Phase 1: Analyze ### Phase 1: Analyze
`POST /api/v1/tools/passport-photo/analyze` `POST /api/v1/tools/image/passport-photo/analyze`
Detects face landmarks and removes the background. Returns landmark data and a preview for the frontend to display a crop preview. Detects face landmarks and removes the background. Returns landmark data and a preview for the frontend to display a crop preview.
@@ -26,7 +26,7 @@ Detects face landmarks and removes the background. Returns landmark data and a p
#### Example Request #### Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/passport-photo/analyze \ curl -X POST http://localhost:13490/api/v1/tools/image/passport-photo/analyze \
-F "file=@headshot.jpg" -F "file=@headshot.jpg"
``` ```
@@ -71,7 +71,7 @@ If `clientJobId` is provided, progress is streamed (0-30% for face detection, 30
### Phase 2: Generate ### Phase 2: Generate
`POST /api/v1/tools/passport-photo/generate` `POST /api/v1/tools/image/passport-photo/generate`
Crops, resizes, and optionally tiles the photo onto a print sheet. Uses cached images from Phase 1 (no AI re-run). Crops, resizes, and optionally tiles the photo onto a print sheet. Uses cached images from Phase 1 (no AI re-run).
@@ -99,7 +99,7 @@ Crops, resizes, and optionally tiles the photo onto a print sheet. Uses cached i
#### Example Request #### Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/passport-photo/generate \ curl -X POST http://localhost:13490/api/v1/tools/image/passport-photo/generate \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{ -d '{
"jobId": "a1b2c3d4-...", "jobId": "a1b2c3d4-...",
@@ -145,13 +145,13 @@ curl -X POST http://localhost:13490/api/v1/tools/passport-photo/generate \
### Base Route ### Base Route
`POST /api/v1/tools/passport-photo` `POST /api/v1/tools/image/passport-photo`
Returns guidance to use the correct sub-endpoint. Returns guidance to use the correct sub-endpoint.
```json ```json
{ {
"error": "Use /api/v1/tools/passport-photo/analyze or /generate" "error": "Use /api/v1/tools/image/passport-photo/analyze or /generate"
} }
``` ```
@@ -8,7 +8,7 @@ Apply a pixelation effect to an entire image or a specific rectangular region. U
## API Endpoint ## API Endpoint
`POST /api/v1/tools/pixelate` `POST /api/v1/tools/image/pixelate`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -33,7 +33,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
Pixelate the full image: Pixelate the full image:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/pixelate \ curl -X POST http://localhost:1349/api/v1/tools/image/pixelate \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"blockSize": 20}' -F 'settings={"blockSize": 20}'
@@ -42,7 +42,7 @@ curl -X POST http://localhost:1349/api/v1/tools/pixelate \
Pixelate a specific region: Pixelate a specific region:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/pixelate \ curl -X POST http://localhost:1349/api/v1/tools/image/pixelate \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"blockSize": 16, "region": {"left": 100, "top": 50, "width": 200, "height": 150}}' -F 'settings={"blockSize": 16, "region": {"left": 100, "top": 50, "width": 200, "height": 150}}'
@@ -8,7 +8,7 @@ Generate QR code images from text or URLs with configurable size, error correcti
## API Endpoint ## API Endpoint
`POST /api/v1/tools/qr-generate` `POST /api/v1/tools/image/qr-generate`
Accepts a **JSON body** (not multipart). No file upload is needed. Accepts a **JSON body** (not multipart). No file upload is needed.
@@ -34,7 +34,7 @@ Accepts a **JSON body** (not multipart). No file upload is needed.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/qr-generate \ curl -X POST http://localhost:1349/api/v1/tools/image/qr-generate \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"text": "https://snapotter.com", "size": 500, "errorCorrection": "H"}' -d '{"text": "https://snapotter.com", "size": 500, "errorCorrection": "H"}'
@@ -43,7 +43,7 @@ curl -X POST http://localhost:1349/api/v1/tools/qr-generate \
Branded QR code with custom colors: Branded QR code with custom colors:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/qr-generate \ curl -X POST http://localhost:1349/api/v1/tools/image/qr-generate \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"text": "Hello World", "size": 300, "foreground": "#1a365d", "background": "#f7fafc"}' -d '{"text": "Hello World", "size": 300, "foreground": "#1a365d", "background": "#f7fafc"}'
@@ -4,7 +4,7 @@ AI-powered detection and correction of red eye caused by camera flash.
## API Endpoint ## API Endpoint
`POST /api/v1/tools/red-eye-removal` `POST /api/v1/tools/image/red-eye-removal`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -23,7 +23,7 @@ AI-powered detection and correction of red eye caused by camera flash.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/red-eye-removal \ curl -X POST http://localhost:13490/api/v1/tools/image/red-eye-removal \
-F "file=@flash-photo.jpg" \ -F "file=@flash-photo.jpg" \
-F 'settings={"sensitivity":60,"strength":80}' -F 'settings={"sensitivity":60,"strength":80}'
``` ```
@@ -4,7 +4,7 @@ AI-powered background removal with optional effects (blur, shadow, gradient, cus
## API Endpoint ## API Endpoint
`POST /api/v1/tools/remove-background` `POST /api/v1/tools/image/remove-background`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -32,7 +32,7 @@ AI-powered background removal with optional effects (blur, shadow, gradient, cus
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/remove-background \ curl -X POST http://localhost:13490/api/v1/tools/image/remove-background \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"backgroundType":"transparent","edgeRefine":2,"outputFormat":"png"}' -F 'settings={"backgroundType":"transparent","edgeRefine":2,"outputFormat":"png"}'
``` ```
@@ -76,7 +76,7 @@ data: {"phase":"processing","stage":"Removing background...","percent":50}
## Effects Endpoint (Phase 2) ## Effects Endpoint (Phase 2)
`POST /api/v1/tools/remove-background/effects` `POST /api/v1/tools/image/remove-background/effects`
Re-applies background effects without re-running the AI model. Uses cached mask and original from Phase 1. Re-applies background effects without re-running the AI model. Uses cached mask and original from Phase 1.
@@ -107,7 +107,7 @@ Re-applies background effects without re-running the AI model. Uses cached mask
### Example Request ### Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/remove-background/effects \ curl -X POST http://localhost:13490/api/v1/tools/image/remove-background/effects \
-F 'settings={"jobId":"a1b2c3d4-...","filename":"photo.jpg","backgroundType":"color","backgroundColor":"#FF5500","outputFormat":"png"}' -F 'settings={"jobId":"a1b2c3d4-...","filename":"photo.jpg","backgroundType":"color","backgroundColor":"#FF5500","outputFormat":"png"}'
``` ```
@@ -8,7 +8,7 @@ Replace pixels matching a source color with a target color, or make them transpa
## API Endpoint ## API Endpoint
`POST /api/v1/tools/replace-color` `POST /api/v1/tools/image/replace-color`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -24,7 +24,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/replace-color \ curl -X POST http://localhost:1349/api/v1/tools/image/replace-color \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"sourceColor": "#FF0000", "targetColor": "#0000FF", "tolerance": 40}' -F 'settings={"sourceColor": "#FF0000", "targetColor": "#0000FF", "tolerance": 40}'
@@ -33,7 +33,7 @@ curl -X POST http://localhost:1349/api/v1/tools/replace-color \
Make a green background transparent: Make a green background transparent:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/replace-color \ curl -X POST http://localhost:1349/api/v1/tools/image/replace-color \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@greenscreen.png" \ -F "file=@greenscreen.png" \
-F 'settings={"sourceColor": "#00FF00", "makeTransparent": true, "tolerance": 50}' -F 'settings={"sourceColor": "#00FF00", "makeTransparent": true, "tolerance": 50}'
@@ -8,7 +8,7 @@ Resize images by specifying exact pixel dimensions, a percentage scale factor, o
## API Endpoint ## API Endpoint
`POST /api/v1/tools/resize` `POST /api/v1/tools/image/resize`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -35,7 +35,7 @@ At least one of `width`, `height`, or `percentage` must be provided.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/resize \ curl -X POST http://localhost:1349/api/v1/tools/image/resize \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"width": 800, "height": 600, "fit": "contain"}' -F 'settings={"width": 800, "height": 600, "fit": "contain"}'
@@ -44,7 +44,7 @@ curl -X POST http://localhost:1349/api/v1/tools/resize \
Resize by percentage: Resize by percentage:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/resize \ curl -X POST http://localhost:1349/api/v1/tools/image/resize \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"percentage": 50}' -F 'settings={"percentage": 50}'
@@ -4,7 +4,7 @@ Fix scratches, tears, and damage on old photos using a multi-step AI pipeline. C
## API Endpoint ## API Endpoint
`POST /api/v1/tools/restore-photo` `POST /api/v1/tools/image/restore-photo`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -26,7 +26,7 @@ Fix scratches, tears, and damage on old photos using a multi-step AI pipeline. C
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/restore-photo \ curl -X POST http://localhost:13490/api/v1/tools/image/restore-photo \
-F "file=@damaged-old-photo.jpg" \ -F "file=@damaged-old-photo.jpg" \
-F 'settings={"scratchRemoval":true,"faceEnhancement":true,"fidelity":0.6,"colorize":true}' -F 'settings={"scratchRemoval":true,"faceEnhancement":true,"fidelity":0.6,"colorize":true}'
``` ```
@@ -8,7 +8,7 @@ Rotate images by an arbitrary angle and/or flip them horizontally or vertically.
## API Endpoint ## API Endpoint
`POST /api/v1/tools/rotate` `POST /api/v1/tools/image/rotate`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -25,7 +25,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
Rotate 90 degrees clockwise: Rotate 90 degrees clockwise:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/rotate \ curl -X POST http://localhost:1349/api/v1/tools/image/rotate \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"angle": 90}' -F 'settings={"angle": 90}'
@@ -34,7 +34,7 @@ curl -X POST http://localhost:1349/api/v1/tools/rotate \
Flip horizontally: Flip horizontally:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/rotate \ curl -X POST http://localhost:1349/api/v1/tools/image/rotate \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"horizontal": true}' -F 'settings={"horizontal": true}'
@@ -43,7 +43,7 @@ curl -X POST http://localhost:1349/api/v1/tools/rotate \
Rotate and flip together: Rotate and flip together:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/rotate \ curl -X POST http://localhost:1349/api/v1/tools/image/rotate \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"angle": 45, "vertical": true}' -F 'settings={"angle": 45, "vertical": true}'
@@ -8,7 +8,7 @@ Advanced sharpening tool with three methods: adaptive (smart edge-aware), unshar
## API Endpoint ## API Endpoint
`POST /api/v1/tools/sharpening` `POST /api/v1/tools/image/sharpening`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -33,7 +33,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/sharpening \ curl -X POST http://localhost:1349/api/v1/tools/image/sharpening \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"method": "adaptive", "sigma": 1.5}' -F 'settings={"method": "adaptive", "sigma": 1.5}'
@@ -42,7 +42,7 @@ curl -X POST http://localhost:1349/api/v1/tools/sharpening \
Unsharp mask with threshold to protect smooth areas: Unsharp mask with threshold to protect smooth areas:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/sharpening \ curl -X POST http://localhost:1349/api/v1/tools/image/sharpening \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"method": "unsharp-mask", "amount": 150, "radius": 1.5, "threshold": 10}' -F 'settings={"method": "unsharp-mask", "amount": 150, "radius": 1.5, "threshold": 10}'
@@ -4,7 +4,7 @@ Smart subject-aware, face-aware, or trim-based cropping. Uses Sharp's attention/
## API Endpoint ## API Endpoint
`POST /api/v1/tools/smart-crop` `POST /api/v1/tools/image/smart-crop`
**Processing:** Synchronous (uses `createToolRoute` factory, returns result directly) **Processing:** Synchronous (uses `createToolRoute` factory, returns result directly)
@@ -31,7 +31,7 @@ Smart subject-aware, face-aware, or trim-based cropping. Uses Sharp's attention/
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/smart-crop \ curl -X POST http://localhost:13490/api/v1/tools/image/smart-crop \
-F "file=@portrait.jpg" \ -F "file=@portrait.jpg" \
-F 'settings={"mode":"face","width":1080,"height":1080,"facePreset":"head-shoulders"}' -F 'settings={"mode":"face","width":1080,"height":1080,"facePreset":"head-shoulders"}'
``` ```
@@ -4,7 +4,7 @@ Split a single image into grid tiles by column/row count or by specific pixel di
## API Endpoint ## API Endpoint
`POST /api/v1/tools/split` `POST /api/v1/tools/image/split`
## Parameters ## Parameters
@@ -20,7 +20,7 @@ Split a single image into grid tiles by column/row count or by specific pixel di
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/split \ curl -X POST http://localhost:13490/api/v1/tools/image/split \
-F "file=@large-image.png" \ -F "file=@large-image.png" \
-F 'settings={"columns":3,"rows":3,"outputFormat":"png"}' \ -F 'settings={"columns":3,"rows":3,"outputFormat":"png"}' \
--output split-tiles.zip --output split-tiles.zip
@@ -8,7 +8,7 @@ Combine multiple images into a single sprite sheet grid. Each image is resized t
## API Endpoint ## API Endpoint
`POST /api/v1/tools/sprite-sheet` `POST /api/v1/tools/image/sprite-sheet`
Accepts multipart form data with two or more image files and a JSON `settings` field. Accepts multipart form data with two or more image files and a JSON `settings` field.
@@ -25,7 +25,7 @@ Accepts multipart form data with two or more image files and a JSON `settings` f
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/sprite-sheet \ curl -X POST http://localhost:1349/api/v1/tools/image/sprite-sheet \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@frame1.png" \ -F "file=@frame1.png" \
-F "file=@frame2.png" \ -F "file=@frame2.png" \
@@ -4,7 +4,7 @@ Join multiple images side by side, stacked vertically, or arranged in a grid. Su
## API Endpoint ## API Endpoint
`POST /api/v1/tools/stitch` `POST /api/v1/tools/image/stitch`
## Parameters ## Parameters
@@ -24,7 +24,7 @@ Join multiple images side by side, stacked vertically, or arranged in a grid. Su
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/stitch \ curl -X POST http://localhost:13490/api/v1/tools/image/stitch \
-F "file=@image1.png" \ -F "file=@image1.png" \
-F "file=@image2.png" \ -F "file=@image2.png" \
-F "file=@image3.png" \ -F "file=@image3.png" \
@@ -10,13 +10,13 @@ Remove EXIF, GPS, ICC color profiles, and XMP metadata from images. Useful for p
### Strip Metadata ### Strip Metadata
`POST /api/v1/tools/strip-metadata` `POST /api/v1/tools/image/strip-metadata`
Processes the image and returns a cleaned version with selected metadata removed. Processes the image and returns a cleaned version with selected metadata removed.
### Inspect Metadata ### Inspect Metadata
`POST /api/v1/tools/strip-metadata/inspect` `POST /api/v1/tools/image/strip-metadata/inspect`
Returns the parsed metadata as JSON without modifying the image. Useful for previewing what metadata exists before stripping. Returns the parsed metadata as JSON without modifying the image. Useful for previewing what metadata exists before stripping.
@@ -37,7 +37,7 @@ When `stripAll` is `true`, it overrides the individual flags and removes everyth
Strip all metadata: Strip all metadata:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/strip-metadata \ curl -X POST http://localhost:1349/api/v1/tools/image/strip-metadata \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"stripAll": true}' -F 'settings={"stripAll": true}'
@@ -46,7 +46,7 @@ curl -X POST http://localhost:1349/api/v1/tools/strip-metadata \
Strip only GPS data (keep camera info and color profile): Strip only GPS data (keep camera info and color profile):
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/strip-metadata \ curl -X POST http://localhost:1349/api/v1/tools/image/strip-metadata \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"stripAll": false, "stripGps": true}' -F 'settings={"stripAll": false, "stripGps": true}'
@@ -55,7 +55,7 @@ curl -X POST http://localhost:1349/api/v1/tools/strip-metadata \
Inspect metadata without modifying: Inspect metadata without modifying:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/strip-metadata/inspect \ curl -X POST http://localhost:1349/api/v1/tools/image/strip-metadata/inspect \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" -F "file=@photo.jpg"
``` ```
@@ -4,7 +4,7 @@ Convert SVG files to raster image formats (PNG, JPEG, WebP, AVIF, TIFF, GIF, HEI
## API Endpoint ## API Endpoint
`POST /api/v1/tools/svg-to-raster` `POST /api/v1/tools/image/svg-to-raster`
## Parameters ## Parameters
@@ -20,7 +20,7 @@ Convert SVG files to raster image formats (PNG, JPEG, WebP, AVIF, TIFF, GIF, HEI
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/svg-to-raster \ curl -X POST http://localhost:13490/api/v1/tools/image/svg-to-raster \
-F "file=@logo.svg" \ -F "file=@logo.svg" \
-F 'settings={"width":1024,"dpi":300,"outputFormat":"png","backgroundColor":"#FFFFFF"}' -F 'settings={"width":1024,"dpi":300,"outputFormat":"png","backgroundColor":"#FFFFFF"}'
``` ```
@@ -39,7 +39,7 @@ curl -X POST http://localhost:13490/api/v1/tools/svg-to-raster \
## Batch Endpoint ## Batch Endpoint
`POST /api/v1/tools/svg-to-raster/batch` `POST /api/v1/tools/image/svg-to-raster/batch`
Convert multiple SVG files in one request. Returns a ZIP archive. Convert multiple SVG files in one request. Returns a ZIP archive.
@@ -52,7 +52,7 @@ Convert multiple SVG files in one request. Returns a ZIP archive.
### Batch Example Request ### Batch Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/svg-to-raster/batch \ curl -X POST http://localhost:13490/api/v1/tools/image/svg-to-raster/batch \
-F "file=@icon1.svg" \ -F "file=@icon1.svg" \
-F "file=@icon2.svg" \ -F "file=@icon2.svg" \
-F "file=@icon3.svg" \ -F "file=@icon3.svg" \
@@ -8,7 +8,7 @@ Add styled text to images with optional drop shadow and semi-transparent backgro
## API Endpoint ## API Endpoint
`POST /api/v1/tools/text-overlay` `POST /api/v1/tools/image/text-overlay`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -27,7 +27,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/text-overlay \ curl -X POST http://localhost:1349/api/v1/tools/image/text-overlay \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"text": "Hello World", "fontSize": 64, "color": "#FFFFFF", "position": "bottom", "shadow": true}' -F 'settings={"text": "Hello World", "fontSize": 64, "color": "#FFFFFF", "position": "bottom", "shadow": true}'
@@ -36,7 +36,7 @@ curl -X POST http://localhost:1349/api/v1/tools/text-overlay \
With a background box: With a background box:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/text-overlay \ curl -X POST http://localhost:1349/api/v1/tools/image/text-overlay \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"text": "Caption", "fontSize": 36, "position": "bottom", "backgroundBox": true, "backgroundColor": "#000000"}' -F 'settings={"text": "Caption", "fontSize": 36, "position": "bottom", "backgroundBox": true, "backgroundColor": "#000000"}'
@@ -4,7 +4,7 @@ Fix fake transparent PNGs in one click. Uses AI matting (BiRefNet HR Matting mod
## API Endpoint ## API Endpoint
`POST /api/v1/tools/transparency-fixer` `POST /api/v1/tools/image/transparency-fixer`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -22,7 +22,7 @@ Fix fake transparent PNGs in one click. Uses AI matting (BiRefNet HR Matting mod
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/transparency-fixer \ curl -X POST http://localhost:13490/api/v1/tools/image/transparency-fixer \
-F "file=@fake-transparent.png" \ -F "file=@fake-transparent.png" \
-F 'settings={"defringe":40,"outputFormat":"png"}' -F 'settings={"defringe":40,"outputFormat":"png"}'
``` ```
@@ -4,7 +4,7 @@ AI super-resolution enhancement using Real-ESRGAN. Upscales images 2x-4x while p
## API Endpoint ## API Endpoint
`POST /api/v1/tools/upscale` `POST /api/v1/tools/image/upscale`
**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE)
@@ -25,7 +25,7 @@ AI super-resolution enhancement using Real-ESRGAN. Upscales images 2x-4x while p
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/upscale \ curl -X POST http://localhost:13490/api/v1/tools/image/upscale \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"scale":4,"model":"auto","faceEnhance":true,"format":"png"}' -F 'settings={"scale":4,"model":"auto","faceEnhance":true,"format":"png"}'
``` ```
@@ -4,7 +4,7 @@ Vectorize raster images into SVG using tracing algorithms. Supports black-and-wh
## API Endpoint ## API Endpoint
`POST /api/v1/tools/vectorize` `POST /api/v1/tools/image/vectorize`
## Parameters ## Parameters
@@ -22,7 +22,7 @@ Vectorize raster images into SVG using tracing algorithms. Supports black-and-wh
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/vectorize \ curl -X POST http://localhost:13490/api/v1/tools/image/vectorize \
-F "file=@logo.png" \ -F "file=@logo.png" \
-F 'settings={"colorMode":"bw","threshold":128,"filterSpeckle":4,"pathMode":"spline"}' -F 'settings={"colorMode":"bw","threshold":128,"filterSpeckle":4,"pathMode":"spline"}'
``` ```
@@ -30,7 +30,7 @@ curl -X POST http://localhost:13490/api/v1/tools/vectorize \
### Color Vectorization ### Color Vectorization
```bash ```bash
curl -X POST http://localhost:13490/api/v1/tools/vectorize \ curl -X POST http://localhost:13490/api/v1/tools/image/vectorize \
-F "file=@illustration.png" \ -F "file=@illustration.png" \
-F 'settings={"colorMode":"color","colorPrecision":8,"layerDifference":6,"filterSpeckle":4}' -F 'settings={"colorMode":"color","colorPrecision":8,"layerDifference":6,"filterSpeckle":4}'
``` ```
@@ -8,7 +8,7 @@ Add a vignette effect that darkens or tints the edges of an image. Supports adju
## API Endpoint ## API Endpoint
`POST /api/v1/tools/vignette` `POST /api/v1/tools/image/vignette`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -27,7 +27,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/vignette \ curl -X POST http://localhost:1349/api/v1/tools/image/vignette \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"strength": 0.7, "radius": 60, "softness": 70}' -F 'settings={"strength": 0.7, "radius": 60, "softness": 70}'
@@ -8,7 +8,7 @@ Overlay a logo or secondary image as a watermark on a base image. The watermark
## API Endpoint ## API Endpoint
`POST /api/v1/tools/watermark-image` `POST /api/v1/tools/image/watermark-image`
Accepts multipart form data with **two** image files and a JSON `settings` field. Accepts multipart form data with **two** image files and a JSON `settings` field.
@@ -30,7 +30,7 @@ Accepts multipart form data with **two** image files and a JSON `settings` field
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/watermark-image \ curl -X POST http://localhost:1349/api/v1/tools/image/watermark-image \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F "watermark=@logo.png" \ -F "watermark=@logo.png" \
@@ -8,7 +8,7 @@ Add a text watermark overlay to images. Supports single placement at corners/cen
## API Endpoint ## API Endpoint
`POST /api/v1/tools/watermark-text` `POST /api/v1/tools/image/watermark-text`
Accepts multipart form data with an image file and a JSON `settings` field. Accepts multipart form data with an image file and a JSON `settings` field.
@@ -26,7 +26,7 @@ Accepts multipart form data with an image file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/watermark-text \ curl -X POST http://localhost:1349/api/v1/tools/image/watermark-text \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"text": "SAMPLE", "fontSize": 64, "opacity": 30, "position": "center", "rotation": -30}' -F 'settings={"text": "SAMPLE", "fontSize": 64, "opacity": 30, "position": "center", "rotation": -30}'
@@ -35,7 +35,7 @@ curl -X POST http://localhost:1349/api/v1/tools/watermark-text \
Tiled watermark across the entire image: Tiled watermark across the entire image:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/watermark-text \ curl -X POST http://localhost:1349/api/v1/tools/image/watermark-text \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \ -F "file=@photo.jpg" \
-F 'settings={"text": "DRAFT", "fontSize": 36, "opacity": 20, "position": "tiled", "rotation": -45}' -F 'settings={"text": "DRAFT", "fontSize": 36, "opacity": 20, "position": "tiled", "rotation": -45}'
@@ -8,7 +8,7 @@ Impose pages for duplex printing so the printed sheets can be folded into a book
## API Endpoint ## API Endpoint
`POST /api/v1/tools/booklet-pdf` `POST /api/v1/tools/pdf/booklet-pdf`
Accepts multipart form data with a PDF file and a JSON `settings` field. Accepts multipart form data with a PDF file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field.
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/booklet-pdf \ curl -X POST http://localhost:1349/api/v1/tools/pdf/booklet-pdf \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@document.pdf" \ -F "file=@document.pdf" \
-F 'settings={"perSheet": 2}' -F 'settings={"perSheet": 2}'
@@ -8,7 +8,7 @@ Reduce PDF file size by downsampling embedded images. Choose between a quality s
## API Endpoint ## API Endpoint
`POST /api/v1/tools/compress-pdf` `POST /api/v1/tools/pdf/compress-pdf`
Accepts multipart form data with a PDF file and a JSON `settings` field. Accepts multipart form data with a PDF file and a JSON `settings` field.
@@ -25,7 +25,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field.
Compress by quality: Compress by quality:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/compress-pdf \ curl -X POST http://localhost:1349/api/v1/tools/pdf/compress-pdf \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@document.pdf" \ -F "file=@document.pdf" \
-F 'settings={"mode": "quality", "quality": 60}' -F 'settings={"mode": "quality", "quality": 60}'
@@ -34,7 +34,7 @@ curl -X POST http://localhost:1349/api/v1/tools/compress-pdf \
Compress to a target size: Compress to a target size:
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/compress-pdf \ curl -X POST http://localhost:1349/api/v1/tools/pdf/compress-pdf \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@document.pdf" \ -F "file=@document.pdf" \
-F 'settings={"mode": "targetSize", "targetSizeKb": 500}' -F 'settings={"mode": "targetSize", "targetSizeKb": 500}'
@@ -8,7 +8,7 @@ Convert documents between Word (DOCX), OpenDocument (ODT), RTF, and plain text f
## API Endpoint ## API Endpoint
`POST /api/v1/tools/convert-document` `POST /api/v1/tools/pdf/convert-document`
Accepts multipart form data with a Word/ODT/RTF/TXT file and a JSON `settings` field. Accepts multipart form data with a Word/ODT/RTF/TXT file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with a Word/ODT/RTF/TXT file and a JSON `settings` f
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/convert-document \ curl -X POST http://localhost:1349/api/v1/tools/pdf/convert-document \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@report.docx" \ -F "file=@report.docx" \
-F 'settings={"format": "odt"}' -F 'settings={"format": "odt"}'
@@ -8,7 +8,7 @@ Convert presentations between PowerPoint (PPTX) and OpenDocument Presentation (O
## API Endpoint ## API Endpoint
`POST /api/v1/tools/convert-presentation` `POST /api/v1/tools/pdf/convert-presentation`
Accepts multipart form data with a PowerPoint/ODP file and a JSON `settings` field. Accepts multipart form data with a PowerPoint/ODP file and a JSON `settings` field.
@@ -21,7 +21,7 @@ Accepts multipart form data with a PowerPoint/ODP file and a JSON `settings` fie
## Example Request ## Example Request
```bash ```bash
curl -X POST http://localhost:1349/api/v1/tools/convert-presentation \ curl -X POST http://localhost:1349/api/v1/tools/pdf/convert-presentation \
-H "Authorization: Bearer si_your-api-key" \ -H "Authorization: Bearer si_your-api-key" \
-F "file=@slides.pptx" \ -F "file=@slides.pptx" \
-F 'settings={"format": "odp"}' -F 'settings={"format": "odp"}'

Some files were not shown because too many files have changed in this diff Show More