diff --git a/apps/docs/.vitepress/config.mts b/apps/docs/.vitepress/config.mts index 1864ac2d..d8a6f9e2 100644 --- a/apps/docs/.vitepress/config.mts +++ b/apps/docs/.vitepress/config.mts @@ -90,7 +90,7 @@ export default defineConfig({ nav: [ { text: "Home", link: "/" }, { text: "Guide", link: "/guide/getting-started" }, - { text: "Tools", link: "/tools/resize" }, + { text: "Tools", link: "/tools/image/resize" }, { text: "API Reference", link: "/api/rest" }, { text: "Changelog", link: "/changelog" }, { @@ -121,221 +121,227 @@ export default defineConfig({ { text: "Tools", items: [ + { + text: "Image", + collapsed: false, + items: [ { text: "Essentials", items: [ - { text: "Resize", link: "/tools/resize" }, - { text: "Crop", link: "/tools/crop" }, - { text: "Rotate & Flip", link: "/tools/rotate" }, - { text: "Convert", link: "/tools/convert" }, - { text: "Compress", link: "/tools/compress" }, + { text: "Resize", link: "/tools/image/resize" }, + { text: "Crop", link: "/tools/image/crop" }, + { text: "Rotate & Flip", link: "/tools/image/rotate" }, + { text: "Convert", link: "/tools/image/convert" }, + { text: "Compress", link: "/tools/image/compress" }, ], }, { text: "Optimization", items: [ - { text: "Optimize for Web", link: "/tools/optimize-for-web" }, - { text: "Remove Metadata", link: "/tools/strip-metadata" }, - { text: "Edit Metadata", link: "/tools/edit-metadata" }, - { text: "Bulk Rename", link: "/tools/bulk-rename" }, - { text: "Image to PDF", link: "/tools/image-to-pdf" }, - { text: "Favicon Generator", link: "/tools/favicon" }, + { text: "Optimize for Web", link: "/tools/image/optimize-for-web" }, + { text: "Remove Metadata", link: "/tools/image/strip-metadata" }, + { text: "Edit Metadata", link: "/tools/image/edit-metadata" }, + { text: "Bulk Rename", link: "/tools/image/bulk-rename" }, + { text: "Image to PDF", link: "/tools/image/image-to-pdf" }, + { text: "Favicon Generator", link: "/tools/image/favicon" }, ], }, { text: "Adjustments", items: [ - { text: "Adjust Colors", link: "/tools/adjust-colors" }, - { text: "Sharpening", link: "/tools/sharpening" }, - { text: "Replace & Invert Color", link: "/tools/replace-color" }, - { text: "Color Blindness Simulation", link: "/tools/color-blindness" }, - { text: "Duotone", link: "/tools/duotone" }, - { text: "Pixelate", link: "/tools/pixelate" }, - { text: "Vignette", link: "/tools/vignette" }, + { text: "Adjust Colors", link: "/tools/image/adjust-colors" }, + { text: "Sharpening", link: "/tools/image/sharpening" }, + { text: "Replace & Invert Color", link: "/tools/image/replace-color" }, + { text: "Color Blindness Simulation", link: "/tools/image/color-blindness" }, + { text: "Duotone", link: "/tools/image/duotone" }, + { text: "Pixelate", link: "/tools/image/pixelate" }, + { text: "Vignette", link: "/tools/image/vignette" }, ], }, { text: "Watermark & Overlay", items: [ - { text: "Text Watermark", link: "/tools/watermark-text" }, - { text: "Image Watermark", link: "/tools/watermark-image" }, - { text: "Text Overlay", link: "/tools/text-overlay" }, - { text: "Image Composition", link: "/tools/compose" }, - { text: "Meme Generator", link: "/tools/meme-generator" }, + { text: "Text Watermark", link: "/tools/image/watermark-text" }, + { text: "Image Watermark", link: "/tools/image/watermark-image" }, + { text: "Text Overlay", link: "/tools/image/text-overlay" }, + { text: "Image Composition", link: "/tools/image/compose" }, + { text: "Meme Generator", link: "/tools/image/meme-generator" }, ], }, { text: "Utilities", items: [ - { text: "Image Info", link: "/tools/info" }, - { text: "Image Compare", link: "/tools/compare" }, - { text: "Find Duplicates", link: "/tools/find-duplicates" }, - { text: "Color Palette", link: "/tools/color-palette" }, - { text: "QR Code Generator", link: "/tools/qr-generate" }, - { text: "HTML to Image", link: "/tools/html-to-image" }, - { text: "Barcode Reader", link: "/tools/barcode-read" }, - { text: "Image to Base64", link: "/tools/image-to-base64" }, - { text: "Histogram", link: "/tools/histogram" }, - { text: "LQIP Placeholder", link: "/tools/lqip-placeholder" }, - { text: "Barcode Generator", link: "/tools/barcode-generate" }, + { text: "Image Info", link: "/tools/image/info" }, + { text: "Image Compare", link: "/tools/image/compare" }, + { text: "Find Duplicates", link: "/tools/image/find-duplicates" }, + { text: "Color Palette", link: "/tools/image/color-palette" }, + { text: "QR Code Generator", link: "/tools/image/qr-generate" }, + { text: "HTML to Image", link: "/tools/image/html-to-image" }, + { text: "Barcode Reader", link: "/tools/image/barcode-read" }, + { text: "Image to Base64", link: "/tools/image/image-to-base64" }, + { text: "Histogram", link: "/tools/image/histogram" }, + { text: "LQIP Placeholder", link: "/tools/image/lqip-placeholder" }, + { text: "Barcode Generator", link: "/tools/image/barcode-generate" }, ], }, { text: "Layout", items: [ - { text: "Collage / Grid", link: "/tools/collage" }, - { text: "Stitch / Combine", link: "/tools/stitch" }, - { text: "Image Splitting", link: "/tools/split" }, - { text: "Border & Frame", link: "/tools/border" }, - { text: "Beautify Screenshot", link: "/tools/beautify" }, - { text: "Circle Crop", link: "/tools/circle-crop" }, - { text: "Image Pad", link: "/tools/image-pad" }, - { text: "Sprite Sheet", link: "/tools/sprite-sheet" }, + { text: "Collage / Grid", link: "/tools/image/collage" }, + { text: "Stitch / Combine", link: "/tools/image/stitch" }, + { text: "Image Splitting", link: "/tools/image/split" }, + { text: "Border & Frame", link: "/tools/image/border" }, + { text: "Beautify Screenshot", link: "/tools/image/beautify" }, + { text: "Circle Crop", link: "/tools/image/circle-crop" }, + { text: "Image Pad", link: "/tools/image/image-pad" }, + { text: "Sprite Sheet", link: "/tools/image/sprite-sheet" }, ], }, { text: "Format", items: [ - { text: "SVG to Raster", link: "/tools/svg-to-raster" }, - { text: "Image to SVG", link: "/tools/vectorize" }, - { text: "GIF Tools", link: "/tools/gif-tools" }, - { text: "GIF/WebP Converter", link: "/tools/gif-webp" }, + { text: "SVG to Raster", link: "/tools/image/svg-to-raster" }, + { text: "Image to SVG", link: "/tools/image/vectorize" }, + { text: "GIF Tools", link: "/tools/image/gif-tools" }, + { text: "GIF/WebP Converter", link: "/tools/image/gif-webp" }, ], }, { text: "AI Tools", items: [ - { text: "Remove Background", link: "/tools/remove-background" }, - { text: "Image Upscaling", link: "/tools/upscale" }, - { text: "Object Eraser", link: "/tools/erase-object" }, - { text: "OCR / Text Extraction", link: "/tools/ocr" }, - { text: "Face / PII Blur", link: "/tools/blur-faces" }, - { text: "Smart Crop", link: "/tools/smart-crop" }, - { text: "Image Enhancement", link: "/tools/image-enhancement" }, - { text: "Face Enhancement", link: "/tools/enhance-faces" }, - { text: "AI Colorization", link: "/tools/colorize" }, - { text: "Noise Removal", link: "/tools/noise-removal" }, - { text: "Red Eye Removal", link: "/tools/red-eye-removal" }, - { text: "Photo Restoration", link: "/tools/restore-photo" }, - { text: "Passport Photo", link: "/tools/passport-photo" }, - { text: "Content-Aware Resize", link: "/tools/content-aware-resize" }, - { text: "AI Canvas Expand", link: "/tools/ai-canvas-expand" }, - { text: "PNG Transparency Fixer", link: "/tools/transparency-fixer" }, - { text: "Background Replace", link: "/tools/background-replace" }, - { text: "Blur Background", link: "/tools/blur-background" }, + { text: "Remove Background", link: "/tools/image/remove-background" }, + { text: "Image Upscaling", link: "/tools/image/upscale" }, + { text: "Object Eraser", link: "/tools/image/erase-object" }, + { text: "OCR / Text Extraction", link: "/tools/image/ocr" }, + { text: "Face / PII Blur", link: "/tools/image/blur-faces" }, + { text: "Smart Crop", link: "/tools/image/smart-crop" }, + { text: "Image Enhancement", link: "/tools/image/image-enhancement" }, + { text: "Face Enhancement", link: "/tools/image/enhance-faces" }, + { text: "AI Colorization", link: "/tools/image/colorize" }, + { text: "Noise Removal", link: "/tools/image/noise-removal" }, + { text: "Red Eye Removal", link: "/tools/image/red-eye-removal" }, + { text: "Photo Restoration", link: "/tools/image/restore-photo" }, + { text: "Passport Photo", link: "/tools/image/passport-photo" }, + { text: "Content-Aware Resize", link: "/tools/image/content-aware-resize" }, + { text: "AI Canvas Expand", link: "/tools/image/ai-canvas-expand" }, + { text: "PNG Transparency Fixer", link: "/tools/image/transparency-fixer" }, + { text: "Background Replace", link: "/tools/image/background-replace" }, + { text: "Blur Background", link: "/tools/image/blur-background" }, + ], + }, ], }, { text: "Video", items: [ - { text: "Convert Video", link: "/tools/convert-video" }, - { text: "Compress Video", link: "/tools/compress-video" }, - { text: "Trim Video", link: "/tools/trim-video" }, - { text: "Mute Video", link: "/tools/mute-video" }, - { text: "Video to GIF", link: "/tools/video-to-gif" }, - { text: "Resize Video", link: "/tools/resize-video" }, - { text: "Crop Video", link: "/tools/crop-video" }, - { text: "Rotate Video", link: "/tools/rotate-video" }, - { text: "Change FPS", link: "/tools/change-fps" }, - { text: "Video Color", link: "/tools/video-color" }, - { text: "Video Speed", link: "/tools/video-speed" }, - { text: "Reverse Video", link: "/tools/reverse-video" }, - { text: "Normalize Audio", link: "/tools/video-loudnorm" }, - { text: "Aspect Pad", link: "/tools/aspect-pad" }, - { text: "Blur Pad", link: "/tools/blur-pad" }, - { text: "Watermark Video", link: "/tools/watermark-video" }, - { text: "Stabilize Video", link: "/tools/stabilize-video" }, - { text: "GIF to Video", link: "/tools/gif-to-video" }, - { text: "Video to WebP", link: "/tools/video-to-webp" }, - { text: "Video to Frames", link: "/tools/video-to-frames" }, - { text: "Merge Videos", link: "/tools/merge-videos" }, - { text: "Replace Audio", link: "/tools/replace-audio" }, - { text: "Burn Subtitles", link: "/tools/burn-subtitles" }, - { text: "Embed Subtitles", link: "/tools/embed-subtitles" }, - { text: "Extract Subtitles", link: "/tools/extract-subtitles" }, - { text: "Images to Video", link: "/tools/images-to-video" }, - { text: "Clean Video Metadata", link: "/tools/video-metadata" }, - { text: "Auto Subtitles", link: "/tools/auto-subtitles" }, - { text: "Extract Audio", link: "/tools/extract-audio" }, + { text: "Convert Video", link: "/tools/video/convert-video" }, + { text: "Compress Video", link: "/tools/video/compress-video" }, + { text: "Trim Video", link: "/tools/video/trim-video" }, + { text: "Mute Video", link: "/tools/video/mute-video" }, + { text: "Video to GIF", link: "/tools/video/video-to-gif" }, + { text: "Resize Video", link: "/tools/video/resize-video" }, + { text: "Crop Video", link: "/tools/video/crop-video" }, + { text: "Rotate Video", link: "/tools/video/rotate-video" }, + { text: "Change FPS", link: "/tools/video/change-fps" }, + { text: "Video Color", link: "/tools/video/video-color" }, + { text: "Video Speed", link: "/tools/video/video-speed" }, + { text: "Reverse Video", link: "/tools/video/reverse-video" }, + { text: "Normalize Audio", link: "/tools/video/video-loudnorm" }, + { text: "Aspect Pad", link: "/tools/video/aspect-pad" }, + { text: "Blur Pad", link: "/tools/video/blur-pad" }, + { text: "Watermark Video", link: "/tools/video/watermark-video" }, + { text: "Stabilize Video", link: "/tools/video/stabilize-video" }, + { text: "GIF to Video", link: "/tools/video/gif-to-video" }, + { text: "Video to WebP", link: "/tools/video/video-to-webp" }, + { text: "Video to Frames", link: "/tools/video/video-to-frames" }, + { text: "Merge Videos", link: "/tools/video/merge-videos" }, + { text: "Replace Audio", link: "/tools/video/replace-audio" }, + { text: "Burn Subtitles", link: "/tools/video/burn-subtitles" }, + { text: "Embed Subtitles", link: "/tools/video/embed-subtitles" }, + { text: "Extract Subtitles", link: "/tools/video/extract-subtitles" }, + { text: "Images to Video", link: "/tools/video/images-to-video" }, + { text: "Clean Video Metadata", link: "/tools/video/video-metadata" }, + { text: "Auto Subtitles", link: "/tools/video/auto-subtitles" }, + { text: "Extract Audio", link: "/tools/video/extract-audio" }, ], }, { text: "Audio", items: [ - { text: "Convert Audio", link: "/tools/convert-audio" }, - { text: "Trim Audio", link: "/tools/trim-audio" }, - { text: "Volume Adjust", link: "/tools/volume-adjust" }, - { text: "Normalize Audio", link: "/tools/normalize-audio" }, - { text: "Fade Audio", link: "/tools/fade-audio" }, - { text: "Reverse Audio", link: "/tools/reverse-audio" }, - { text: "Audio Speed", link: "/tools/audio-speed" }, - { text: "Pitch Shift", link: "/tools/pitch-shift" }, - { text: "Audio Channels", link: "/tools/audio-channels" }, - { text: "Silence Removal", link: "/tools/silence-removal" }, - { text: "Noise Reduction", link: "/tools/noise-reduction" }, - { text: "Merge Audio", link: "/tools/merge-audio" }, - { text: "Split Audio", link: "/tools/split-audio" }, - { text: "Ringtone Maker", link: "/tools/ringtone-maker" }, - { text: "Waveform Image", link: "/tools/waveform-image" }, - { text: "Audio Metadata", link: "/tools/audio-metadata" }, - { text: "Transcribe Audio", link: "/tools/transcribe-audio" }, + { text: "Convert Audio", link: "/tools/audio/convert-audio" }, + { text: "Trim Audio", link: "/tools/audio/trim-audio" }, + { text: "Volume Adjust", link: "/tools/audio/volume-adjust" }, + { text: "Normalize Audio", link: "/tools/audio/normalize-audio" }, + { text: "Fade Audio", link: "/tools/audio/fade-audio" }, + { text: "Reverse Audio", link: "/tools/audio/reverse-audio" }, + { text: "Audio Speed", link: "/tools/audio/audio-speed" }, + { text: "Pitch Shift", link: "/tools/audio/pitch-shift" }, + { text: "Audio Channels", link: "/tools/audio/audio-channels" }, + { text: "Silence Removal", link: "/tools/audio/silence-removal" }, + { text: "Noise Reduction", link: "/tools/audio/noise-reduction" }, + { text: "Merge Audio", link: "/tools/audio/merge-audio" }, + { text: "Split Audio", link: "/tools/audio/split-audio" }, + { text: "Ringtone Maker", link: "/tools/audio/ringtone-maker" }, + { text: "Waveform Image", link: "/tools/audio/waveform-image" }, + { text: "Audio Metadata", link: "/tools/audio/audio-metadata" }, + { text: "Transcribe Audio", link: "/tools/audio/transcribe-audio" }, ], }, { text: "PDF & Documents", items: [ - { text: "PDF to Image", link: "/tools/pdf-to-image" }, - { text: "Merge PDFs", link: "/tools/merge-pdf" }, - { text: "Split PDF", link: "/tools/split-pdf" }, - { text: "Compress PDF", link: "/tools/compress-pdf" }, - { text: "Rotate PDF", link: "/tools/rotate-pdf" }, - { text: "Convert Document", link: "/tools/convert-document" }, - { text: "Convert Presentation", link: "/tools/convert-presentation" }, - { text: "Convert Spreadsheet", link: "/tools/convert-spreadsheet" }, - { text: "Excel to PDF", link: "/tools/excel-to-pdf" }, - { text: "Word to PDF", link: "/tools/word-to-pdf" }, - { text: "Extract Pages", link: "/tools/extract-pages" }, - { text: "Remove Pages", link: "/tools/remove-pages" }, - { text: "Organize PDF", link: "/tools/organize-pdf" }, - { text: "Protect PDF", link: "/tools/protect-pdf" }, - { text: "Unlock PDF", link: "/tools/unlock-pdf" }, - { text: "Repair PDF", link: "/tools/repair-pdf" }, - { text: "Web-Optimize PDF", link: "/tools/linearize-pdf" }, - { text: "Grayscale PDF", link: "/tools/grayscale-pdf" }, - { text: "PDF/A Convert", link: "/tools/pdfa-convert" }, - { text: "Crop PDF", link: "/tools/crop-pdf" }, - { text: "N-up PDF", link: "/tools/nup-pdf" }, - { text: "Booklet PDF", link: "/tools/booklet-pdf" }, - { text: "Watermark PDF", link: "/tools/watermark-pdf" }, - { text: "PDF Page Numbers", link: "/tools/pdf-page-numbers" }, - { text: "Flatten PDF", link: "/tools/flatten-pdf" }, - { text: "Redact PDF", link: "/tools/redact-pdf" }, - { text: "PDF to Text", link: "/tools/pdf-to-text" }, - { text: "PDF to Word", link: "/tools/pdf-to-word" }, - { text: "PDF Metadata", link: "/tools/pdf-metadata" }, - { text: "PowerPoint to PDF", link: "/tools/powerpoint-to-pdf" }, - { text: "HTML to PDF", link: "/tools/html-to-pdf" }, - { text: "Markdown to Word", link: "/tools/markdown-to-docx" }, - { text: "Markdown to HTML", link: "/tools/markdown-to-html" }, - { text: "Markdown to PDF", link: "/tools/markdown-to-pdf" }, - { text: "Convert EPUB", link: "/tools/epub-convert" }, - { text: "Convert to EPUB", link: "/tools/to-epub" }, - { text: "PDF OCR", link: "/tools/ocr-pdf" }, + { text: "PDF to Image", link: "/tools/pdf/pdf-to-image" }, + { text: "Merge PDFs", link: "/tools/pdf/merge-pdf" }, + { text: "Split PDF", link: "/tools/pdf/split-pdf" }, + { text: "Compress PDF", link: "/tools/pdf/compress-pdf" }, + { text: "Rotate PDF", link: "/tools/pdf/rotate-pdf" }, + { text: "Convert Document", link: "/tools/pdf/convert-document" }, + { text: "Convert Presentation", link: "/tools/pdf/convert-presentation" }, + { text: "Convert Spreadsheet", link: "/tools/pdf/convert-spreadsheet" }, + { text: "Excel to PDF", link: "/tools/pdf/excel-to-pdf" }, + { text: "Word to PDF", link: "/tools/pdf/word-to-pdf" }, + { text: "Extract Pages", link: "/tools/pdf/extract-pages" }, + { text: "Remove Pages", link: "/tools/pdf/remove-pages" }, + { text: "Organize PDF", link: "/tools/pdf/organize-pdf" }, + { text: "Protect PDF", link: "/tools/pdf/protect-pdf" }, + { text: "Unlock PDF", link: "/tools/pdf/unlock-pdf" }, + { text: "Repair PDF", link: "/tools/pdf/repair-pdf" }, + { text: "Web-Optimize PDF", link: "/tools/pdf/linearize-pdf" }, + { text: "Grayscale PDF", link: "/tools/pdf/grayscale-pdf" }, + { text: "PDF/A Convert", link: "/tools/pdf/pdfa-convert" }, + { text: "Crop PDF", link: "/tools/pdf/crop-pdf" }, + { text: "N-up PDF", link: "/tools/pdf/nup-pdf" }, + { text: "Booklet PDF", link: "/tools/pdf/booklet-pdf" }, + { text: "Watermark PDF", link: "/tools/pdf/watermark-pdf" }, + { text: "PDF Page Numbers", link: "/tools/pdf/pdf-page-numbers" }, + { text: "Flatten PDF", link: "/tools/pdf/flatten-pdf" }, + { text: "Redact PDF", link: "/tools/pdf/redact-pdf" }, + { text: "PDF to Text", link: "/tools/pdf/pdf-to-text" }, + { text: "PDF to Word", link: "/tools/pdf/pdf-to-word" }, + { text: "PDF Metadata", link: "/tools/pdf/pdf-metadata" }, + { text: "PowerPoint to PDF", link: "/tools/pdf/powerpoint-to-pdf" }, + { text: "HTML to PDF", link: "/tools/pdf/html-to-pdf" }, + { text: "Markdown to Word", link: "/tools/pdf/markdown-to-docx" }, + { text: "Markdown to HTML", link: "/tools/pdf/markdown-to-html" }, + { text: "Markdown to PDF", link: "/tools/pdf/markdown-to-pdf" }, + { text: "Convert EPUB", link: "/tools/pdf/epub-convert" }, + { text: "Convert to EPUB", link: "/tools/pdf/to-epub" }, + { text: "PDF OCR", link: "/tools/pdf/ocr-pdf" }, ], }, { text: "Data", items: [ - { text: "Chart Maker", link: "/tools/chart-maker" }, - { text: "CSV to Excel", link: "/tools/csv-excel" }, - { text: "CSV to JSON", link: "/tools/csv-json" }, - { text: "JSON to XML", link: "/tools/json-xml" }, - { text: "Split CSV", link: "/tools/split-csv" }, - { text: "Merge CSVs", link: "/tools/merge-csvs" }, - { text: "YAML / JSON", link: "/tools/yaml-json" }, - { text: "XML to CSV", link: "/tools/xml-to-csv" }, - { text: "Create ZIP", link: "/tools/create-zip" }, - { text: "Extract ZIP", link: "/tools/extract-zip" }, + { text: "Chart Maker", link: "/tools/data/chart-maker" }, + { text: "CSV to Excel", link: "/tools/data/csv-excel" }, + { text: "CSV to JSON", link: "/tools/data/csv-json" }, + { text: "JSON to XML", link: "/tools/data/json-xml" }, + { text: "Split CSV", link: "/tools/data/split-csv" }, + { text: "Merge CSVs", link: "/tools/data/merge-csvs" }, + { text: "YAML / JSON", link: "/tools/data/yaml-json" }, + { text: "XML to CSV", link: "/tools/data/xml-to-csv" }, + { text: "Create ZIP", link: "/tools/data/create-zip" }, + { text: "Extract ZIP", link: "/tools/data/extract-zip" }, ], }, ], diff --git a/apps/docs/api/ai.md b/apps/docs/api/ai.md index b9cb1a77..2b5cab83 100644 --- a/apps/docs/api/ai.md +++ b/apps/docs/api/ai.md @@ -240,7 +240,7 @@ Analyzes the image and applies automatic corrections for exposure, contrast, whi | `corrections.sharpness` | boolean | true | Apply sharpness correction | | `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) @@ -279,7 +279,7 @@ Fixes "fake transparent" PNGs where the background was removed but left behind f | `outputFormat` | `"png"` \| `"webp"` | `"png"` | Output image format | ```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 " \ -F "file=@fake-transparent.png" \ -F 'settings={"defringe":30,"outputFormat":"png"}' diff --git a/apps/docs/api/rest.md b/apps/docs/api/rest.md index a18ccbe5..c6b69b5e 100644 --- a/apps/docs/api/rest.md +++ b/apps/docs/api/rest.md @@ -25,7 +25,7 @@ curl -X POST http://localhost:1349/api/auth/login \ # Returns: {"token":""} # Use token -curl http://localhost:1349/api/v1/tools/resize \ +curl http://localhost:1349/api/v1/tools/image/resize \ -H "Authorization: Bearer " ``` @@ -42,7 +42,7 @@ curl -X POST http://localhost:1349/api/v1/api-keys \ # Returns: {"key":"si_<96 hex chars>","id":"...","name":"my-script"} # Use the key -curl http://localhost:1349/api/v1/tools/resize \ +curl http://localhost:1349/api/v1/tools/image/resize \ -H "Authorization: Bearer si_" ``` @@ -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). -**Endpoint:** `POST /api/v1/tools/html-to-image` +**Endpoint:** `POST /api/v1/tools/image/html-to-image` **Content-Type:** `application/json` @@ -346,7 +346,7 @@ Capture a webpage as an image. Unlike other tools, this endpoint accepts `applic **Example:** ```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 "Content-Type: application/json" \ -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 | |--------|------|-------------| -| `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/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/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/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-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-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/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/edit-metadata/inspect` | Read existing EXIF/IPTC/XMP metadata from an image | +| `POST` | `/api/v1/tools/image/strip-metadata/inspect` | Inspect metadata fields before stripping | +| `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/image/passport-photo/generate` | Phase 2: Crop, resize, and tile using cached analysis. No AI re-run. | +| `POST` | `/api/v1/tools/image/gif-tools/info` | Get GIF metadata (frame count, dimensions, duration) | +| `POST` | `/api/v1/tools/pdf/pdf-to-image/info` | Get PDF metadata (page count, dimensions) | +| `POST` | `/api/v1/tools/pdf/pdf-to-image/preview` | Generate a preview of a specific PDF page | +| `POST` | `/api/v1/tools/image/svg-to-raster/batch` | Batch convert multiple SVGs to raster | +| `POST` | `/api/v1/tools/image/image-enhancement/analyze` | Analyze image quality and return enhancement recommendations | +| `POST` | `/api/v1/tools/image/optimize-for-web/preview` | Lightweight preview for live parameter tuning. Returns optimized image with size headers. | ## Batch Processing Apply any tool to multiple files at once. Returns a ZIP archive. ```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 " \ -F "files=@a.jpg" \ -F "files=@b.jpg" \ diff --git a/apps/docs/guide/getting-started.md b/apps/docs/guide/getting-started.md index 0bc36f36..b1156421 100644 --- a/apps/docs/guide/getting-started.md +++ b/apps/docs/guide/getting-started.md @@ -139,7 +139,7 @@ Every file you process can be saved to your **Files** library. SnapOtter tracks Every tool is accessible via HTTP: ```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_" \ -F "file=@photo.jpg" \ -F 'settings={"width":800,"height":600,"fit":"cover"}' diff --git a/apps/docs/public/_redirects b/apps/docs/public/_redirects new file mode 100644 index 00000000..7f9b049b --- /dev/null +++ b/apps/docs/public/_redirects @@ -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 diff --git a/apps/docs/tools/audio-channels.md b/apps/docs/tools/audio/audio-channels.md similarity index 91% rename from apps/docs/tools/audio-channels.md rename to apps/docs/tools/audio/audio-channels.md index 95e72268..018344b0 100644 --- a/apps/docs/tools/audio-channels.md +++ b/apps/docs/tools/audio/audio-channels.md @@ -8,7 +8,7 @@ Convert audio between mono and stereo layouts, or swap the left and right channe ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"mode": "stereo-to-mono"}' diff --git a/apps/docs/tools/audio-metadata.md b/apps/docs/tools/audio/audio-metadata.md similarity index 90% rename from apps/docs/tools/audio-metadata.md rename to apps/docs/tools/audio/audio-metadata.md index c992131f..dcbf30b1 100644 --- a/apps/docs/tools/audio-metadata.md +++ b/apps/docs/tools/audio/audio-metadata.md @@ -8,7 +8,7 @@ View, edit, or strip audio metadata tags such as title, artist, and album (ID3 a ## 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. @@ -26,7 +26,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. Edit metadata tags: ```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" \ -F "file=@audio.mp3" \ -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: ```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" \ -F "file=@audio.mp3" \ -F 'settings={"strip": true}' diff --git a/apps/docs/tools/audio-speed.md b/apps/docs/tools/audio/audio-speed.md similarity index 91% rename from apps/docs/tools/audio-speed.md rename to apps/docs/tools/audio/audio-speed.md index a0dbe4ef..81aad290 100644 --- a/apps/docs/tools/audio-speed.md +++ b/apps/docs/tools/audio/audio-speed.md @@ -8,7 +8,7 @@ Speed up or slow down audio playback by applying a speed multiplier. ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"factor": 2}' diff --git a/apps/docs/tools/convert-audio.md b/apps/docs/tools/audio/convert-audio.md similarity index 91% rename from apps/docs/tools/convert-audio.md rename to apps/docs/tools/audio/convert-audio.md index 2d413ea0..502552d7 100644 --- a/apps/docs/tools/convert-audio.md +++ b/apps/docs/tools/audio/convert-audio.md @@ -8,7 +8,7 @@ Convert audio files between common formats including MP3, WAV, OGG, FLAC, and M4 ## 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. @@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"format": "flac", "bitrateKbps": 256}' diff --git a/apps/docs/tools/fade-audio.md b/apps/docs/tools/audio/fade-audio.md similarity index 91% rename from apps/docs/tools/fade-audio.md rename to apps/docs/tools/audio/fade-audio.md index d6362a9a..0d5c744c 100644 --- a/apps/docs/tools/fade-audio.md +++ b/apps/docs/tools/audio/fade-audio.md @@ -8,7 +8,7 @@ Add fade-in and fade-out effects to the beginning and end of an audio file. ## 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. @@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"fadeInS": 2, "fadeOutS": 3}' diff --git a/apps/docs/tools/merge-audio.md b/apps/docs/tools/audio/merge-audio.md similarity index 91% rename from apps/docs/tools/merge-audio.md rename to apps/docs/tools/audio/merge-audio.md index b9af04db..3ac7798a 100644 --- a/apps/docs/tools/merge-audio.md +++ b/apps/docs/tools/audio/merge-audio.md @@ -8,7 +8,7 @@ Combine two or more audio files into a single sequential track, concatenated in ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with multiple audio files and a JSON `settings` fiel ## Example Request ```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" \ -F "file=@intro.mp3" \ -F "file=@main.mp3" \ diff --git a/apps/docs/tools/noise-reduction.md b/apps/docs/tools/audio/noise-reduction.md similarity index 90% rename from apps/docs/tools/noise-reduction.md rename to apps/docs/tools/audio/noise-reduction.md index b766353b..9f005742 100644 --- a/apps/docs/tools/noise-reduction.md +++ b/apps/docs/tools/audio/noise-reduction.md @@ -8,7 +8,7 @@ Reduce background noise in an audio file using FFT-based denoising with selectab ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"strength": "strong"}' diff --git a/apps/docs/tools/normalize-audio.md b/apps/docs/tools/audio/normalize-audio.md similarity index 89% rename from apps/docs/tools/normalize-audio.md rename to apps/docs/tools/audio/normalize-audio.md index fb57610b..c56e447a 100644 --- a/apps/docs/tools/normalize-audio.md +++ b/apps/docs/tools/audio/normalize-audio.md @@ -8,7 +8,7 @@ Even out audio loudness to broadcast standard levels using EBU R128 normalizatio ## 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. @@ -19,7 +19,7 @@ This tool has no configurable parameters. It applies EBU R128 loudness normaliza ## Example Request ```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" \ -F "file=@audio.mp3" ``` diff --git a/apps/docs/tools/pitch-shift.md b/apps/docs/tools/audio/pitch-shift.md similarity index 91% rename from apps/docs/tools/pitch-shift.md rename to apps/docs/tools/audio/pitch-shift.md index 47e99098..a39ff129 100644 --- a/apps/docs/tools/pitch-shift.md +++ b/apps/docs/tools/audio/pitch-shift.md @@ -8,7 +8,7 @@ Raise or lower the pitch of an audio file by a number of semitones without chang ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"semitones": -5}' diff --git a/apps/docs/tools/reverse-audio.md b/apps/docs/tools/audio/reverse-audio.md similarity index 87% rename from apps/docs/tools/reverse-audio.md rename to apps/docs/tools/audio/reverse-audio.md index 44c24cb7..c7d67cd8 100644 --- a/apps/docs/tools/reverse-audio.md +++ b/apps/docs/tools/audio/reverse-audio.md @@ -8,7 +8,7 @@ Reverse an audio file so it plays backwards. ## 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. @@ -19,7 +19,7 @@ This tool has no configurable parameters. The entire audio file is reversed. ## Example Request ```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" \ -F "file=@audio.mp3" ``` diff --git a/apps/docs/tools/ringtone-maker.md b/apps/docs/tools/audio/ringtone-maker.md similarity index 90% rename from apps/docs/tools/ringtone-maker.md rename to apps/docs/tools/audio/ringtone-maker.md index 5d8f276a..922a2433 100644 --- a/apps/docs/tools/ringtone-maker.md +++ b/apps/docs/tools/audio/ringtone-maker.md @@ -8,7 +8,7 @@ Create a ringtone clip (.m4r) from any audio file by selecting a start time and ## 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. @@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"startS": 15, "durationS": 20}' diff --git a/apps/docs/tools/silence-removal.md b/apps/docs/tools/audio/silence-removal.md similarity index 92% rename from apps/docs/tools/silence-removal.md rename to apps/docs/tools/audio/silence-removal.md index 9734bbe6..2f14a994 100644 --- a/apps/docs/tools/silence-removal.md +++ b/apps/docs/tools/audio/silence-removal.md @@ -8,7 +8,7 @@ Detect and remove silent sections from an audio file based on a configurable thr ## 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. @@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"thresholdDb": -45, "minSilenceS": 1}' diff --git a/apps/docs/tools/split-audio.md b/apps/docs/tools/audio/split-audio.md similarity index 91% rename from apps/docs/tools/split-audio.md rename to apps/docs/tools/audio/split-audio.md index 9bd2bfff..17a8b05b 100644 --- a/apps/docs/tools/split-audio.md +++ b/apps/docs/tools/audio/split-audio.md @@ -8,7 +8,7 @@ Split an audio file into segments by fixed time intervals, equal parts, or autom ## 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. @@ -27,7 +27,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. Split into 30-second segments: ```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" \ -F "file=@audio.mp3" \ -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: ```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" \ -F "file=@audio.mp3" \ -F 'settings={"mode": "silence", "thresholdDb": -35, "minSilenceS": 0.5}' diff --git a/apps/docs/tools/transcribe-audio.md b/apps/docs/tools/audio/transcribe-audio.md similarity index 93% rename from apps/docs/tools/transcribe-audio.md rename to apps/docs/tools/audio/transcribe-audio.md index 44269dc5..c531041c 100644 --- a/apps/docs/tools/transcribe-audio.md +++ b/apps/docs/tools/audio/transcribe-audio.md @@ -8,7 +8,7 @@ Convert speech to text using AI-powered transcription (faster-whisper). Supports ## 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. @@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"language": "en", "outputFormat": "srt"}' diff --git a/apps/docs/tools/trim-audio.md b/apps/docs/tools/audio/trim-audio.md similarity index 91% rename from apps/docs/tools/trim-audio.md rename to apps/docs/tools/audio/trim-audio.md index 0cc4d0b3..92e7da30 100644 --- a/apps/docs/tools/trim-audio.md +++ b/apps/docs/tools/audio/trim-audio.md @@ -8,7 +8,7 @@ Cut a section out of an audio file by specifying start and end times in seconds. ## 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. @@ -22,7 +22,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"startS": 10, "endS": 45}' diff --git a/apps/docs/tools/volume-adjust.md b/apps/docs/tools/audio/volume-adjust.md similarity index 90% rename from apps/docs/tools/volume-adjust.md rename to apps/docs/tools/audio/volume-adjust.md index 97c1f201..1559d44b 100644 --- a/apps/docs/tools/volume-adjust.md +++ b/apps/docs/tools/audio/volume-adjust.md @@ -8,7 +8,7 @@ Increase or decrease the volume of an audio file by applying a fixed gain in dec ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"gainDb": 6}' diff --git a/apps/docs/tools/waveform-image.md b/apps/docs/tools/audio/waveform-image.md similarity index 91% rename from apps/docs/tools/waveform-image.md rename to apps/docs/tools/audio/waveform-image.md index bb269c2d..3d66b3f7 100644 --- a/apps/docs/tools/waveform-image.md +++ b/apps/docs/tools/audio/waveform-image.md @@ -8,7 +8,7 @@ Generate a waveform visualization as a PNG image from an audio file, with config ## 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. @@ -23,7 +23,7 @@ Accepts multipart form data with an audio file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@audio.mp3" \ -F 'settings={"width": 1920, "height": 400, "color": "#e07832"}' diff --git a/apps/docs/tools/chart-maker.md b/apps/docs/tools/data/chart-maker.md similarity index 93% rename from apps/docs/tools/chart-maker.md rename to apps/docs/tools/data/chart-maker.md index 158b276d..f0f0d8e8 100644 --- a/apps/docs/tools/chart-maker.md +++ b/apps/docs/tools/data/chart-maker.md @@ -8,7 +8,7 @@ Create bar, line, or pie charts from CSV or JSON data. Returns a PNG image of th ## 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. @@ -24,7 +24,7 @@ Accepts multipart form data with a CSV or JSON file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@sales.csv" \ -F 'settings={"kind": "line", "title": "Monthly Sales", "width": 960, "height": 540}' diff --git a/apps/docs/tools/create-zip.md b/apps/docs/tools/data/create-zip.md similarity index 91% rename from apps/docs/tools/create-zip.md rename to apps/docs/tools/data/create-zip.md index b3140c50..0a475a38 100644 --- a/apps/docs/tools/create-zip.md +++ b/apps/docs/tools/data/create-zip.md @@ -8,7 +8,7 @@ Bundle multiple files of any type into a single ZIP archive. Duplicate filenames ## 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. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload 2--50 files of any type to bund ## Example Request ```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" \ -F "file=@report.pdf" \ -F "file=@data.csv" \ diff --git a/apps/docs/tools/csv-excel.md b/apps/docs/tools/data/csv-excel.md similarity index 89% rename from apps/docs/tools/csv-excel.md rename to apps/docs/tools/data/csv-excel.md index 446d44ce..818eb57d 100644 --- a/apps/docs/tools/csv-excel.md +++ b/apps/docs/tools/data/csv-excel.md @@ -8,7 +8,7 @@ Convert between CSV and Excel (XLSX) formats in both directions. Upload a CSV or ## 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. @@ -23,7 +23,7 @@ Accepts multipart form data with a CSV, TSV, or XLSX file and a JSON `settings` CSV to Excel: ```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" \ -F "file=@data.csv" \ -F 'settings={"sheet": 1}' @@ -32,7 +32,7 @@ curl -X POST http://localhost:1349/api/v1/tools/csv-excel \ Excel to CSV: ```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" \ -F "file=@report.xlsx" \ -F 'settings={"sheet": 2}' diff --git a/apps/docs/tools/csv-json.md b/apps/docs/tools/data/csv-json.md similarity index 90% rename from apps/docs/tools/csv-json.md rename to apps/docs/tools/data/csv-json.md index 4a0b2366..d149e873 100644 --- a/apps/docs/tools/csv-json.md +++ b/apps/docs/tools/data/csv-json.md @@ -8,7 +8,7 @@ Convert between CSV and JSON formats in both directions. Upload a CSV or TSV fil ## 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. @@ -23,7 +23,7 @@ Accepts multipart form data with a CSV, TSV, or JSON file and a JSON `settings` CSV to JSON: ```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" \ -F "file=@users.csv" \ -F 'settings={"pretty": true}' @@ -32,7 +32,7 @@ curl -X POST http://localhost:1349/api/v1/tools/csv-json \ JSON to CSV: ```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" \ -F "file=@users.json" \ -F 'settings={}' diff --git a/apps/docs/tools/extract-zip.md b/apps/docs/tools/data/extract-zip.md similarity index 92% rename from apps/docs/tools/extract-zip.md rename to apps/docs/tools/data/extract-zip.md index dce284a0..d5a568fb 100644 --- a/apps/docs/tools/extract-zip.md +++ b/apps/docs/tools/data/extract-zip.md @@ -8,7 +8,7 @@ Safely extract files from a ZIP archive. Single-file archives return the contain ## 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. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a `.zip` file to extract. ## Example Request ```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" \ -F "file=@archive.zip" ``` diff --git a/apps/docs/tools/json-xml.md b/apps/docs/tools/data/json-xml.md similarity index 89% rename from apps/docs/tools/json-xml.md rename to apps/docs/tools/data/json-xml.md index 91e9f038..8b386126 100644 --- a/apps/docs/tools/json-xml.md +++ b/apps/docs/tools/data/json-xml.md @@ -8,7 +8,7 @@ Convert between JSON and XML formats in both directions. Upload a JSON file to g ## 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. @@ -23,7 +23,7 @@ Accepts multipart form data with a JSON or XML file and a JSON `settings` field. JSON to XML: ```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" \ -F "file=@config.json" \ -F 'settings={"pretty": true}' @@ -32,7 +32,7 @@ curl -X POST http://localhost:1349/api/v1/tools/json-xml \ XML to JSON: ```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" \ -F "file=@config.xml" \ -F 'settings={"pretty": true}' diff --git a/apps/docs/tools/merge-csvs.md b/apps/docs/tools/data/merge-csvs.md similarity index 92% rename from apps/docs/tools/merge-csvs.md rename to apps/docs/tools/data/merge-csvs.md index a804a758..96ce7fc3 100644 --- a/apps/docs/tools/merge-csvs.md +++ b/apps/docs/tools/data/merge-csvs.md @@ -8,7 +8,7 @@ Combine multiple CSV or TSV files with matching columns into a single merged fil ## 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. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload 2--20 CSV or TSV files with mat ## Example Request ```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" \ -F "file=@january.csv" \ -F "file=@february.csv" \ diff --git a/apps/docs/tools/split-csv.md b/apps/docs/tools/data/split-csv.md similarity index 93% rename from apps/docs/tools/split-csv.md rename to apps/docs/tools/data/split-csv.md index 6c310ea7..a36f4e2c 100644 --- a/apps/docs/tools/split-csv.md +++ b/apps/docs/tools/data/split-csv.md @@ -8,7 +8,7 @@ Split a large CSV or TSV file into smaller files by row count. Returns a ZIP arc ## 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. @@ -22,7 +22,7 @@ Accepts multipart form data with a CSV file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@large-dataset.csv" \ -F 'settings={"rowsPerFile": 500, "keepHeader": true}' diff --git a/apps/docs/tools/xml-to-csv.md b/apps/docs/tools/data/xml-to-csv.md similarity index 87% rename from apps/docs/tools/xml-to-csv.md rename to apps/docs/tools/data/xml-to-csv.md index 39136165..6d1d6179 100644 --- a/apps/docs/tools/xml-to-csv.md +++ b/apps/docs/tools/data/xml-to-csv.md @@ -8,7 +8,7 @@ Extract repeating elements from an XML file into a flat CSV table. The tool auto ## 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. @@ -19,7 +19,7 @@ This tool has no configurable parameters. The repeating element is auto-detected ## Example Request ```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" \ -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. - 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. -- 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. diff --git a/apps/docs/tools/yaml-json.md b/apps/docs/tools/data/yaml-json.md similarity index 87% rename from apps/docs/tools/yaml-json.md rename to apps/docs/tools/data/yaml-json.md index a8607225..c0f2e8d1 100644 --- a/apps/docs/tools/yaml-json.md +++ b/apps/docs/tools/data/yaml-json.md @@ -8,7 +8,7 @@ Convert between YAML and JSON formats in both directions. Upload a YAML file to ## 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. @@ -21,7 +21,7 @@ This tool has no configurable parameters. The conversion direction is determined YAML to JSON: ```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" \ -F "file=@config.yaml" ``` @@ -29,7 +29,7 @@ curl -X POST http://localhost:1349/api/v1/tools/yaml-json \ JSON to YAML: ```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" \ -F "file=@config.json" ``` diff --git a/apps/docs/tools/adjust-colors.md b/apps/docs/tools/image/adjust-colors.md similarity index 93% rename from apps/docs/tools/adjust-colors.md rename to apps/docs/tools/image/adjust-colors.md index aca2b424..a96fe4b0 100644 --- a/apps/docs/tools/adjust-colors.md +++ b/apps/docs/tools/image/adjust-colors.md @@ -8,7 +8,7 @@ Comprehensive color adjustment tool combining brightness, contrast, exposure, sa ## 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. @@ -32,7 +32,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"temperature": 40, "saturation": -15, "contrast": 10, "effect": "sepia"}' diff --git a/apps/docs/tools/ai-canvas-expand.md b/apps/docs/tools/image/ai-canvas-expand.md similarity index 95% rename from apps/docs/tools/ai-canvas-expand.md rename to apps/docs/tools/image/ai-canvas-expand.md index daa846f5..ca4032a7 100644 --- a/apps/docs/tools/ai-canvas-expand.md +++ b/apps/docs/tools/image/ai-canvas-expand.md @@ -4,7 +4,7 @@ Expand the canvas of an image with AI-powered fill (outpainting). Extends the im ## 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) @@ -28,7 +28,7 @@ At least one extend direction must be greater than 0. ## Example Request ```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 'settings={"extendTop":200,"extendBottom":200,"extendLeft":100,"extendRight":100,"tier":"balanced"}' ``` diff --git a/apps/docs/tools/background-replace.md b/apps/docs/tools/image/background-replace.md similarity index 94% rename from apps/docs/tools/background-replace.md rename to apps/docs/tools/image/background-replace.md index 55ee767f..68f6e612 100644 --- a/apps/docs/tools/background-replace.md +++ b/apps/docs/tools/image/background-replace.md @@ -8,7 +8,7 @@ Replace the background of an image with a solid color or gradient. The AI model ## 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. @@ -27,7 +27,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -F 'settings={"backgroundType": "color", "color": "#2563eb", "feather": 2}' diff --git a/apps/docs/tools/barcode-generate.md b/apps/docs/tools/image/barcode-generate.md similarity index 93% rename from apps/docs/tools/barcode-generate.md rename to apps/docs/tools/image/barcode-generate.md index 13b4b88a..3f991b8b 100644 --- a/apps/docs/tools/barcode-generate.md +++ b/apps/docs/tools/image/barcode-generate.md @@ -8,7 +8,7 @@ Generate barcode images from text input. Supports Code 128, EAN-13, UPC-A, Code ## 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. @@ -24,7 +24,7 @@ Accepts an `application/json` body (not multipart). The barcode is generated fro ## Example Request ```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 "Content-Type: application/json" \ -d '{"text": "5901234123457", "type": "ean13", "scale": 4}' diff --git a/apps/docs/tools/barcode-read.md b/apps/docs/tools/image/barcode-read.md similarity index 96% rename from apps/docs/tools/barcode-read.md rename to apps/docs/tools/image/barcode-read.md index 7c180cbd..837006a9 100644 --- a/apps/docs/tools/barcode-read.md +++ b/apps/docs/tools/image/barcode-read.md @@ -8,7 +8,7 @@ Scan uploaded images for all types of barcodes and QR codes. Returns decoded tex ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with an image file and an optional JSON `settings` f ## Example Request ```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" \ -F "file=@receipt.jpg" \ -F 'settings={"tryHarder": true}' diff --git a/apps/docs/tools/beautify.md b/apps/docs/tools/image/beautify.md similarity index 96% rename from apps/docs/tools/beautify.md rename to apps/docs/tools/image/beautify.md index 524fd944..2e3b24ca 100644 --- a/apps/docs/tools/beautify.md +++ b/apps/docs/tools/image/beautify.md @@ -4,7 +4,7 @@ Add gradient backgrounds, device frames, shadows, watermarks, and social media s ## API Endpoint -`POST /api/v1/tools/beautify` +`POST /api/v1/tools/image/beautify` ## Parameters @@ -33,7 +33,7 @@ Add gradient backgrounds, device frames, shadows, watermarks, and social media s ## Example Request ```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 '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 ```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 "backgroundImage=@bg-texture.jpg" \ -F 'settings={"backgroundType":"image","padding":80,"borderRadius":16,"shadowPreset":"dramatic"}' diff --git a/apps/docs/tools/blur-background.md b/apps/docs/tools/image/blur-background.md similarity index 93% rename from apps/docs/tools/blur-background.md rename to apps/docs/tools/image/blur-background.md index a95e48cb..f6b24e62 100644 --- a/apps/docs/tools/blur-background.md +++ b/apps/docs/tools/image/blur-background.md @@ -8,7 +8,7 @@ Blur the background of an image while keeping the subject sharp. The AI model is ## 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. @@ -23,7 +23,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -F 'settings={"intensity": 75, "feather": 3}' diff --git a/apps/docs/tools/blur-faces.md b/apps/docs/tools/image/blur-faces.md similarity index 95% rename from apps/docs/tools/blur-faces.md rename to apps/docs/tools/image/blur-faces.md index be54ba72..1d378de2 100644 --- a/apps/docs/tools/blur-faces.md +++ b/apps/docs/tools/image/blur-faces.md @@ -4,7 +4,7 @@ Auto-detect and blur faces in images using AI-powered face detection (MediaPipe) ## 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) @@ -21,7 +21,7 @@ Auto-detect and blur faces in images using AI-powered face detection (MediaPipe) ## Example Request ```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 'settings={"blurRadius":40,"sensitivity":0.3}' ``` diff --git a/apps/docs/tools/border.md b/apps/docs/tools/image/border.md similarity index 95% rename from apps/docs/tools/border.md rename to apps/docs/tools/image/border.md index 5ac7d77a..54bb58a6 100644 --- a/apps/docs/tools/border.md +++ b/apps/docs/tools/image/border.md @@ -4,7 +4,7 @@ Add borders, padding, rounded corners, and drop shadows to images. The tool appl ## API Endpoint -`POST /api/v1/tools/border` +`POST /api/v1/tools/image/border` ## Parameters @@ -25,7 +25,7 @@ Add borders, padding, rounded corners, and drop shadows to images. The tool appl ## Example Request ```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 'settings={"borderWidth":20,"borderColor":"#333333","cornerRadius":16,"shadow":true,"shadowBlur":25,"shadowOpacity":50}' ``` diff --git a/apps/docs/tools/bulk-rename.md b/apps/docs/tools/image/bulk-rename.md similarity index 92% rename from apps/docs/tools/bulk-rename.md rename to apps/docs/tools/image/bulk-rename.md index 09917bfa..0d0d6504 100644 --- a/apps/docs/tools/bulk-rename.md +++ b/apps/docs/tools/image/bulk-rename.md @@ -8,7 +8,7 @@ Rename multiple files using a pattern template with placeholders for index, padd ## 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. @@ -32,7 +32,7 @@ The original file extension is always preserved. ## Example Request ```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" \ -F "file=@photo1.jpg" \ -F "file=@photo2.jpg" \ @@ -45,7 +45,7 @@ This produces: `vacation-1.jpg`, `vacation-2.jpg`, `vacation-3.jpg` Using original filename: ```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" \ -F "file=@IMG_001.jpg" \ -F "file=@IMG_002.jpg" \ diff --git a/apps/docs/tools/circle-crop.md b/apps/docs/tools/image/circle-crop.md similarity index 94% rename from apps/docs/tools/circle-crop.md rename to apps/docs/tools/image/circle-crop.md index 39c71478..8e98d822 100644 --- a/apps/docs/tools/circle-crop.md +++ b/apps/docs/tools/image/circle-crop.md @@ -8,7 +8,7 @@ Crop an image to a centered circle with transparent corners. Supports adjustable ## 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. @@ -27,7 +27,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -F 'settings={"zoom": 1.2, "borderWidth": 4, "borderColor": "#333333"}' diff --git a/apps/docs/tools/collage.md b/apps/docs/tools/image/collage.md similarity index 97% rename from apps/docs/tools/collage.md rename to apps/docs/tools/image/collage.md index 8dda067e..77aed410 100644 --- a/apps/docs/tools/collage.md +++ b/apps/docs/tools/image/collage.md @@ -4,7 +4,7 @@ Combine multiple images into beautiful grid collages with 25+ templates. Support ## API Endpoint -`POST /api/v1/tools/collage` +`POST /api/v1/tools/image/collage` ## Parameters @@ -55,7 +55,7 @@ Combine multiple images into beautiful grid collages with 25+ templates. Support ## Example Request ```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=@photo2.jpg" \ -F "file=@photo3.jpg" \ diff --git a/apps/docs/tools/color-blindness.md b/apps/docs/tools/image/color-blindness.md similarity index 95% rename from apps/docs/tools/color-blindness.md rename to apps/docs/tools/image/color-blindness.md index 9483203d..f58e97a8 100644 --- a/apps/docs/tools/color-blindness.md +++ b/apps/docs/tools/image/color-blindness.md @@ -8,7 +8,7 @@ Simulate color vision deficiency (CVD) to preview how images appear to people wi ## 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. @@ -34,7 +34,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@design.png" \ -F 'settings={"simulationType": "deuteranopia"}' diff --git a/apps/docs/tools/color-palette.md b/apps/docs/tools/image/color-palette.md similarity index 94% rename from apps/docs/tools/color-palette.md rename to apps/docs/tools/image/color-palette.md index 88680e72..b43d659c 100644 --- a/apps/docs/tools/color-palette.md +++ b/apps/docs/tools/image/color-palette.md @@ -8,7 +8,7 @@ Extract the dominant colors from an image and return them as hex color values. U ## 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. @@ -23,7 +23,7 @@ This tool has no configurable parameters. Simply upload the image file. ## Example Request ```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" \ -F "file=@photo.jpg" ``` diff --git a/apps/docs/tools/colorize.md b/apps/docs/tools/image/colorize.md similarity index 95% rename from apps/docs/tools/colorize.md rename to apps/docs/tools/image/colorize.md index 87ddcdcc..135dc04d 100644 --- a/apps/docs/tools/colorize.md +++ b/apps/docs/tools/image/colorize.md @@ -4,7 +4,7 @@ Convert black-and-white or grayscale photos to full color using AI (DDColor mode ## 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) @@ -21,7 +21,7 @@ Convert black-and-white or grayscale photos to full color using AI (DDColor mode ## Example Request ```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 'settings={"intensity":0.9,"model":"auto"}' ``` diff --git a/apps/docs/tools/compare.md b/apps/docs/tools/image/compare.md similarity index 95% rename from apps/docs/tools/compare.md rename to apps/docs/tools/image/compare.md index 8aae29cb..e5080d02 100644 --- a/apps/docs/tools/compare.md +++ b/apps/docs/tools/image/compare.md @@ -8,7 +8,7 @@ Upload two images to compute a pixel-level difference map and a numerical simila ## 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. @@ -24,7 +24,7 @@ This tool has no configurable parameters. Upload exactly two image files. ## Example Request ```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" \ -F "file=@original.jpg" \ -F "file=@modified.jpg" diff --git a/apps/docs/tools/compose.md b/apps/docs/tools/image/compose.md similarity index 94% rename from apps/docs/tools/compose.md rename to apps/docs/tools/image/compose.md index fb29d837..3046d855 100644 --- a/apps/docs/tools/compose.md +++ b/apps/docs/tools/image/compose.md @@ -8,7 +8,7 @@ Layer an overlay image on top of a base image with configurable position, opacit ## 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. @@ -46,7 +46,7 @@ Accepts multipart form data with **two** image files and a JSON `settings` field ## Example Request ```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" \ -F "file=@background.jpg" \ -F "overlay=@graphic.png" \ @@ -56,7 +56,7 @@ curl -X POST http://localhost:1349/api/v1/tools/compose \ Using multiply blend mode: ```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" \ -F "file=@photo.jpg" \ -F "overlay=@texture.jpg" \ diff --git a/apps/docs/tools/compress.md b/apps/docs/tools/image/compress.md similarity index 91% rename from apps/docs/tools/compress.md rename to apps/docs/tools/image/compress.md index 3fe23498..864c350f 100644 --- a/apps/docs/tools/compress.md +++ b/apps/docs/tools/image/compress.md @@ -8,7 +8,7 @@ Reduce image file size by specifying a quality level or a target file size in ki ## 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. @@ -25,7 +25,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. Compress to quality 60: ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"mode": "targetSize", "targetSizeKb": 200}' diff --git a/apps/docs/tools/content-aware-resize.md b/apps/docs/tools/image/content-aware-resize.md similarity index 94% rename from apps/docs/tools/content-aware-resize.md rename to apps/docs/tools/image/content-aware-resize.md index 401ac506..e43f59e3 100644 --- a/apps/docs/tools/content-aware-resize.md +++ b/apps/docs/tools/image/content-aware-resize.md @@ -4,7 +4,7 @@ Seam carving resize that intelligently removes or adds pixels along paths of lea ## API Endpoint -`POST /api/v1/tools/content-aware-resize` +`POST /api/v1/tools/image/content-aware-resize` **Processing:** Synchronous (returns result directly) @@ -27,7 +27,7 @@ At least one of `width`, `height`, or `square` must be specified. ## Example Request ```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 'settings={"width":800,"protectFaces":true}' ``` diff --git a/apps/docs/tools/convert.md b/apps/docs/tools/image/convert.md similarity index 93% rename from apps/docs/tools/convert.md rename to apps/docs/tools/image/convert.md index aacbfe98..59f1f213 100644 --- a/apps/docs/tools/convert.md +++ b/apps/docs/tools/image/convert.md @@ -8,7 +8,7 @@ Convert images between formats. Supports common web formats as well as specializ ## 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. @@ -42,7 +42,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. Convert to WebP: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"format": "webp", "quality": 85}' @@ -51,7 +51,7 @@ curl -X POST http://localhost:1349/api/v1/tools/convert \ Convert to PNG (lossless): ```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" \ -F "file=@photo.jpg" \ -F 'settings={"format": "png"}' diff --git a/apps/docs/tools/crop.md b/apps/docs/tools/image/crop.md similarity index 92% rename from apps/docs/tools/crop.md rename to apps/docs/tools/image/crop.md index 438dd84d..e4855349 100644 --- a/apps/docs/tools/crop.md +++ b/apps/docs/tools/image/crop.md @@ -8,7 +8,7 @@ Crop images by defining a rectangular region using position and size. Supports b ## 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. @@ -25,7 +25,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"left": 10, "top": 10, "width": 80, "height": 80, "unit": "percent"}' diff --git a/apps/docs/tools/duotone.md b/apps/docs/tools/image/duotone.md similarity index 93% rename from apps/docs/tools/duotone.md rename to apps/docs/tools/image/duotone.md index e499f4b6..f003f157 100644 --- a/apps/docs/tools/duotone.md +++ b/apps/docs/tools/image/duotone.md @@ -8,7 +8,7 @@ Apply a two-color duotone effect to an image. The image is converted to grayscal ## 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. @@ -23,7 +23,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -F 'settings={"shadow": "#0f172a", "highlight": "#f97316", "intensity": 80}' diff --git a/apps/docs/tools/edit-metadata.md b/apps/docs/tools/image/edit-metadata.md similarity index 90% rename from apps/docs/tools/edit-metadata.md rename to apps/docs/tools/image/edit-metadata.md index 443e5fbd..da5084b1 100644 --- a/apps/docs/tools/edit-metadata.md +++ b/apps/docs/tools/image/edit-metadata.md @@ -10,13 +10,13 @@ Edit image metadata fields including EXIF, IPTC, GPS coordinates, dates, and key ### 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. ### 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. @@ -52,7 +52,7 @@ Returns the full metadata from the image via ExifTool as JSON. Does not modify t Set author and copyright: ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" ``` diff --git a/apps/docs/tools/enhance-faces.md b/apps/docs/tools/image/enhance-faces.md similarity index 95% rename from apps/docs/tools/enhance-faces.md rename to apps/docs/tools/image/enhance-faces.md index eaff2c35..afbfedde 100644 --- a/apps/docs/tools/enhance-faces.md +++ b/apps/docs/tools/image/enhance-faces.md @@ -4,7 +4,7 @@ Restore and enhance faces in images using AI models (GFPGAN/CodeFormer). ## 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) @@ -23,7 +23,7 @@ Restore and enhance faces in images using AI models (GFPGAN/CodeFormer). ## Example Request ```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 'settings={"model":"codeformer","strength":0.7,"onlyCenterFace":false}' ``` diff --git a/apps/docs/tools/erase-object.md b/apps/docs/tools/image/erase-object.md similarity index 94% rename from apps/docs/tools/erase-object.md rename to apps/docs/tools/image/erase-object.md index 2a0d0659..fa48f7fa 100644 --- a/apps/docs/tools/erase-object.md +++ b/apps/docs/tools/image/erase-object.md @@ -4,7 +4,7 @@ Remove unwanted objects from images using AI inpainting (LaMa model). Accepts an ## 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) @@ -22,7 +22,7 @@ Remove unwanted objects from images using AI inpainting (LaMa model). Accepts an ## Example Request ```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 "mask=@mask.png" \ -F "format=png" \ diff --git a/apps/docs/tools/favicon.md b/apps/docs/tools/image/favicon.md similarity index 94% rename from apps/docs/tools/favicon.md rename to apps/docs/tools/image/favicon.md index 12dc8c73..43723b04 100644 --- a/apps/docs/tools/favicon.md +++ b/apps/docs/tools/image/favicon.md @@ -8,7 +8,7 @@ Generate a complete set of favicon and app icon files from a source image. Produ ## 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. @@ -37,7 +37,7 @@ For each input image, the following files are produced: Single source image: ```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" \ -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): ```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" \ -F "file=@logo-light.png" \ -F "file=@logo-dark.png" diff --git a/apps/docs/tools/find-duplicates.md b/apps/docs/tools/image/find-duplicates.md similarity index 97% rename from apps/docs/tools/find-duplicates.md rename to apps/docs/tools/image/find-duplicates.md index 650d1fd7..384d7944 100644 --- a/apps/docs/tools/find-duplicates.md +++ b/apps/docs/tools/image/find-duplicates.md @@ -8,7 +8,7 @@ Upload multiple images to detect duplicates and near-duplicates using perceptual ## 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. @@ -25,7 +25,7 @@ Upload at least 2 image files in the multipart request (all using the `file` fie ## Example Request ```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" \ -F "file=@photo1.jpg" \ -F "file=@photo2.jpg" \ diff --git a/apps/docs/tools/gif-tools.md b/apps/docs/tools/image/gif-tools.md similarity index 91% rename from apps/docs/tools/gif-tools.md rename to apps/docs/tools/image/gif-tools.md index 1e25fd63..ee25d6b1 100644 --- a/apps/docs/tools/gif-tools.md +++ b/apps/docs/tools/image/gif-tools.md @@ -4,7 +4,7 @@ Resize, optimize, change speed, reverse, extract frames, and rotate animated GIF ## API Endpoint -`POST /api/v1/tools/gif-tools` +`POST /api/v1/tools/image/gif-tools` ## Parameters @@ -60,7 +60,7 @@ Resize, optimize, change speed, reverse, extract frames, and rotate animated GIF ### Resize ```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 'settings={"mode":"resize","percentage":50}' ``` @@ -68,7 +68,7 @@ curl -X POST http://localhost:13490/api/v1/tools/gif-tools \ ### Optimize ```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 'settings={"mode":"optimize","colors":128,"effort":9}' ``` @@ -76,7 +76,7 @@ curl -X POST http://localhost:13490/api/v1/tools/gif-tools \ ### Speed Up ```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 'settings={"mode":"speed","speedFactor":2.0}' ``` @@ -84,7 +84,7 @@ curl -X POST http://localhost:13490/api/v1/tools/gif-tools \ ### Extract Single Frame ```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 '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 -`POST /api/v1/tools/gif-tools/info` +`POST /api/v1/tools/image/gif-tools/info` Returns metadata about an animated GIF without processing it. ### Info Request ```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" ``` diff --git a/apps/docs/tools/gif-webp.md b/apps/docs/tools/image/gif-webp.md similarity index 93% rename from apps/docs/tools/gif-webp.md rename to apps/docs/tools/image/gif-webp.md index 1cec40e6..1cebe744 100644 --- a/apps/docs/tools/gif-webp.md +++ b/apps/docs/tools/image/gif-webp.md @@ -8,7 +8,7 @@ Convert animated GIF files to WebP and vice versa, preserving all frames and ani ## 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. @@ -23,7 +23,7 @@ Accepts multipart form data with a GIF or WebP file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@animation.gif" \ -F 'settings={"quality": 85, "resizePercent": 50}' diff --git a/apps/docs/tools/histogram.md b/apps/docs/tools/image/histogram.md similarity index 95% rename from apps/docs/tools/histogram.md rename to apps/docs/tools/image/histogram.md index 6d3423fc..9dbc8b3c 100644 --- a/apps/docs/tools/histogram.md +++ b/apps/docs/tools/image/histogram.md @@ -8,7 +8,7 @@ Generate an RGB histogram chart from an image. Returns a PNG histogram image alo ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -F 'settings={"scale": "linear"}' diff --git a/apps/docs/tools/html-to-image.md b/apps/docs/tools/image/html-to-image.md similarity index 94% rename from apps/docs/tools/html-to-image.md rename to apps/docs/tools/image/html-to-image.md index d328d315..92342f04 100644 --- a/apps/docs/tools/html-to-image.md +++ b/apps/docs/tools/image/html-to-image.md @@ -8,7 +8,7 @@ Capture a webpage URL or raw HTML content as a screenshot image. Supports device ## 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. @@ -41,7 +41,7 @@ Either `url` or `html` must be provided, but not both. Capture a webpage: ```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 "Content-Type: application/json" \ -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: ```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 "Content-Type: application/json" \ -d '{"html": "

Hello

", "format": "png"}' diff --git a/apps/docs/tools/image-enhancement.md b/apps/docs/tools/image/image-enhancement.md similarity index 92% rename from apps/docs/tools/image-enhancement.md rename to apps/docs/tools/image/image-enhancement.md index d044950f..a0fd10e5 100644 --- a/apps/docs/tools/image-enhancement.md +++ b/apps/docs/tools/image/image-enhancement.md @@ -4,7 +4,7 @@ One-click auto-improve with smart analysis. Analyzes the image and applies expos ## API Endpoint -`POST /api/v1/tools/image-enhancement` +`POST /api/v1/tools/image/image-enhancement` **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 ```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 '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 -`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. @@ -65,7 +65,7 @@ Analyzes an image and returns correction recommendations without applying them. ### Example Request ```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" ``` diff --git a/apps/docs/tools/image-pad.md b/apps/docs/tools/image/image-pad.md similarity index 95% rename from apps/docs/tools/image-pad.md rename to apps/docs/tools/image/image-pad.md index d1ba8225..ff051be4 100644 --- a/apps/docs/tools/image-pad.md +++ b/apps/docs/tools/image/image-pad.md @@ -8,7 +8,7 @@ Pad an image to a target aspect ratio by adding a solid color, transparent, or b ## 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. @@ -26,7 +26,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -F 'settings={"target": "16:9", "background": "blur", "padding": 5}' diff --git a/apps/docs/tools/image-to-base64.md b/apps/docs/tools/image/image-to-base64.md similarity index 94% rename from apps/docs/tools/image-to-base64.md rename to apps/docs/tools/image/image-to-base64.md index f358cb7e..a74c4f96 100644 --- a/apps/docs/tools/image-to-base64.md +++ b/apps/docs/tools/image/image-to-base64.md @@ -8,7 +8,7 @@ Convert one or more images to base64-encoded strings and data URIs. Supports opt ## 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. @@ -24,7 +24,7 @@ Accepts multipart form data with one or more image files and an optional JSON `s ## Example Request ```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" \ -F "file=@icon.png" \ -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: ```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" \ -F "file=@icon1.png" \ -F "file=@icon2.png" \ diff --git a/apps/docs/tools/image-to-pdf.md b/apps/docs/tools/image/image-to-pdf.md similarity index 93% rename from apps/docs/tools/image-to-pdf.md rename to apps/docs/tools/image/image-to-pdf.md index 2c7eea98..e7a536e7 100644 --- a/apps/docs/tools/image-to-pdf.md +++ b/apps/docs/tools/image/image-to-pdf.md @@ -8,7 +8,7 @@ Combine one or more images into a PDF document. Supports multiple page sizes, or ## 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. @@ -36,7 +36,7 @@ Minimum target size is 50 KB. Basic multi-image PDF: ```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" \ -F "file=@page1.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: ```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" \ -F "file=@scan1.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: ```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" \ -F "file=@photo1.jpg" \ -F "file=@photo2.jpg" \ diff --git a/apps/docs/tools/info.md b/apps/docs/tools/image/info.md similarity index 97% rename from apps/docs/tools/info.md rename to apps/docs/tools/image/info.md index 2b2e56f3..0c6d0997 100644 --- a/apps/docs/tools/info.md +++ b/apps/docs/tools/image/info.md @@ -8,7 +8,7 @@ Read-only analysis tool that returns comprehensive image metadata including dime ## 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. @@ -23,7 +23,7 @@ This tool has no configurable parameters. Simply upload the image file. ## Example Request ```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" \ -F "file=@photo.jpg" ``` diff --git a/apps/docs/tools/lqip-placeholder.md b/apps/docs/tools/image/lqip-placeholder.md similarity index 95% rename from apps/docs/tools/lqip-placeholder.md rename to apps/docs/tools/image/lqip-placeholder.md index ec291fb5..8f92eb43 100644 --- a/apps/docs/tools/lqip-placeholder.md +++ b/apps/docs/tools/image/lqip-placeholder.md @@ -8,7 +8,7 @@ Generate a tiny low-quality image placeholder (LQIP) from a source image. Return ## 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. @@ -25,7 +25,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -F 'settings={"width": 20, "strategy": "blur", "format": "webp"}' diff --git a/apps/docs/tools/meme-generator.md b/apps/docs/tools/image/meme-generator.md similarity index 94% rename from apps/docs/tools/meme-generator.md rename to apps/docs/tools/image/meme-generator.md index 38cd6fb7..ff696d2d 100644 --- a/apps/docs/tools/meme-generator.md +++ b/apps/docs/tools/image/meme-generator.md @@ -8,7 +8,7 @@ Create memes using built-in templates or custom images. Add text with classic me ## API Endpoint -`POST /api/v1/tools/meme-generator` +`POST /api/v1/tools/image/meme-generator` Accepts either: - **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: ```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" \ -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}' @@ -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): ```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 "Content-Type: application/json" \ -d '{"templateId": "drake", "textBoxes": [{"id": "top", "text": "Manual testing"}, {"id": "bottom", "text": "Automated tests"}]}' diff --git a/apps/docs/tools/noise-removal.md b/apps/docs/tools/image/noise-removal.md similarity index 95% rename from apps/docs/tools/noise-removal.md rename to apps/docs/tools/image/noise-removal.md index 37f1cd54..1561fd43 100644 --- a/apps/docs/tools/noise-removal.md +++ b/apps/docs/tools/image/noise-removal.md @@ -4,7 +4,7 @@ AI-powered noise and grain removal with multi-tier quality options, using the Py ## 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) @@ -25,7 +25,7 @@ AI-powered noise and grain removal with multi-tier quality options, using the Py ## Example Request ```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 'settings={"tier":"quality","strength":60,"detailPreservation":70,"colorNoise":40}' ``` diff --git a/apps/docs/tools/ocr.md b/apps/docs/tools/image/ocr.md similarity index 95% rename from apps/docs/tools/ocr.md rename to apps/docs/tools/image/ocr.md index 2c730fa3..b172f81d 100644 --- a/apps/docs/tools/ocr.md +++ b/apps/docs/tools/image/ocr.md @@ -4,7 +4,7 @@ Extract text from images using AI-powered optical character recognition. Support ## 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) @@ -23,7 +23,7 @@ Extract text from images using AI-powered optical character recognition. Support ## Example Request ```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 'settings={"quality":"best","language":"en","enhance":true}' ``` diff --git a/apps/docs/tools/optimize-for-web.md b/apps/docs/tools/image/optimize-for-web.md similarity index 84% rename from apps/docs/tools/optimize-for-web.md rename to apps/docs/tools/image/optimize-for-web.md index 88e5160c..a513663d 100644 --- a/apps/docs/tools/optimize-for-web.md +++ b/apps/docs/tools/image/optimize-for-web.md @@ -8,11 +8,11 @@ Optimize images for web delivery in a single step. Combines format conversion, q ## 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. -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 @@ -28,7 +28,7 @@ A live preview endpoint is also available at `POST /api/v1/tools/optimize-for-we ## Example Request ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -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 -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-Processed-Size` - Processed file size in bytes diff --git a/apps/docs/tools/passport-photo.md b/apps/docs/tools/image/passport-photo.md similarity index 93% rename from apps/docs/tools/passport-photo.md rename to apps/docs/tools/image/passport-photo.md index b894e956..8b794ed1 100644 --- a/apps/docs/tools/passport-photo.md +++ b/apps/docs/tools/image/passport-photo.md @@ -12,7 +12,7 @@ This tool uses a two-phase flow with separate endpoints for analysis and generat ### 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. @@ -26,7 +26,7 @@ Detects face landmarks and removes the background. Returns landmark data and a p #### Example Request ```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" ``` @@ -71,7 +71,7 @@ If `clientJobId` is provided, progress is streamed (0-30% for face detection, 30 ### 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). @@ -99,7 +99,7 @@ Crops, resizes, and optionally tiles the photo onto a print sheet. Uses cached i #### Example Request ```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" \ -d '{ "jobId": "a1b2c3d4-...", @@ -145,13 +145,13 @@ curl -X POST http://localhost:13490/api/v1/tools/passport-photo/generate \ ### Base Route -`POST /api/v1/tools/passport-photo` +`POST /api/v1/tools/image/passport-photo` Returns guidance to use the correct sub-endpoint. ```json { - "error": "Use /api/v1/tools/passport-photo/analyze or /generate" + "error": "Use /api/v1/tools/image/passport-photo/analyze or /generate" } ``` diff --git a/apps/docs/tools/pixelate.md b/apps/docs/tools/image/pixelate.md similarity index 92% rename from apps/docs/tools/pixelate.md rename to apps/docs/tools/image/pixelate.md index 6514b192..5bedbc2e 100644 --- a/apps/docs/tools/pixelate.md +++ b/apps/docs/tools/image/pixelate.md @@ -8,7 +8,7 @@ Apply a pixelation effect to an entire image or a specific rectangular region. U ## 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. @@ -33,7 +33,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. Pixelate the full image: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"blockSize": 20}' @@ -42,7 +42,7 @@ curl -X POST http://localhost:1349/api/v1/tools/pixelate \ Pixelate a specific region: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"blockSize": 16, "region": {"left": 100, "top": 50, "width": 200, "height": 150}}' diff --git a/apps/docs/tools/qr-generate.md b/apps/docs/tools/image/qr-generate.md similarity index 93% rename from apps/docs/tools/qr-generate.md rename to apps/docs/tools/image/qr-generate.md index 19ca38af..3ce28945 100644 --- a/apps/docs/tools/qr-generate.md +++ b/apps/docs/tools/image/qr-generate.md @@ -8,7 +8,7 @@ Generate QR code images from text or URLs with configurable size, error correcti ## 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. @@ -34,7 +34,7 @@ Accepts a **JSON body** (not multipart). No file upload is needed. ## Example Request ```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 "Content-Type: application/json" \ -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: ```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 "Content-Type: application/json" \ -d '{"text": "Hello World", "size": 300, "foreground": "#1a365d", "background": "#f7fafc"}' diff --git a/apps/docs/tools/red-eye-removal.md b/apps/docs/tools/image/red-eye-removal.md similarity index 94% rename from apps/docs/tools/red-eye-removal.md rename to apps/docs/tools/image/red-eye-removal.md index 2e67ac27..21042404 100644 --- a/apps/docs/tools/red-eye-removal.md +++ b/apps/docs/tools/image/red-eye-removal.md @@ -4,7 +4,7 @@ AI-powered detection and correction of red eye caused by camera flash. ## 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) @@ -23,7 +23,7 @@ AI-powered detection and correction of red eye caused by camera flash. ## Example Request ```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 'settings={"sensitivity":60,"strength":80}' ``` diff --git a/apps/docs/tools/remove-background.md b/apps/docs/tools/image/remove-background.md similarity index 94% rename from apps/docs/tools/remove-background.md rename to apps/docs/tools/image/remove-background.md index 6b64dcf4..7e593818 100644 --- a/apps/docs/tools/remove-background.md +++ b/apps/docs/tools/image/remove-background.md @@ -4,7 +4,7 @@ AI-powered background removal with optional effects (blur, shadow, gradient, cus ## 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) @@ -32,7 +32,7 @@ AI-powered background removal with optional effects (blur, shadow, gradient, cus ## Example Request ```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 'settings={"backgroundType":"transparent","edgeRefine":2,"outputFormat":"png"}' ``` @@ -76,7 +76,7 @@ data: {"phase":"processing","stage":"Removing background...","percent":50} ## 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. @@ -107,7 +107,7 @@ Re-applies background effects without re-running the AI model. Uses cached mask ### Example Request ```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"}' ``` diff --git a/apps/docs/tools/replace-color.md b/apps/docs/tools/image/replace-color.md similarity index 92% rename from apps/docs/tools/replace-color.md rename to apps/docs/tools/image/replace-color.md index 1aed3c99..769c1959 100644 --- a/apps/docs/tools/replace-color.md +++ b/apps/docs/tools/image/replace-color.md @@ -8,7 +8,7 @@ Replace pixels matching a source color with a target color, or make them transpa ## 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. @@ -24,7 +24,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@greenscreen.png" \ -F 'settings={"sourceColor": "#00FF00", "makeTransparent": true, "tolerance": 50}' diff --git a/apps/docs/tools/resize.md b/apps/docs/tools/image/resize.md similarity index 93% rename from apps/docs/tools/resize.md rename to apps/docs/tools/image/resize.md index b18e6922..cf3ede86 100644 --- a/apps/docs/tools/resize.md +++ b/apps/docs/tools/image/resize.md @@ -8,7 +8,7 @@ Resize images by specifying exact pixel dimensions, a percentage scale factor, o ## 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. @@ -35,7 +35,7 @@ At least one of `width`, `height`, or `percentage` must be provided. ## Example Request ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"percentage": 50}' diff --git a/apps/docs/tools/restore-photo.md b/apps/docs/tools/image/restore-photo.md similarity index 96% rename from apps/docs/tools/restore-photo.md rename to apps/docs/tools/image/restore-photo.md index 35d1ddfb..d83f4967 100644 --- a/apps/docs/tools/restore-photo.md +++ b/apps/docs/tools/image/restore-photo.md @@ -4,7 +4,7 @@ Fix scratches, tears, and damage on old photos using a multi-step AI pipeline. C ## 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) @@ -26,7 +26,7 @@ Fix scratches, tears, and damage on old photos using a multi-step AI pipeline. C ## Example Request ```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 'settings={"scratchRemoval":true,"faceEnhancement":true,"fidelity":0.6,"colorize":true}' ``` diff --git a/apps/docs/tools/rotate.md b/apps/docs/tools/image/rotate.md similarity index 88% rename from apps/docs/tools/rotate.md rename to apps/docs/tools/image/rotate.md index d24bf055..07d847de 100644 --- a/apps/docs/tools/rotate.md +++ b/apps/docs/tools/image/rotate.md @@ -8,7 +8,7 @@ Rotate images by an arbitrary angle and/or flip them horizontally or vertically. ## 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. @@ -25,7 +25,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. Rotate 90 degrees clockwise: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"angle": 90}' @@ -34,7 +34,7 @@ curl -X POST http://localhost:1349/api/v1/tools/rotate \ Flip horizontally: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"horizontal": true}' @@ -43,7 +43,7 @@ curl -X POST http://localhost:1349/api/v1/tools/rotate \ Rotate and flip together: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"angle": 45, "vertical": true}' diff --git a/apps/docs/tools/sharpening.md b/apps/docs/tools/image/sharpening.md similarity index 94% rename from apps/docs/tools/sharpening.md rename to apps/docs/tools/image/sharpening.md index f17d273d..a75b7b10 100644 --- a/apps/docs/tools/sharpening.md +++ b/apps/docs/tools/image/sharpening.md @@ -8,7 +8,7 @@ Advanced sharpening tool with three methods: adaptive (smart edge-aware), unshar ## 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. @@ -33,7 +33,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"method": "unsharp-mask", "amount": 150, "radius": 1.5, "threshold": 10}' diff --git a/apps/docs/tools/smart-crop.md b/apps/docs/tools/image/smart-crop.md similarity index 96% rename from apps/docs/tools/smart-crop.md rename to apps/docs/tools/image/smart-crop.md index d80aaaf3..a7af99ef 100644 --- a/apps/docs/tools/smart-crop.md +++ b/apps/docs/tools/image/smart-crop.md @@ -4,7 +4,7 @@ Smart subject-aware, face-aware, or trim-based cropping. Uses Sharp's attention/ ## API Endpoint -`POST /api/v1/tools/smart-crop` +`POST /api/v1/tools/image/smart-crop` **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 ```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 'settings={"mode":"face","width":1080,"height":1080,"facePreset":"head-shoulders"}' ``` diff --git a/apps/docs/tools/split.md b/apps/docs/tools/image/split.md similarity index 95% rename from apps/docs/tools/split.md rename to apps/docs/tools/image/split.md index e148c439..5de88c64 100644 --- a/apps/docs/tools/split.md +++ b/apps/docs/tools/image/split.md @@ -4,7 +4,7 @@ Split a single image into grid tiles by column/row count or by specific pixel di ## API Endpoint -`POST /api/v1/tools/split` +`POST /api/v1/tools/image/split` ## Parameters @@ -20,7 +20,7 @@ Split a single image into grid tiles by column/row count or by specific pixel di ## Example Request ```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 'settings={"columns":3,"rows":3,"outputFormat":"png"}' \ --output split-tiles.zip diff --git a/apps/docs/tools/sprite-sheet.md b/apps/docs/tools/image/sprite-sheet.md similarity index 95% rename from apps/docs/tools/sprite-sheet.md rename to apps/docs/tools/image/sprite-sheet.md index cbbbb4b5..79cf89b4 100644 --- a/apps/docs/tools/sprite-sheet.md +++ b/apps/docs/tools/image/sprite-sheet.md @@ -8,7 +8,7 @@ Combine multiple images into a single sprite sheet grid. Each image is resized t ## 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. @@ -25,7 +25,7 @@ Accepts multipart form data with two or more image files and a JSON `settings` f ## Example Request ```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" \ -F "file=@frame1.png" \ -F "file=@frame2.png" \ diff --git a/apps/docs/tools/stitch.md b/apps/docs/tools/image/stitch.md similarity index 96% rename from apps/docs/tools/stitch.md rename to apps/docs/tools/image/stitch.md index 3994e6cc..5a08b006 100644 --- a/apps/docs/tools/stitch.md +++ b/apps/docs/tools/image/stitch.md @@ -4,7 +4,7 @@ Join multiple images side by side, stacked vertically, or arranged in a grid. Su ## API Endpoint -`POST /api/v1/tools/stitch` +`POST /api/v1/tools/image/stitch` ## Parameters @@ -24,7 +24,7 @@ Join multiple images side by side, stacked vertically, or arranged in a grid. Su ## Example Request ```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=@image2.png" \ -F "file=@image3.png" \ diff --git a/apps/docs/tools/strip-metadata.md b/apps/docs/tools/image/strip-metadata.md similarity index 90% rename from apps/docs/tools/strip-metadata.md rename to apps/docs/tools/image/strip-metadata.md index a473e234..f0d34693 100644 --- a/apps/docs/tools/strip-metadata.md +++ b/apps/docs/tools/image/strip-metadata.md @@ -10,13 +10,13 @@ Remove EXIF, GPS, ICC color profiles, and XMP metadata from images. Useful for p ### 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. ### 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. @@ -37,7 +37,7 @@ When `stripAll` is `true`, it overrides the individual flags and removes everyth Strip all metadata: ```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" \ -F "file=@photo.jpg" \ -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): ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" ``` diff --git a/apps/docs/tools/svg-to-raster.md b/apps/docs/tools/image/svg-to-raster.md similarity index 93% rename from apps/docs/tools/svg-to-raster.md rename to apps/docs/tools/image/svg-to-raster.md index 92b86d9d..e523d522 100644 --- a/apps/docs/tools/svg-to-raster.md +++ b/apps/docs/tools/image/svg-to-raster.md @@ -4,7 +4,7 @@ Convert SVG files to raster image formats (PNG, JPEG, WebP, AVIF, TIFF, GIF, HEI ## API Endpoint -`POST /api/v1/tools/svg-to-raster` +`POST /api/v1/tools/image/svg-to-raster` ## Parameters @@ -20,7 +20,7 @@ Convert SVG files to raster image formats (PNG, JPEG, WebP, AVIF, TIFF, GIF, HEI ## Example Request ```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 '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 -`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. @@ -52,7 +52,7 @@ Convert multiple SVG files in one request. Returns a ZIP archive. ### Batch Example Request ```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=@icon2.svg" \ -F "file=@icon3.svg" \ diff --git a/apps/docs/tools/text-overlay.md b/apps/docs/tools/image/text-overlay.md similarity index 92% rename from apps/docs/tools/text-overlay.md rename to apps/docs/tools/image/text-overlay.md index dbc97af4..8582cef0 100644 --- a/apps/docs/tools/text-overlay.md +++ b/apps/docs/tools/image/text-overlay.md @@ -8,7 +8,7 @@ Add styled text to images with optional drop shadow and semi-transparent backgro ## 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. @@ -27,7 +27,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"text": "Caption", "fontSize": 36, "position": "bottom", "backgroundBox": true, "backgroundColor": "#000000"}' diff --git a/apps/docs/tools/transparency-fixer.md b/apps/docs/tools/image/transparency-fixer.md similarity index 95% rename from apps/docs/tools/transparency-fixer.md rename to apps/docs/tools/image/transparency-fixer.md index 8149fef9..2cecf2cc 100644 --- a/apps/docs/tools/transparency-fixer.md +++ b/apps/docs/tools/image/transparency-fixer.md @@ -4,7 +4,7 @@ Fix fake transparent PNGs in one click. Uses AI matting (BiRefNet HR Matting mod ## 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) @@ -22,7 +22,7 @@ Fix fake transparent PNGs in one click. Uses AI matting (BiRefNet HR Matting mod ## Example Request ```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 'settings={"defringe":40,"outputFormat":"png"}' ``` diff --git a/apps/docs/tools/upscale.md b/apps/docs/tools/image/upscale.md similarity index 95% rename from apps/docs/tools/upscale.md rename to apps/docs/tools/image/upscale.md index e10a90fc..393aae26 100644 --- a/apps/docs/tools/upscale.md +++ b/apps/docs/tools/image/upscale.md @@ -4,7 +4,7 @@ AI super-resolution enhancement using Real-ESRGAN. Upscales images 2x-4x while p ## 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) @@ -25,7 +25,7 @@ AI super-resolution enhancement using Real-ESRGAN. Upscales images 2x-4x while p ## Example Request ```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 'settings={"scale":4,"model":"auto","faceEnhance":true,"format":"png"}' ``` diff --git a/apps/docs/tools/vectorize.md b/apps/docs/tools/image/vectorize.md similarity index 93% rename from apps/docs/tools/vectorize.md rename to apps/docs/tools/image/vectorize.md index 842ef9c1..d96a28b0 100644 --- a/apps/docs/tools/vectorize.md +++ b/apps/docs/tools/image/vectorize.md @@ -4,7 +4,7 @@ Vectorize raster images into SVG using tracing algorithms. Supports black-and-wh ## API Endpoint -`POST /api/v1/tools/vectorize` +`POST /api/v1/tools/image/vectorize` ## Parameters @@ -22,7 +22,7 @@ Vectorize raster images into SVG using tracing algorithms. Supports black-and-wh ## Example Request ```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 '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 ```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 'settings={"colorMode":"color","colorPrecision":8,"layerDifference":6,"filterSpeckle":4}' ``` diff --git a/apps/docs/tools/vignette.md b/apps/docs/tools/image/vignette.md similarity index 95% rename from apps/docs/tools/vignette.md rename to apps/docs/tools/image/vignette.md index e6576c61..7ae714d9 100644 --- a/apps/docs/tools/vignette.md +++ b/apps/docs/tools/image/vignette.md @@ -8,7 +8,7 @@ Add a vignette effect that darkens or tints the edges of an image. Supports adju ## 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. @@ -27,7 +27,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -F 'settings={"strength": 0.7, "radius": 60, "softness": 70}' diff --git a/apps/docs/tools/watermark-image.md b/apps/docs/tools/image/watermark-image.md similarity index 94% rename from apps/docs/tools/watermark-image.md rename to apps/docs/tools/image/watermark-image.md index e7355488..a8c44b4f 100644 --- a/apps/docs/tools/watermark-image.md +++ b/apps/docs/tools/image/watermark-image.md @@ -8,7 +8,7 @@ Overlay a logo or secondary image as a watermark on a base image. The watermark ## 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. @@ -30,7 +30,7 @@ Accepts multipart form data with **two** image files and a JSON `settings` field ## Example Request ```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" \ -F "file=@photo.jpg" \ -F "watermark=@logo.png" \ diff --git a/apps/docs/tools/watermark-text.md b/apps/docs/tools/image/watermark-text.md similarity index 92% rename from apps/docs/tools/watermark-text.md rename to apps/docs/tools/image/watermark-text.md index e2a2dcf4..b543113e 100644 --- a/apps/docs/tools/watermark-text.md +++ b/apps/docs/tools/image/watermark-text.md @@ -8,7 +8,7 @@ Add a text watermark overlay to images. Supports single placement at corners/cen ## 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. @@ -26,7 +26,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@photo.jpg" \ -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: ```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" \ -F "file=@photo.jpg" \ -F 'settings={"text": "DRAFT", "fontSize": 36, "opacity": 20, "position": "tiled", "rotation": -45}' diff --git a/apps/docs/tools/booklet-pdf.md b/apps/docs/tools/pdf/booklet-pdf.md similarity index 91% rename from apps/docs/tools/booklet-pdf.md rename to apps/docs/tools/pdf/booklet-pdf.md index a9901be7..7982cd4a 100644 --- a/apps/docs/tools/booklet-pdf.md +++ b/apps/docs/tools/pdf/booklet-pdf.md @@ -8,7 +8,7 @@ Impose pages for duplex printing so the printed sheets can be folded into a book ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field. ## Example Request ```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" \ -F "file=@document.pdf" \ -F 'settings={"perSheet": 2}' diff --git a/apps/docs/tools/compress-pdf.md b/apps/docs/tools/pdf/compress-pdf.md similarity index 90% rename from apps/docs/tools/compress-pdf.md rename to apps/docs/tools/pdf/compress-pdf.md index d8810619..894f60ee 100644 --- a/apps/docs/tools/compress-pdf.md +++ b/apps/docs/tools/pdf/compress-pdf.md @@ -8,7 +8,7 @@ Reduce PDF file size by downsampling embedded images. Choose between a quality s ## 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. @@ -25,7 +25,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field. Compress by quality: ```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" \ -F "file=@document.pdf" \ -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: ```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" \ -F "file=@document.pdf" \ -F 'settings={"mode": "targetSize", "targetSizeKb": 500}' diff --git a/apps/docs/tools/convert-document.md b/apps/docs/tools/pdf/convert-document.md similarity index 91% rename from apps/docs/tools/convert-document.md rename to apps/docs/tools/pdf/convert-document.md index e9cb4cd8..97b620a2 100644 --- a/apps/docs/tools/convert-document.md +++ b/apps/docs/tools/pdf/convert-document.md @@ -8,7 +8,7 @@ Convert documents between Word (DOCX), OpenDocument (ODT), RTF, and plain text f ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with a Word/ODT/RTF/TXT file and a JSON `settings` f ## Example Request ```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" \ -F "file=@report.docx" \ -F 'settings={"format": "odt"}' diff --git a/apps/docs/tools/convert-presentation.md b/apps/docs/tools/pdf/convert-presentation.md similarity index 89% rename from apps/docs/tools/convert-presentation.md rename to apps/docs/tools/pdf/convert-presentation.md index 252e3bd2..21b8ca77 100644 --- a/apps/docs/tools/convert-presentation.md +++ b/apps/docs/tools/pdf/convert-presentation.md @@ -8,7 +8,7 @@ Convert presentations between PowerPoint (PPTX) and OpenDocument Presentation (O ## 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. @@ -21,7 +21,7 @@ Accepts multipart form data with a PowerPoint/ODP file and a JSON `settings` fie ## Example Request ```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" \ -F "file=@slides.pptx" \ -F 'settings={"format": "odp"}' diff --git a/apps/docs/tools/convert-spreadsheet.md b/apps/docs/tools/pdf/convert-spreadsheet.md similarity index 90% rename from apps/docs/tools/convert-spreadsheet.md rename to apps/docs/tools/pdf/convert-spreadsheet.md index 20510e7d..5db61a36 100644 --- a/apps/docs/tools/convert-spreadsheet.md +++ b/apps/docs/tools/pdf/convert-spreadsheet.md @@ -8,7 +8,7 @@ Convert spreadsheets between Excel (XLSX), OpenDocument Spreadsheet (ODS), and C ## API Endpoint -`POST /api/v1/tools/convert-spreadsheet` +`POST /api/v1/tools/pdf/convert-spreadsheet` Accepts multipart form data with an Excel/ODS/CSV file and a JSON `settings` field. @@ -21,7 +21,7 @@ Accepts multipart form data with an Excel/ODS/CSV file and a JSON `settings` fie ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/convert-spreadsheet \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/convert-spreadsheet \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@data.xlsx" \ -F 'settings={"format": "csv"}' diff --git a/apps/docs/tools/crop-pdf.md b/apps/docs/tools/pdf/crop-pdf.md similarity index 91% rename from apps/docs/tools/crop-pdf.md rename to apps/docs/tools/pdf/crop-pdf.md index bb8d4ff2..85ebf54e 100644 --- a/apps/docs/tools/crop-pdf.md +++ b/apps/docs/tools/pdf/crop-pdf.md @@ -8,7 +8,7 @@ Crop all pages of a PDF by applying a uniform margin, trimming content from each ## API Endpoint -`POST /api/v1/tools/crop-pdf` +`POST /api/v1/tools/pdf/crop-pdf` 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 ```bash -curl -X POST http://localhost:1349/api/v1/tools/crop-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/crop-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"margin": 50}' diff --git a/apps/docs/tools/epub-convert.md b/apps/docs/tools/pdf/epub-convert.md similarity index 91% rename from apps/docs/tools/epub-convert.md rename to apps/docs/tools/pdf/epub-convert.md index c511d818..eecc18ed 100644 --- a/apps/docs/tools/epub-convert.md +++ b/apps/docs/tools/pdf/epub-convert.md @@ -8,7 +8,7 @@ Convert an EPUB e-book to PDF, Word (DOCX), HTML, or Markdown. Remote resources ## API Endpoint -`POST /api/v1/tools/epub-convert` +`POST /api/v1/tools/pdf/epub-convert` Accepts multipart form data with an EPUB file and a JSON `settings` field. @@ -21,7 +21,7 @@ Accepts multipart form data with an EPUB file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/epub-convert \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/epub-convert \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@book.epub" \ -F 'settings={"format": "pdf"}' diff --git a/apps/docs/tools/excel-to-pdf.md b/apps/docs/tools/pdf/excel-to-pdf.md similarity index 89% rename from apps/docs/tools/excel-to-pdf.md rename to apps/docs/tools/pdf/excel-to-pdf.md index 6e13e9e7..00b7802a 100644 --- a/apps/docs/tools/excel-to-pdf.md +++ b/apps/docs/tools/pdf/excel-to-pdf.md @@ -8,7 +8,7 @@ Convert Excel, OpenDocument, or CSV spreadsheets to PDF. Wide sheets may paginat ## API Endpoint -`POST /api/v1/tools/excel-to-pdf` +`POST /api/v1/tools/pdf/excel-to-pdf` Accepts multipart form data with an Excel/ODS/CSV file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a spreadsheet and it will be co ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/excel-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/excel-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@budget.xlsx" ``` diff --git a/apps/docs/tools/extract-pages.md b/apps/docs/tools/pdf/extract-pages.md similarity index 90% rename from apps/docs/tools/extract-pages.md rename to apps/docs/tools/pdf/extract-pages.md index 2f5a3ea0..002f9931 100644 --- a/apps/docs/tools/extract-pages.md +++ b/apps/docs/tools/pdf/extract-pages.md @@ -8,7 +8,7 @@ Pull selected pages from a PDF into a new, smaller document. ## API Endpoint -`POST /api/v1/tools/extract-pages` +`POST /api/v1/tools/pdf/extract-pages` 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 ```bash -curl -X POST http://localhost:1349/api/v1/tools/extract-pages \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/extract-pages \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"range": "1-5,8,10-z"}' diff --git a/apps/docs/tools/flatten-pdf.md b/apps/docs/tools/pdf/flatten-pdf.md similarity index 90% rename from apps/docs/tools/flatten-pdf.md rename to apps/docs/tools/pdf/flatten-pdf.md index 99fe7754..f85c8236 100644 --- a/apps/docs/tools/flatten-pdf.md +++ b/apps/docs/tools/pdf/flatten-pdf.md @@ -8,7 +8,7 @@ Bake interactive form fields and annotations into the page content, producing a ## API Endpoint -`POST /api/v1/tools/flatten-pdf` +`POST /api/v1/tools/pdf/flatten-pdf` Accepts multipart form data with a PDF file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a PDF and all forms and annotat ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/flatten-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/flatten-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@form.pdf" ``` diff --git a/apps/docs/tools/grayscale-pdf.md b/apps/docs/tools/pdf/grayscale-pdf.md similarity index 89% rename from apps/docs/tools/grayscale-pdf.md rename to apps/docs/tools/pdf/grayscale-pdf.md index 2a1dce5e..d29e8368 100644 --- a/apps/docs/tools/grayscale-pdf.md +++ b/apps/docs/tools/pdf/grayscale-pdf.md @@ -8,7 +8,7 @@ Convert all colors in a PDF to grayscale, producing a black-and-white version of ## API Endpoint -`POST /api/v1/tools/grayscale-pdf` +`POST /api/v1/tools/pdf/grayscale-pdf` Accepts multipart form data with a PDF file. No `settings` field is required. @@ -19,7 +19,7 @@ This tool has no settings parameters. Upload the PDF file directly. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/grayscale-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/grayscale-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" ``` diff --git a/apps/docs/tools/html-to-pdf.md b/apps/docs/tools/pdf/html-to-pdf.md similarity index 90% rename from apps/docs/tools/html-to-pdf.md rename to apps/docs/tools/pdf/html-to-pdf.md index 46884dfb..5845bf4d 100644 --- a/apps/docs/tools/html-to-pdf.md +++ b/apps/docs/tools/pdf/html-to-pdf.md @@ -8,7 +8,7 @@ Convert an HTML file to a styled PDF document. Remote resources (external images ## API Endpoint -`POST /api/v1/tools/html-to-pdf` +`POST /api/v1/tools/pdf/html-to-pdf` Accepts multipart form data with an HTML file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload an HTML file and it will be con ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/html-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/html-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@page.html" ``` diff --git a/apps/docs/tools/linearize-pdf.md b/apps/docs/tools/pdf/linearize-pdf.md similarity index 90% rename from apps/docs/tools/linearize-pdf.md rename to apps/docs/tools/pdf/linearize-pdf.md index f32a5d64..777567e0 100644 --- a/apps/docs/tools/linearize-pdf.md +++ b/apps/docs/tools/pdf/linearize-pdf.md @@ -8,7 +8,7 @@ Linearize a PDF so it can be progressively downloaded and displayed in web brows ## API Endpoint -`POST /api/v1/tools/linearize-pdf` +`POST /api/v1/tools/pdf/linearize-pdf` Accepts multipart form data with a PDF file. No `settings` field is required. @@ -19,7 +19,7 @@ This tool has no settings parameters. Upload the PDF file directly. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/linearize-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/linearize-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" ``` diff --git a/apps/docs/tools/markdown-to-docx.md b/apps/docs/tools/pdf/markdown-to-docx.md similarity index 89% rename from apps/docs/tools/markdown-to-docx.md rename to apps/docs/tools/pdf/markdown-to-docx.md index a1d95b48..0c715bde 100644 --- a/apps/docs/tools/markdown-to-docx.md +++ b/apps/docs/tools/pdf/markdown-to-docx.md @@ -8,7 +8,7 @@ Convert a Markdown file to a Word document (DOCX), preserving headings, lists, c ## API Endpoint -`POST /api/v1/tools/markdown-to-docx` +`POST /api/v1/tools/pdf/markdown-to-docx` Accepts multipart form data with a Markdown file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a Markdown file and it will be ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/markdown-to-docx \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/markdown-to-docx \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@README.md" ``` diff --git a/apps/docs/tools/markdown-to-html.md b/apps/docs/tools/pdf/markdown-to-html.md similarity index 89% rename from apps/docs/tools/markdown-to-html.md rename to apps/docs/tools/pdf/markdown-to-html.md index 25a5d3ee..ab00a081 100644 --- a/apps/docs/tools/markdown-to-html.md +++ b/apps/docs/tools/pdf/markdown-to-html.md @@ -8,7 +8,7 @@ Convert a Markdown file to a standalone HTML page. Remote images referenced in t ## API Endpoint -`POST /api/v1/tools/markdown-to-html` +`POST /api/v1/tools/pdf/markdown-to-html` Accepts multipart form data with a Markdown file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a Markdown file and it will be ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/markdown-to-html \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/markdown-to-html \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@notes.md" ``` diff --git a/apps/docs/tools/markdown-to-pdf.md b/apps/docs/tools/pdf/markdown-to-pdf.md similarity index 89% rename from apps/docs/tools/markdown-to-pdf.md rename to apps/docs/tools/pdf/markdown-to-pdf.md index 3e6d78f8..9f5e23ec 100644 --- a/apps/docs/tools/markdown-to-pdf.md +++ b/apps/docs/tools/pdf/markdown-to-pdf.md @@ -8,7 +8,7 @@ Convert a Markdown file to a styled PDF document. Remote resources are disabled ## API Endpoint -`POST /api/v1/tools/markdown-to-pdf` +`POST /api/v1/tools/pdf/markdown-to-pdf` Accepts multipart form data with a Markdown file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a Markdown file and it will be ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/markdown-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/markdown-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.md" ``` diff --git a/apps/docs/tools/merge-pdf.md b/apps/docs/tools/pdf/merge-pdf.md similarity index 91% rename from apps/docs/tools/merge-pdf.md rename to apps/docs/tools/pdf/merge-pdf.md index 7db593c1..476bd466 100644 --- a/apps/docs/tools/merge-pdf.md +++ b/apps/docs/tools/pdf/merge-pdf.md @@ -8,7 +8,7 @@ Combine two or more PDF files into a single document, preserving the page order ## API Endpoint -`POST /api/v1/tools/merge-pdf` +`POST /api/v1/tools/pdf/merge-pdf` Accepts multipart form data with two or more PDF files. No `settings` field is required. @@ -24,7 +24,7 @@ This tool has no settings parameters. Simply upload two or more PDF files. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/merge-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/merge-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document1.pdf" \ -F "file=@document2.pdf" \ diff --git a/apps/docs/tools/nup-pdf.md b/apps/docs/tools/pdf/nup-pdf.md similarity index 92% rename from apps/docs/tools/nup-pdf.md rename to apps/docs/tools/pdf/nup-pdf.md index 1bc0e757..7044a881 100644 --- a/apps/docs/tools/nup-pdf.md +++ b/apps/docs/tools/pdf/nup-pdf.md @@ -8,7 +8,7 @@ Arrange multiple pages per sheet to save paper when printing, such as 2-up or 4- ## API Endpoint -`POST /api/v1/tools/nup-pdf` +`POST /api/v1/tools/pdf/nup-pdf` 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 ```bash -curl -X POST http://localhost:1349/api/v1/tools/nup-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/nup-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"perSheet": 4}' diff --git a/apps/docs/tools/ocr-pdf.md b/apps/docs/tools/pdf/ocr-pdf.md similarity index 94% rename from apps/docs/tools/ocr-pdf.md rename to apps/docs/tools/pdf/ocr-pdf.md index 89dd7ceb..4e41e92d 100644 --- a/apps/docs/tools/ocr-pdf.md +++ b/apps/docs/tools/pdf/ocr-pdf.md @@ -8,7 +8,7 @@ Extract text from PDF documents using AI-powered optical character recognition. ## API Endpoint -`POST /api/v1/tools/ocr-pdf` +`POST /api/v1/tools/pdf/ocr-pdf` Accepts multipart form data with a PDF file and an optional JSON `settings` field. @@ -23,7 +23,7 @@ Accepts multipart form data with a PDF file and an optional JSON `settings` fiel ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/ocr-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/ocr-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@scanned.pdf" \ -F 'settings={"quality": "best", "language": "en", "pages": "1-5"}' diff --git a/apps/docs/tools/organize-pdf.md b/apps/docs/tools/pdf/organize-pdf.md similarity index 91% rename from apps/docs/tools/organize-pdf.md rename to apps/docs/tools/pdf/organize-pdf.md index e635811b..06a5ddb7 100644 --- a/apps/docs/tools/organize-pdf.md +++ b/apps/docs/tools/pdf/organize-pdf.md @@ -8,7 +8,7 @@ Reorder pages in a PDF by specifying the desired page sequence. ## API Endpoint -`POST /api/v1/tools/organize-pdf` +`POST /api/v1/tools/pdf/organize-pdf` 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 ```bash -curl -X POST http://localhost:1349/api/v1/tools/organize-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/organize-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"order": "3,1,2,5-z"}' diff --git a/apps/docs/tools/pdf-metadata.md b/apps/docs/tools/pdf/pdf-metadata.md similarity index 94% rename from apps/docs/tools/pdf-metadata.md rename to apps/docs/tools/pdf/pdf-metadata.md index 037f10d6..ba3cc161 100644 --- a/apps/docs/tools/pdf-metadata.md +++ b/apps/docs/tools/pdf/pdf-metadata.md @@ -8,7 +8,7 @@ Read and update PDF document metadata fields such as title, author, subject, and ## API Endpoint -`POST /api/v1/tools/pdf-metadata` +`POST /api/v1/tools/pdf/pdf-metadata` Accepts multipart form data with a PDF file and an optional JSON `settings` field. @@ -26,7 +26,7 @@ All parameters are optional. Omitted fields are left unchanged. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/pdf-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-metadata \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.pdf" \ -F 'settings={"title": "Q2 Report", "author": "Finance Team"}' diff --git a/apps/docs/tools/pdf-page-numbers.md b/apps/docs/tools/pdf/pdf-page-numbers.md similarity index 91% rename from apps/docs/tools/pdf-page-numbers.md rename to apps/docs/tools/pdf/pdf-page-numbers.md index 0a710805..b17183fb 100644 --- a/apps/docs/tools/pdf-page-numbers.md +++ b/apps/docs/tools/pdf/pdf-page-numbers.md @@ -8,7 +8,7 @@ Add "Page N of M" page numbers to every page of a PDF. ## API Endpoint -`POST /api/v1/tools/pdf-page-numbers` +`POST /api/v1/tools/pdf/pdf-page-numbers` Accepts multipart form data with a PDF file and a JSON `settings` field. @@ -27,7 +27,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/pdf-page-numbers \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-page-numbers \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"position": "bc", "fontSize": 12}' diff --git a/apps/docs/tools/pdf-to-image.md b/apps/docs/tools/pdf/pdf-to-image.md similarity index 90% rename from apps/docs/tools/pdf-to-image.md rename to apps/docs/tools/pdf/pdf-to-image.md index 602c17ca..9d044608 100644 --- a/apps/docs/tools/pdf-to-image.md +++ b/apps/docs/tools/pdf/pdf-to-image.md @@ -4,7 +4,7 @@ Convert PDF pages to high-quality raster images. Supports page selection, multip ## API Endpoint -`POST /api/v1/tools/pdf-to-image` +`POST /api/v1/tools/pdf/pdf-to-image` ## Parameters @@ -19,7 +19,7 @@ Convert PDF pages to high-quality raster images. Supports page selection, multip ## Example Request ```bash -curl -X POST http://localhost:13490/api/v1/tools/pdf-to-image \ +curl -X POST http://localhost:13490/api/v1/tools/pdf/pdf-to-image \ -F "file=@document.pdf" \ -F 'settings={"format":"png","dpi":300,"pages":"1-3","colorMode":"color"}' ``` @@ -56,14 +56,14 @@ curl -X POST http://localhost:13490/api/v1/tools/pdf-to-image \ ## Info Sub-Route -`POST /api/v1/tools/pdf-to-image/info` +`POST /api/v1/tools/pdf/pdf-to-image/info` Returns the page count of a PDF without rendering any pages. ### Info Request ```bash -curl -X POST http://localhost:13490/api/v1/tools/pdf-to-image/info \ +curl -X POST http://localhost:13490/api/v1/tools/pdf/pdf-to-image/info \ -F "file=@document.pdf" ``` @@ -77,14 +77,14 @@ curl -X POST http://localhost:13490/api/v1/tools/pdf-to-image/info \ ## Preview Sub-Route -`POST /api/v1/tools/pdf-to-image/preview` +`POST /api/v1/tools/pdf/pdf-to-image/preview` Returns low-resolution JPEG thumbnails of all pages as base64 data URLs. Useful for building a page selection UI. ### Preview Request ```bash -curl -X POST http://localhost:13490/api/v1/tools/pdf-to-image/preview \ +curl -X POST http://localhost:13490/api/v1/tools/pdf/pdf-to-image/preview \ -F "file=@document.pdf" ``` diff --git a/apps/docs/tools/pdf-to-text.md b/apps/docs/tools/pdf/pdf-to-text.md similarity index 90% rename from apps/docs/tools/pdf-to-text.md rename to apps/docs/tools/pdf/pdf-to-text.md index 39b1d25d..f5a6982c 100644 --- a/apps/docs/tools/pdf-to-text.md +++ b/apps/docs/tools/pdf/pdf-to-text.md @@ -8,7 +8,7 @@ Extract all readable plain text from a PDF document into a text file. ## API Endpoint -`POST /api/v1/tools/pdf-to-text` +`POST /api/v1/tools/pdf/pdf-to-text` Accepts multipart form data with a PDF file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a PDF and its text content will ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/pdf-to-text \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-text \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.pdf" ``` diff --git a/apps/docs/tools/pdf-to-word.md b/apps/docs/tools/pdf/pdf-to-word.md similarity index 90% rename from apps/docs/tools/pdf-to-word.md rename to apps/docs/tools/pdf/pdf-to-word.md index 574f7312..09e2cf6b 100644 --- a/apps/docs/tools/pdf-to-word.md +++ b/apps/docs/tools/pdf/pdf-to-word.md @@ -8,7 +8,7 @@ Convert a text-based PDF to a Word document (DOCX). Best suited for PDFs with se ## API Endpoint -`POST /api/v1/tools/pdf-to-word` +`POST /api/v1/tools/pdf/pdf-to-word` Accepts multipart form data with a PDF file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a PDF and it will be converted ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/pdf-to-word \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-word \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.pdf" ``` diff --git a/apps/docs/tools/pdfa-convert.md b/apps/docs/tools/pdf/pdfa-convert.md similarity index 90% rename from apps/docs/tools/pdfa-convert.md rename to apps/docs/tools/pdf/pdfa-convert.md index 8c4201a8..977419cf 100644 --- a/apps/docs/tools/pdfa-convert.md +++ b/apps/docs/tools/pdf/pdfa-convert.md @@ -8,7 +8,7 @@ Convert a PDF to the PDF/A-2 archival format, suitable for long-term preservatio ## API Endpoint -`POST /api/v1/tools/pdfa-convert` +`POST /api/v1/tools/pdf/pdfa-convert` Accepts multipart form data with a PDF file. No `settings` field is required. @@ -19,7 +19,7 @@ This tool has no settings parameters. Upload the PDF file directly. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/pdfa-convert \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/pdfa-convert \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" ``` diff --git a/apps/docs/tools/powerpoint-to-pdf.md b/apps/docs/tools/pdf/powerpoint-to-pdf.md similarity index 88% rename from apps/docs/tools/powerpoint-to-pdf.md rename to apps/docs/tools/pdf/powerpoint-to-pdf.md index 3b6d643f..d28e69ee 100644 --- a/apps/docs/tools/powerpoint-to-pdf.md +++ b/apps/docs/tools/pdf/powerpoint-to-pdf.md @@ -8,7 +8,7 @@ Convert PowerPoint or OpenDocument presentations to PDF, with one slide per page ## API Endpoint -`POST /api/v1/tools/powerpoint-to-pdf` +`POST /api/v1/tools/pdf/powerpoint-to-pdf` Accepts multipart form data with a PowerPoint/ODP file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a presentation and it will be c ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/powerpoint-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/powerpoint-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@slides.pptx" ``` diff --git a/apps/docs/tools/protect-pdf.md b/apps/docs/tools/pdf/protect-pdf.md similarity index 92% rename from apps/docs/tools/protect-pdf.md rename to apps/docs/tools/pdf/protect-pdf.md index 52dfe946..2bdd328a 100644 --- a/apps/docs/tools/protect-pdf.md +++ b/apps/docs/tools/pdf/protect-pdf.md @@ -8,7 +8,7 @@ Add password protection to a PDF using AES-256 encryption. ## API Endpoint -`POST /api/v1/tools/protect-pdf` +`POST /api/v1/tools/pdf/protect-pdf` Accepts multipart form data with a PDF file and a JSON `settings` field. @@ -22,7 +22,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/protect-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/protect-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"userPassword": "s3cret", "ownerPassword": "0wn3r"}' diff --git a/apps/docs/tools/redact-pdf.md b/apps/docs/tools/pdf/redact-pdf.md similarity index 93% rename from apps/docs/tools/redact-pdf.md rename to apps/docs/tools/pdf/redact-pdf.md index a449a3e4..f1d7ca1f 100644 --- a/apps/docs/tools/redact-pdf.md +++ b/apps/docs/tools/pdf/redact-pdf.md @@ -8,7 +8,7 @@ Permanently remove specified text occurrences from a PDF using verified true red ## API Endpoint -`POST /api/v1/tools/redact-pdf` +`POST /api/v1/tools/pdf/redact-pdf` Accepts multipart form data with a PDF file and a JSON `settings` field. @@ -22,7 +22,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/redact-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/redact-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@contract.pdf" \ -F 'settings={"terms": ["John Doe", "555-0123"], "caseSensitive": false}' diff --git a/apps/docs/tools/remove-pages.md b/apps/docs/tools/pdf/remove-pages.md similarity index 90% rename from apps/docs/tools/remove-pages.md rename to apps/docs/tools/pdf/remove-pages.md index 76b2dc5b..2a0cf36b 100644 --- a/apps/docs/tools/remove-pages.md +++ b/apps/docs/tools/pdf/remove-pages.md @@ -8,7 +8,7 @@ Delete specific pages from a PDF, keeping all remaining pages intact. ## API Endpoint -`POST /api/v1/tools/remove-pages` +`POST /api/v1/tools/pdf/remove-pages` 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 ```bash -curl -X POST http://localhost:1349/api/v1/tools/remove-pages \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/remove-pages \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"pages": "3,5-7"}' diff --git a/apps/docs/tools/repair-pdf.md b/apps/docs/tools/pdf/repair-pdf.md similarity index 90% rename from apps/docs/tools/repair-pdf.md rename to apps/docs/tools/pdf/repair-pdf.md index c24e0d36..75faced3 100644 --- a/apps/docs/tools/repair-pdf.md +++ b/apps/docs/tools/pdf/repair-pdf.md @@ -8,7 +8,7 @@ Attempt to repair a damaged or corrupted PDF by reconstructing its internal stru ## API Endpoint -`POST /api/v1/tools/repair-pdf` +`POST /api/v1/tools/pdf/repair-pdf` Accepts multipart form data with a PDF file. No `settings` field is required. @@ -19,7 +19,7 @@ This tool has no settings parameters. Upload the damaged PDF file directly. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/repair-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/repair-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@damaged.pdf" ``` diff --git a/apps/docs/tools/rotate-pdf.md b/apps/docs/tools/pdf/rotate-pdf.md similarity index 91% rename from apps/docs/tools/rotate-pdf.md rename to apps/docs/tools/pdf/rotate-pdf.md index a42d6677..2e81ed11 100644 --- a/apps/docs/tools/rotate-pdf.md +++ b/apps/docs/tools/pdf/rotate-pdf.md @@ -8,7 +8,7 @@ Rotate all or selected pages in a PDF by a specified angle. ## API Endpoint -`POST /api/v1/tools/rotate-pdf` +`POST /api/v1/tools/pdf/rotate-pdf` Accepts multipart form data with a PDF file and a JSON `settings` field. @@ -22,7 +22,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/rotate-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/rotate-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"angle": 90, "range": "1-3"}' diff --git a/apps/docs/tools/split-pdf.md b/apps/docs/tools/pdf/split-pdf.md similarity index 90% rename from apps/docs/tools/split-pdf.md rename to apps/docs/tools/pdf/split-pdf.md index 2d269c56..15806b4b 100644 --- a/apps/docs/tools/split-pdf.md +++ b/apps/docs/tools/pdf/split-pdf.md @@ -8,7 +8,7 @@ Extract a range of pages into a new PDF, or split a document into chunks of N pa ## API Endpoint -`POST /api/v1/tools/split-pdf` +`POST /api/v1/tools/pdf/split-pdf` 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. Extract specific pages: ```bash -curl -X POST http://localhost:1349/api/v1/tools/split-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/split-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"mode": "range", "range": "1-5,8"}' @@ -34,7 +34,7 @@ curl -X POST http://localhost:1349/api/v1/tools/split-pdf \ Split into chunks of 10 pages: ```bash -curl -X POST http://localhost:1349/api/v1/tools/split-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/split-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"mode": "every", "everyN": 10}' diff --git a/apps/docs/tools/to-epub.md b/apps/docs/tools/pdf/to-epub.md similarity index 90% rename from apps/docs/tools/to-epub.md rename to apps/docs/tools/pdf/to-epub.md index a42e0593..369245d0 100644 --- a/apps/docs/tools/to-epub.md +++ b/apps/docs/tools/pdf/to-epub.md @@ -8,7 +8,7 @@ Convert Word documents, Markdown, HTML, or plain text files into the EPUB e-book ## API Endpoint -`POST /api/v1/tools/to-epub` +`POST /api/v1/tools/pdf/to-epub` Accepts multipart form data with a Word/Markdown/HTML/TXT file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a document and it will be conve ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/to-epub \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/to-epub \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@manuscript.docx" ``` diff --git a/apps/docs/tools/unlock-pdf.md b/apps/docs/tools/pdf/unlock-pdf.md similarity index 91% rename from apps/docs/tools/unlock-pdf.md rename to apps/docs/tools/pdf/unlock-pdf.md index 22435175..cf971b0b 100644 --- a/apps/docs/tools/unlock-pdf.md +++ b/apps/docs/tools/pdf/unlock-pdf.md @@ -8,7 +8,7 @@ Remove password protection from an encrypted PDF by providing the correct passwo ## API Endpoint -`POST /api/v1/tools/unlock-pdf` +`POST /api/v1/tools/pdf/unlock-pdf` 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 ```bash -curl -X POST http://localhost:1349/api/v1/tools/unlock-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/unlock-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"password": "s3cret"}' diff --git a/apps/docs/tools/watermark-pdf.md b/apps/docs/tools/pdf/watermark-pdf.md similarity index 93% rename from apps/docs/tools/watermark-pdf.md rename to apps/docs/tools/pdf/watermark-pdf.md index bbb6009f..27ec2e9a 100644 --- a/apps/docs/tools/watermark-pdf.md +++ b/apps/docs/tools/pdf/watermark-pdf.md @@ -8,7 +8,7 @@ Stamp a text watermark on every page of a PDF with configurable position, size, ## API Endpoint -`POST /api/v1/tools/watermark-pdf` +`POST /api/v1/tools/pdf/watermark-pdf` Accepts multipart form data with a PDF file and a JSON `settings` field. @@ -31,7 +31,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/watermark-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/watermark-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"text": "CONFIDENTIAL", "position": "c", "opacity": 0.2, "rotation": 45}' diff --git a/apps/docs/tools/word-to-pdf.md b/apps/docs/tools/pdf/word-to-pdf.md similarity index 90% rename from apps/docs/tools/word-to-pdf.md rename to apps/docs/tools/pdf/word-to-pdf.md index ea7dead8..caf00d5b 100644 --- a/apps/docs/tools/word-to-pdf.md +++ b/apps/docs/tools/pdf/word-to-pdf.md @@ -8,7 +8,7 @@ Convert Word documents, OpenDocument text, RTF, or plain text files to PDF. ## API Endpoint -`POST /api/v1/tools/word-to-pdf` +`POST /api/v1/tools/pdf/word-to-pdf` Accepts multipart form data with a Word/ODT/RTF/TXT file. @@ -19,7 +19,7 @@ This tool has no configurable parameters. Upload a document and it will be conve ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/word-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/pdf/word-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.docx" ``` diff --git a/apps/docs/tools/aspect-pad.md b/apps/docs/tools/video/aspect-pad.md similarity index 92% rename from apps/docs/tools/aspect-pad.md rename to apps/docs/tools/video/aspect-pad.md index 8cdb308d..5dd9ba56 100644 --- a/apps/docs/tools/aspect-pad.md +++ b/apps/docs/tools/video/aspect-pad.md @@ -8,7 +8,7 @@ Add solid-color letterbox or pillarbox bars to fit a video into a target aspect ## API Endpoint -`POST /api/v1/tools/aspect-pad` +`POST /api/v1/tools/video/aspect-pad` Accepts multipart form data with a video file and a JSON `settings` field. @@ -22,7 +22,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/aspect-pad \ +curl -X POST http://localhost:1349/api/v1/tools/video/aspect-pad \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"target": "1:1", "color": "#ffffff"}' diff --git a/apps/docs/tools/auto-subtitles.md b/apps/docs/tools/video/auto-subtitles.md similarity index 93% rename from apps/docs/tools/auto-subtitles.md rename to apps/docs/tools/video/auto-subtitles.md index 3eedc4b5..698c8d33 100644 --- a/apps/docs/tools/auto-subtitles.md +++ b/apps/docs/tools/video/auto-subtitles.md @@ -8,7 +8,7 @@ Generate subtitle files from a video's audio track using AI-powered speech recog ## API Endpoint -`POST /api/v1/tools/auto-subtitles` +`POST /api/v1/tools/video/auto-subtitles` Accepts multipart form data with a video file and a JSON `settings` field. This is an async endpoint - it returns `202 Accepted` immediately and progress is streamed via SSE at `GET /api/v1/jobs/{jobId}/progress`. @@ -22,7 +22,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. This ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/auto-subtitles \ +curl -X POST http://localhost:1349/api/v1/tools/video/auto-subtitles \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"language": "en", "format": "srt"}' diff --git a/apps/docs/tools/blur-pad.md b/apps/docs/tools/video/blur-pad.md similarity index 92% rename from apps/docs/tools/blur-pad.md rename to apps/docs/tools/video/blur-pad.md index 21c0ae0f..7e864b98 100644 --- a/apps/docs/tools/blur-pad.md +++ b/apps/docs/tools/video/blur-pad.md @@ -8,7 +8,7 @@ Fit a video into a target aspect ratio by filling the padding area with a blurre ## API Endpoint -`POST /api/v1/tools/blur-pad` +`POST /api/v1/tools/video/blur-pad` Accepts multipart form data with a video file and a JSON `settings` field. @@ -22,7 +22,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/blur-pad \ +curl -X POST http://localhost:1349/api/v1/tools/video/blur-pad \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"target": "16:9", "blur": 30}' diff --git a/apps/docs/tools/burn-subtitles.md b/apps/docs/tools/video/burn-subtitles.md similarity index 91% rename from apps/docs/tools/burn-subtitles.md rename to apps/docs/tools/video/burn-subtitles.md index 1e9ce3e2..613e4098 100644 --- a/apps/docs/tools/burn-subtitles.md +++ b/apps/docs/tools/video/burn-subtitles.md @@ -8,7 +8,7 @@ Permanently render (hard-code) subtitles from an SRT, VTT, or ASS file onto ever ## API Endpoint -`POST /api/v1/tools/burn-subtitles` +`POST /api/v1/tools/video/burn-subtitles` Accepts multipart form data with a video file and a subtitle file. This is an async endpoint - it returns `202 Accepted` immediately and progress is streamed via SSE at `GET /api/v1/jobs/{jobId}/progress`. @@ -21,7 +21,7 @@ Accepts multipart form data with a video file and a subtitle file. This is an as ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/burn-subtitles \ +curl -X POST http://localhost:1349/api/v1/tools/video/burn-subtitles \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F "file=@subtitles.srt" \ diff --git a/apps/docs/tools/change-fps.md b/apps/docs/tools/video/change-fps.md similarity index 91% rename from apps/docs/tools/change-fps.md rename to apps/docs/tools/video/change-fps.md index 07542216..45370064 100644 --- a/apps/docs/tools/change-fps.md +++ b/apps/docs/tools/video/change-fps.md @@ -8,7 +8,7 @@ Change the frame rate of a video to a target value between 1 and 120 fps. ## API Endpoint -`POST /api/v1/tools/change-fps` +`POST /api/v1/tools/video/change-fps` Accepts multipart form data with a video file and a JSON `settings` field. @@ -21,7 +21,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/change-fps \ +curl -X POST http://localhost:1349/api/v1/tools/video/change-fps \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"fps": 24}' diff --git a/apps/docs/tools/compress-video.md b/apps/docs/tools/video/compress-video.md similarity index 92% rename from apps/docs/tools/compress-video.md rename to apps/docs/tools/video/compress-video.md index c6a5883d..7c44dbb9 100644 --- a/apps/docs/tools/compress-video.md +++ b/apps/docs/tools/video/compress-video.md @@ -8,7 +8,7 @@ Shrink video file size using configurable compression strength and optional reso ## API Endpoint -`POST /api/v1/tools/compress-video` +`POST /api/v1/tools/video/compress-video` Accepts multipart form data with a video file and a JSON `settings` field. This is an async endpoint - it returns `202 Accepted` immediately and progress is streamed via SSE at `GET /api/v1/jobs/{jobId}/progress`. @@ -22,7 +22,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. This ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/compress-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/compress-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"quality": "strong", "resolution": "720p"}' diff --git a/apps/docs/tools/convert-video.md b/apps/docs/tools/video/convert-video.md similarity index 91% rename from apps/docs/tools/convert-video.md rename to apps/docs/tools/video/convert-video.md index 98368a1e..a250914f 100644 --- a/apps/docs/tools/convert-video.md +++ b/apps/docs/tools/video/convert-video.md @@ -8,7 +8,7 @@ Convert videos between MP4, MOV, and WebM formats with configurable quality pres ## API Endpoint -`POST /api/v1/tools/convert-video` +`POST /api/v1/tools/video/convert-video` Accepts multipart form data with a video file and a JSON `settings` field. This is an async endpoint - it returns `202 Accepted` immediately and progress is streamed via SSE at `GET /api/v1/jobs/{jobId}/progress`. @@ -22,7 +22,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. This ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/convert-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/convert-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"format": "webm", "quality": "balanced"}' diff --git a/apps/docs/tools/crop-video.md b/apps/docs/tools/video/crop-video.md similarity index 92% rename from apps/docs/tools/crop-video.md rename to apps/docs/tools/video/crop-video.md index f5f2d30b..28a9d220 100644 --- a/apps/docs/tools/crop-video.md +++ b/apps/docs/tools/video/crop-video.md @@ -8,7 +8,7 @@ Crop a rectangular region out of a video by specifying the region's size and pos ## API Endpoint -`POST /api/v1/tools/crop-video` +`POST /api/v1/tools/video/crop-video` Accepts multipart form data with a video file and a JSON `settings` field. @@ -24,7 +24,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/crop-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/crop-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"width": 640, "height": 480, "x": 100, "y": 50}' diff --git a/apps/docs/tools/embed-subtitles.md b/apps/docs/tools/video/embed-subtitles.md similarity index 92% rename from apps/docs/tools/embed-subtitles.md rename to apps/docs/tools/video/embed-subtitles.md index 46a66608..9d4b2c37 100644 --- a/apps/docs/tools/embed-subtitles.md +++ b/apps/docs/tools/video/embed-subtitles.md @@ -8,7 +8,7 @@ Mux a subtitle file into the video container as a soft subtitle track that viewe ## API Endpoint -`POST /api/v1/tools/embed-subtitles` +`POST /api/v1/tools/video/embed-subtitles` Accepts multipart form data with a video file and a subtitle file, plus a JSON `settings` field. @@ -21,7 +21,7 @@ Accepts multipart form data with a video file and a subtitle file, plus a JSON ` ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/embed-subtitles \ +curl -X POST http://localhost:1349/api/v1/tools/video/embed-subtitles \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F "file=@subtitles.srt" \ diff --git a/apps/docs/tools/extract-audio.md b/apps/docs/tools/video/extract-audio.md similarity index 91% rename from apps/docs/tools/extract-audio.md rename to apps/docs/tools/video/extract-audio.md index ec2c6a0a..3181e9a6 100644 --- a/apps/docs/tools/extract-audio.md +++ b/apps/docs/tools/video/extract-audio.md @@ -8,7 +8,7 @@ Extract the audio track from a video file and save it as MP3, WAV, or M4A. ## API Endpoint -`POST /api/v1/tools/extract-audio` +`POST /api/v1/tools/video/extract-audio` Accepts multipart form data with a video file and a JSON `settings` field. @@ -21,7 +21,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/extract-audio \ +curl -X POST http://localhost:1349/api/v1/tools/video/extract-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"format": "mp3"}' diff --git a/apps/docs/tools/extract-subtitles.md b/apps/docs/tools/video/extract-subtitles.md similarity index 89% rename from apps/docs/tools/extract-subtitles.md rename to apps/docs/tools/video/extract-subtitles.md index 5ee8df1c..daedc9f2 100644 --- a/apps/docs/tools/extract-subtitles.md +++ b/apps/docs/tools/video/extract-subtitles.md @@ -8,7 +8,7 @@ Extract the embedded subtitle track from a video container and download it as an ## API Endpoint -`POST /api/v1/tools/extract-subtitles` +`POST /api/v1/tools/video/extract-subtitles` Accepts multipart form data with a video file. This tool has no configurable settings. @@ -19,7 +19,7 @@ This tool has no parameters. It extracts the first subtitle track found in the v ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/extract-subtitles \ +curl -X POST http://localhost:1349/api/v1/tools/video/extract-subtitles \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` diff --git a/apps/docs/tools/gif-to-video.md b/apps/docs/tools/video/gif-to-video.md similarity index 90% rename from apps/docs/tools/gif-to-video.md rename to apps/docs/tools/video/gif-to-video.md index 38e16a5f..eef96721 100644 --- a/apps/docs/tools/gif-to-video.md +++ b/apps/docs/tools/video/gif-to-video.md @@ -8,7 +8,7 @@ Convert an animated GIF into a compact MP4 or WebM video file. ## API Endpoint -`POST /api/v1/tools/gif-to-video` +`POST /api/v1/tools/video/gif-to-video` Accepts multipart form data with a GIF file and a JSON `settings` field. @@ -21,7 +21,7 @@ Accepts multipart form data with a GIF file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/gif-to-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/gif-to-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@animation.gif" \ -F 'settings={"format": "mp4"}' diff --git a/apps/docs/tools/images-to-video.md b/apps/docs/tools/video/images-to-video.md similarity index 92% rename from apps/docs/tools/images-to-video.md rename to apps/docs/tools/video/images-to-video.md index d0394e3c..58f56df8 100644 --- a/apps/docs/tools/images-to-video.md +++ b/apps/docs/tools/video/images-to-video.md @@ -8,7 +8,7 @@ Turn a set of images into a slideshow video with configurable duration per image ## API Endpoint -`POST /api/v1/tools/images-to-video` +`POST /api/v1/tools/video/images-to-video` Accepts multipart form data with two or more image files and a JSON `settings` field. @@ -23,7 +23,7 @@ Accepts multipart form data with two or more image files and a JSON `settings` f ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/images-to-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/images-to-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@slide1.jpg" \ -F "file=@slide2.jpg" \ diff --git a/apps/docs/tools/merge-videos.md b/apps/docs/tools/video/merge-videos.md similarity index 91% rename from apps/docs/tools/merge-videos.md rename to apps/docs/tools/video/merge-videos.md index 7d6cdaeb..f8d04ac5 100644 --- a/apps/docs/tools/merge-videos.md +++ b/apps/docs/tools/video/merge-videos.md @@ -8,7 +8,7 @@ Join multiple video clips into a single MP4 file. All inputs are normalized to t ## API Endpoint -`POST /api/v1/tools/merge-videos` +`POST /api/v1/tools/video/merge-videos` Accepts multipart form data with two or more video files. This is an async endpoint - it returns `202 Accepted` immediately and progress is streamed via SSE at `GET /api/v1/jobs/{jobId}/progress`. @@ -19,7 +19,7 @@ This tool has no settings parameters. Upload 2-10 video files as multiple `file` ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/merge-videos \ +curl -X POST http://localhost:1349/api/v1/tools/video/merge-videos \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@intro.mp4" \ -F "file=@main.mp4" \ diff --git a/apps/docs/tools/mute-video.md b/apps/docs/tools/video/mute-video.md similarity index 88% rename from apps/docs/tools/mute-video.md rename to apps/docs/tools/video/mute-video.md index d84c59b7..1bb07919 100644 --- a/apps/docs/tools/mute-video.md +++ b/apps/docs/tools/video/mute-video.md @@ -8,7 +8,7 @@ Remove the audio track from a video, leaving only the visual stream. ## API Endpoint -`POST /api/v1/tools/mute-video` +`POST /api/v1/tools/video/mute-video` Accepts multipart form data with a video file. This tool has no configurable settings. @@ -19,7 +19,7 @@ This tool has no parameters. It strips the audio track from the uploaded video. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/mute-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/mute-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` diff --git a/apps/docs/tools/replace-audio.md b/apps/docs/tools/video/replace-audio.md similarity index 90% rename from apps/docs/tools/replace-audio.md rename to apps/docs/tools/video/replace-audio.md index 92ecb05e..63cc1df1 100644 --- a/apps/docs/tools/replace-audio.md +++ b/apps/docs/tools/video/replace-audio.md @@ -8,7 +8,7 @@ Swap the audio track of a video with an audio file. Upload both a video and an a ## API Endpoint -`POST /api/v1/tools/replace-audio` +`POST /api/v1/tools/video/replace-audio` Accepts multipart form data with exactly two files: a video file followed by an audio file. @@ -19,7 +19,7 @@ This tool has no settings parameters. Upload a video file and an audio file as t ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/replace-audio \ +curl -X POST http://localhost:1349/api/v1/tools/video/replace-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F "file=@voiceover.mp3" diff --git a/apps/docs/tools/resize-video.md b/apps/docs/tools/video/resize-video.md similarity index 89% rename from apps/docs/tools/resize-video.md rename to apps/docs/tools/video/resize-video.md index 6c3ccd54..9c07df1c 100644 --- a/apps/docs/tools/resize-video.md +++ b/apps/docs/tools/video/resize-video.md @@ -8,7 +8,7 @@ Scale a video to a new resolution using custom pixel dimensions or a standard pr ## API Endpoint -`POST /api/v1/tools/resize-video` +`POST /api/v1/tools/video/resize-video` Accepts multipart form data with a video file and a JSON `settings` field. @@ -25,7 +25,7 @@ When `preset` is `"custom"`, at least one of `width` or `height` must be provide ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/resize-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/resize-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"preset": "720p"}' @@ -34,7 +34,7 @@ curl -X POST http://localhost:1349/api/v1/tools/resize-video \ Resize to custom dimensions: ```bash -curl -X POST http://localhost:1349/api/v1/tools/resize-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/resize-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"width": 1280, "height": 720}' diff --git a/apps/docs/tools/reverse-video.md b/apps/docs/tools/video/reverse-video.md similarity index 88% rename from apps/docs/tools/reverse-video.md rename to apps/docs/tools/video/reverse-video.md index 0c428332..8cd5ca62 100644 --- a/apps/docs/tools/reverse-video.md +++ b/apps/docs/tools/video/reverse-video.md @@ -8,7 +8,7 @@ Play a video clip backwards. The audio track is also reversed. ## API Endpoint -`POST /api/v1/tools/reverse-video` +`POST /api/v1/tools/video/reverse-video` Accepts multipart form data with a video file. This tool has no configurable settings. @@ -19,7 +19,7 @@ This tool has no parameters. It reverses the entire video. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/reverse-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/reverse-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` diff --git a/apps/docs/tools/rotate-video.md b/apps/docs/tools/video/rotate-video.md similarity index 91% rename from apps/docs/tools/rotate-video.md rename to apps/docs/tools/video/rotate-video.md index 9d9a827f..65ecd8f9 100644 --- a/apps/docs/tools/rotate-video.md +++ b/apps/docs/tools/video/rotate-video.md @@ -8,7 +8,7 @@ Rotate a video by 90, 180, or 270 degrees, or flip it horizontally or vertically ## API Endpoint -`POST /api/v1/tools/rotate-video` +`POST /api/v1/tools/video/rotate-video` Accepts multipart form data with a video file and a JSON `settings` field. @@ -29,7 +29,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/rotate-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/rotate-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"transform": "cw90"}' diff --git a/apps/docs/tools/stabilize-video.md b/apps/docs/tools/video/stabilize-video.md similarity index 91% rename from apps/docs/tools/stabilize-video.md rename to apps/docs/tools/video/stabilize-video.md index 9e748698..72bac43d 100644 --- a/apps/docs/tools/stabilize-video.md +++ b/apps/docs/tools/video/stabilize-video.md @@ -8,7 +8,7 @@ Reduce camera shake in handheld footage using FFmpeg's two-pass vidstab stabiliz ## API Endpoint -`POST /api/v1/tools/stabilize-video` +`POST /api/v1/tools/video/stabilize-video` Accepts multipart form data with a video file and a JSON `settings` field. This is an async endpoint - it returns `202 Accepted` immediately and progress is streamed via SSE at `GET /api/v1/jobs/{jobId}/progress`. @@ -21,7 +21,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. This ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/stabilize-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/stabilize-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"smoothing": 30}' diff --git a/apps/docs/tools/trim-video.md b/apps/docs/tools/video/trim-video.md similarity index 92% rename from apps/docs/tools/trim-video.md rename to apps/docs/tools/video/trim-video.md index 1ef71893..41b59069 100644 --- a/apps/docs/tools/trim-video.md +++ b/apps/docs/tools/video/trim-video.md @@ -8,7 +8,7 @@ Cut a clip out of a video by specifying start and end times in seconds, with an ## API Endpoint -`POST /api/v1/tools/trim-video` +`POST /api/v1/tools/video/trim-video` Accepts multipart form data with a video file and a JSON `settings` field. @@ -23,7 +23,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/trim-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/trim-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"startS": 5, "endS": 30, "precise": true}' diff --git a/apps/docs/tools/video-color.md b/apps/docs/tools/video/video-color.md similarity index 92% rename from apps/docs/tools/video-color.md rename to apps/docs/tools/video/video-color.md index 9fb11f94..40f1a58a 100644 --- a/apps/docs/tools/video-color.md +++ b/apps/docs/tools/video/video-color.md @@ -8,7 +8,7 @@ Adjust brightness, contrast, saturation, and gamma correction on a video. ## API Endpoint -`POST /api/v1/tools/video-color` +`POST /api/v1/tools/video/video-color` Accepts multipart form data with a video file and a JSON `settings` field. @@ -24,7 +24,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/video-color \ +curl -X POST http://localhost:1349/api/v1/tools/video/video-color \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"brightness": 0.1, "contrast": 1.2, "saturation": 1.5}' diff --git a/apps/docs/tools/video-loudnorm.md b/apps/docs/tools/video/video-loudnorm.md similarity index 89% rename from apps/docs/tools/video-loudnorm.md rename to apps/docs/tools/video/video-loudnorm.md index b532987d..529611ff 100644 --- a/apps/docs/tools/video-loudnorm.md +++ b/apps/docs/tools/video/video-loudnorm.md @@ -8,7 +8,7 @@ Normalize video audio volume to the EBU R128 broadcast loudness standard. ## API Endpoint -`POST /api/v1/tools/video-loudnorm` +`POST /api/v1/tools/video/video-loudnorm` Accepts multipart form data with a video file. This tool has no configurable settings. @@ -19,7 +19,7 @@ This tool has no parameters. It applies EBU R128 loudness normalization to the a ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/video-loudnorm \ +curl -X POST http://localhost:1349/api/v1/tools/video/video-loudnorm \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` diff --git a/apps/docs/tools/video-metadata.md b/apps/docs/tools/video/video-metadata.md similarity index 90% rename from apps/docs/tools/video-metadata.md rename to apps/docs/tools/video/video-metadata.md index 760cd84c..01247e99 100644 --- a/apps/docs/tools/video-metadata.md +++ b/apps/docs/tools/video/video-metadata.md @@ -8,7 +8,7 @@ Strip metadata (creation date, GPS coordinates, camera model, software tags, etc ## API Endpoint -`POST /api/v1/tools/video-metadata` +`POST /api/v1/tools/video/video-metadata` Accepts multipart form data with a video file. This tool has no configurable settings. @@ -19,7 +19,7 @@ This tool has no parameters. It strips all metadata from the video container. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/video-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/video/video-metadata \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` diff --git a/apps/docs/tools/video-speed.md b/apps/docs/tools/video/video-speed.md similarity index 91% rename from apps/docs/tools/video-speed.md rename to apps/docs/tools/video/video-speed.md index a9022072..8cd18ba3 100644 --- a/apps/docs/tools/video-speed.md +++ b/apps/docs/tools/video/video-speed.md @@ -8,7 +8,7 @@ Speed up or slow down a video with an option to preserve audio pitch. ## API Endpoint -`POST /api/v1/tools/video-speed` +`POST /api/v1/tools/video/video-speed` Accepts multipart form data with a video file and a JSON `settings` field. @@ -22,7 +22,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/video-speed \ +curl -X POST http://localhost:1349/api/v1/tools/video/video-speed \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"factor": 0.5, "keepPitch": true}' diff --git a/apps/docs/tools/video-to-frames.md b/apps/docs/tools/video/video-to-frames.md similarity index 90% rename from apps/docs/tools/video-to-frames.md rename to apps/docs/tools/video/video-to-frames.md index bfc431ab..21ca6da9 100644 --- a/apps/docs/tools/video-to-frames.md +++ b/apps/docs/tools/video/video-to-frames.md @@ -8,7 +8,7 @@ Extract individual frames from a video and download them as a ZIP archive of PNG ## API Endpoint -`POST /api/v1/tools/video-to-frames` +`POST /api/v1/tools/video/video-to-frames` Accepts multipart form data with a video file and a JSON `settings` field. @@ -26,7 +26,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. Extract every 30th frame as JPG: ```bash -curl -X POST http://localhost:1349/api/v1/tools/video-to-frames \ +curl -X POST http://localhost:1349/api/v1/tools/video/video-to-frames \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"mode": "nth", "n": 30, "format": "jpg"}' @@ -35,7 +35,7 @@ curl -X POST http://localhost:1349/api/v1/tools/video-to-frames \ Extract frames at specific timestamps: ```bash -curl -X POST http://localhost:1349/api/v1/tools/video-to-frames \ +curl -X POST http://localhost:1349/api/v1/tools/video/video-to-frames \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"mode": "timestamps", "timestamps": "1.5,5,12.3"}' diff --git a/apps/docs/tools/video-to-gif.md b/apps/docs/tools/video/video-to-gif.md similarity index 92% rename from apps/docs/tools/video-to-gif.md rename to apps/docs/tools/video/video-to-gif.md index 6ddf37db..40794cc4 100644 --- a/apps/docs/tools/video-to-gif.md +++ b/apps/docs/tools/video/video-to-gif.md @@ -8,7 +8,7 @@ Turn a video clip into an animated GIF with configurable frame rate, width, star ## API Endpoint -`POST /api/v1/tools/video-to-gif` +`POST /api/v1/tools/video/video-to-gif` Accepts multipart form data with a video file and a JSON `settings` field. This is an async endpoint - it returns `202 Accepted` immediately and progress is streamed via SSE at `GET /api/v1/jobs/{jobId}/progress`. @@ -24,7 +24,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. This ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/video-to-gif \ +curl -X POST http://localhost:1349/api/v1/tools/video/video-to-gif \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"fps": 15, "width": 320, "startS": 2, "durationS": 8}' diff --git a/apps/docs/tools/video-to-webp.md b/apps/docs/tools/video/video-to-webp.md similarity index 92% rename from apps/docs/tools/video-to-webp.md rename to apps/docs/tools/video/video-to-webp.md index 895d9659..c931de55 100644 --- a/apps/docs/tools/video-to-webp.md +++ b/apps/docs/tools/video/video-to-webp.md @@ -8,7 +8,7 @@ Convert a video clip into an animated WebP image with configurable frame rate, w ## API Endpoint -`POST /api/v1/tools/video-to-webp` +`POST /api/v1/tools/video/video-to-webp` Accepts multipart form data with a video file and a JSON `settings` field. @@ -24,7 +24,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/video-to-webp \ +curl -X POST http://localhost:1349/api/v1/tools/video/video-to-webp \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"fps": 15, "width": 640, "quality": 80}' diff --git a/apps/docs/tools/watermark-video.md b/apps/docs/tools/video/watermark-video.md similarity index 93% rename from apps/docs/tools/watermark-video.md rename to apps/docs/tools/video/watermark-video.md index 13ca28c4..bc04cc61 100644 --- a/apps/docs/tools/watermark-video.md +++ b/apps/docs/tools/video/watermark-video.md @@ -8,7 +8,7 @@ Burn a text watermark onto every frame of a video with configurable position, si ## API Endpoint -`POST /api/v1/tools/watermark-video` +`POST /api/v1/tools/video/watermark-video` Accepts multipart form data with a video file and a JSON `settings` field. @@ -31,7 +31,7 @@ Accepts multipart form data with a video file and a JSON `settings` field. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/watermark-video \ +curl -X POST http://localhost:1349/api/v1/tools/video/watermark-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"text": "PREVIEW", "position": "c", "fontSize": 48, "opacity": 0.3}'