From 8532f3227b130406bf572e478f03833e8baaaf6a Mon Sep 17 00:00:00 2001 From: SnapOtter Date: Wed, 17 Jun 2026 17:13:31 +0800 Subject: [PATCH] docs: audit all 157 tool pages against live schemas Reconcile every tool page's parameters, defaults, and response shape against the tool's Zod settings schema and executionHint in code. Notable fixes: color-palette (add count + format params, hex output, median-cut algorithm), favicon (add 5 params, was documented as having none), qr-generate (add logoDataUri), convert (add ppm/eps/tga formats), video-loudnorm (-16 LUFS not -14), smart-crop (async 202 not sync 200), images-to-video (1080x1080 square), and several output-filename and behavior-note corrections. Also normalize API endpoint paths to /api/v1/tools/ (no modality segment) and standardize curl examples on the Docker API port 1349. Verified with a clean docs build. --- apps/docs/api/ai.md | 4 +- apps/docs/api/rest.md | 32 ++++++++-------- apps/docs/guide/getting-started.md | 2 +- apps/docs/tools/audio/audio-channels.md | 4 +- apps/docs/tools/audio/audio-metadata.md | 6 +-- apps/docs/tools/audio/audio-speed.md | 6 +-- apps/docs/tools/audio/convert-audio.md | 4 +- apps/docs/tools/audio/fade-audio.md | 8 ++-- apps/docs/tools/audio/merge-audio.md | 4 +- apps/docs/tools/audio/noise-reduction.md | 4 +- apps/docs/tools/audio/normalize-audio.md | 4 +- apps/docs/tools/audio/pitch-shift.md | 4 +- apps/docs/tools/audio/reverse-audio.md | 4 +- apps/docs/tools/audio/ringtone-maker.md | 4 +- apps/docs/tools/audio/silence-removal.md | 4 +- apps/docs/tools/audio/split-audio.md | 10 ++--- apps/docs/tools/audio/transcribe-audio.md | 4 +- apps/docs/tools/audio/trim-audio.md | 4 +- apps/docs/tools/audio/volume-adjust.md | 4 +- apps/docs/tools/audio/waveform-image.md | 4 +- apps/docs/tools/data/chart-maker.md | 11 +++--- apps/docs/tools/data/create-zip.md | 4 +- apps/docs/tools/data/csv-excel.md | 6 +-- apps/docs/tools/data/csv-json.md | 6 +-- apps/docs/tools/data/extract-zip.md | 6 +-- apps/docs/tools/data/json-xml.md | 6 +-- apps/docs/tools/data/merge-csvs.md | 4 +- apps/docs/tools/data/split-csv.md | 6 +-- apps/docs/tools/data/xml-to-csv.md | 4 +- apps/docs/tools/data/yaml-json.md | 8 ++-- apps/docs/tools/image/adjust-colors.md | 8 ++-- apps/docs/tools/image/ai-canvas-expand.md | 4 +- apps/docs/tools/image/background-replace.md | 4 +- apps/docs/tools/image/barcode-generate.md | 4 +- apps/docs/tools/image/barcode-read.md | 4 +- apps/docs/tools/image/beautify.md | 6 +-- apps/docs/tools/image/blur-background.md | 4 +- apps/docs/tools/image/blur-faces.md | 4 +- apps/docs/tools/image/border.md | 4 +- apps/docs/tools/image/bulk-rename.md | 6 +-- apps/docs/tools/image/circle-crop.md | 4 +- apps/docs/tools/image/collage.md | 4 +- apps/docs/tools/image/color-blindness.md | 4 +- apps/docs/tools/image/color-palette.md | 35 ++++++++++------- apps/docs/tools/image/colorize.md | 4 +- apps/docs/tools/image/compare.md | 4 +- apps/docs/tools/image/compose.md | 6 +-- apps/docs/tools/image/compress.md | 6 +-- apps/docs/tools/image/content-aware-resize.md | 8 ++-- apps/docs/tools/image/convert.md | 13 ++++--- apps/docs/tools/image/crop.md | 6 +-- apps/docs/tools/image/duotone.md | 4 +- apps/docs/tools/image/edit-metadata.md | 12 +++--- apps/docs/tools/image/enhance-faces.md | 4 +- apps/docs/tools/image/erase-object.md | 4 +- apps/docs/tools/image/favicon.md | 21 ++++++---- apps/docs/tools/image/find-duplicates.md | 4 +- apps/docs/tools/image/gif-tools.md | 14 +++---- apps/docs/tools/image/gif-webp.md | 4 +- apps/docs/tools/image/histogram.md | 4 +- apps/docs/tools/image/html-to-image.md | 6 +-- apps/docs/tools/image/image-enhancement.md | 10 ++--- apps/docs/tools/image/image-pad.md | 4 +- apps/docs/tools/image/image-to-base64.md | 6 +-- apps/docs/tools/image/image-to-pdf.md | 8 ++-- apps/docs/tools/image/info.md | 4 +- apps/docs/tools/image/lqip-placeholder.md | 8 ++-- apps/docs/tools/image/meme-generator.md | 6 +-- apps/docs/tools/image/noise-removal.md | 8 +++- apps/docs/tools/image/ocr.md | 8 +++- apps/docs/tools/image/optimize-for-web.md | 10 ++--- apps/docs/tools/image/passport-photo.md | 16 +++++--- apps/docs/tools/image/pixelate.md | 6 +-- apps/docs/tools/image/qr-generate.md | 8 ++-- apps/docs/tools/image/red-eye-removal.md | 8 +++- apps/docs/tools/image/remove-background.md | 12 ++++-- apps/docs/tools/image/replace-color.md | 6 +-- apps/docs/tools/image/resize.md | 6 +-- apps/docs/tools/image/restore-photo.md | 4 +- apps/docs/tools/image/rotate.md | 8 ++-- apps/docs/tools/image/sharpening.md | 6 +-- apps/docs/tools/image/smart-crop.md | 38 +++++++++++++++---- apps/docs/tools/image/split.md | 4 +- apps/docs/tools/image/sprite-sheet.md | 4 +- apps/docs/tools/image/stitch.md | 4 +- apps/docs/tools/image/strip-metadata.md | 10 ++--- apps/docs/tools/image/svg-to-raster.md | 8 ++-- apps/docs/tools/image/text-overlay.md | 6 +-- apps/docs/tools/image/transparency-fixer.md | 4 +- apps/docs/tools/image/upscale.md | 4 +- apps/docs/tools/image/vectorize.md | 6 +-- apps/docs/tools/image/vignette.md | 4 +- apps/docs/tools/image/watermark-image.md | 4 +- apps/docs/tools/image/watermark-text.md | 6 +-- apps/docs/tools/pdf/booklet-pdf.md | 4 +- apps/docs/tools/pdf/compress-pdf.md | 8 ++-- apps/docs/tools/pdf/convert-document.md | 4 +- apps/docs/tools/pdf/convert-presentation.md | 4 +- apps/docs/tools/pdf/convert-spreadsheet.md | 4 +- apps/docs/tools/pdf/crop-pdf.md | 4 +- apps/docs/tools/pdf/epub-convert.md | 4 +- apps/docs/tools/pdf/excel-to-pdf.md | 4 +- apps/docs/tools/pdf/extract-pages.md | 4 +- apps/docs/tools/pdf/flatten-pdf.md | 4 +- apps/docs/tools/pdf/grayscale-pdf.md | 4 +- apps/docs/tools/pdf/html-to-pdf.md | 4 +- apps/docs/tools/pdf/linearize-pdf.md | 4 +- apps/docs/tools/pdf/markdown-to-docx.md | 4 +- apps/docs/tools/pdf/markdown-to-html.md | 4 +- apps/docs/tools/pdf/markdown-to-pdf.md | 4 +- apps/docs/tools/pdf/merge-pdf.md | 4 +- apps/docs/tools/pdf/nup-pdf.md | 4 +- apps/docs/tools/pdf/ocr-pdf.md | 4 +- apps/docs/tools/pdf/organize-pdf.md | 4 +- apps/docs/tools/pdf/pdf-metadata.md | 4 +- apps/docs/tools/pdf/pdf-page-numbers.md | 4 +- apps/docs/tools/pdf/pdf-to-image.md | 16 +++++--- apps/docs/tools/pdf/pdf-to-text.md | 4 +- apps/docs/tools/pdf/pdf-to-word.md | 4 +- apps/docs/tools/pdf/pdfa-convert.md | 4 +- apps/docs/tools/pdf/powerpoint-to-pdf.md | 4 +- apps/docs/tools/pdf/protect-pdf.md | 4 +- apps/docs/tools/pdf/redact-pdf.md | 4 +- apps/docs/tools/pdf/remove-pages.md | 4 +- apps/docs/tools/pdf/repair-pdf.md | 4 +- apps/docs/tools/pdf/rotate-pdf.md | 4 +- apps/docs/tools/pdf/split-pdf.md | 6 +-- apps/docs/tools/pdf/to-epub.md | 4 +- apps/docs/tools/pdf/unlock-pdf.md | 4 +- apps/docs/tools/pdf/watermark-pdf.md | 4 +- apps/docs/tools/pdf/word-to-pdf.md | 4 +- apps/docs/tools/video/aspect-pad.md | 4 +- apps/docs/tools/video/auto-subtitles.md | 4 +- apps/docs/tools/video/blur-pad.md | 4 +- apps/docs/tools/video/burn-subtitles.md | 4 +- apps/docs/tools/video/change-fps.md | 4 +- apps/docs/tools/video/compress-video.md | 4 +- apps/docs/tools/video/convert-video.md | 4 +- apps/docs/tools/video/crop-video.md | 4 +- apps/docs/tools/video/embed-subtitles.md | 4 +- apps/docs/tools/video/extract-audio.md | 4 +- apps/docs/tools/video/extract-subtitles.md | 4 +- apps/docs/tools/video/gif-to-video.md | 4 +- apps/docs/tools/video/images-to-video.md | 6 +-- apps/docs/tools/video/merge-videos.md | 4 +- apps/docs/tools/video/mute-video.md | 4 +- apps/docs/tools/video/replace-audio.md | 4 +- apps/docs/tools/video/resize-video.md | 6 +-- apps/docs/tools/video/reverse-video.md | 4 +- apps/docs/tools/video/rotate-video.md | 4 +- apps/docs/tools/video/stabilize-video.md | 4 +- apps/docs/tools/video/trim-video.md | 4 +- apps/docs/tools/video/video-color.md | 4 +- apps/docs/tools/video/video-loudnorm.md | 6 +-- apps/docs/tools/video/video-metadata.md | 17 +++++++-- apps/docs/tools/video/video-speed.md | 4 +- apps/docs/tools/video/video-to-frames.md | 6 +-- apps/docs/tools/video/video-to-gif.md | 6 +-- apps/docs/tools/video/video-to-webp.md | 4 +- apps/docs/tools/video/watermark-video.md | 4 +- 160 files changed, 518 insertions(+), 441 deletions(-) diff --git a/apps/docs/api/ai.md b/apps/docs/api/ai.md index 2b5cab83..b9cb1a77 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/image-enhancement/analyze` which returns the detected corrections without applying them. +An additional analysis endpoint is available at `POST /api/v1/tools/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/image/transparency-fixer \ +curl -X POST http://localhost:1349/api/v1/tools/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 c6b69b5e..a18ccbe5 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/image/resize \ +curl http://localhost:1349/api/v1/tools/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/image/resize \ +curl http://localhost:1349/api/v1/tools/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/image/html-to-image` +**Endpoint:** `POST /api/v1/tools/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/image/html-to-image \ +curl -X POST http://localhost:1349/api/v1/tools/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/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. | +| `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. | ## Batch Processing Apply any tool to multiple files at once. Returns a ZIP archive. ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/compress/batch \ +curl -X POST http://localhost:1349/api/v1/tools/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 b1156421..0bc36f36 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/image/resize \ +curl -X POST http://localhost:1349/api/v1/tools/resize \ -H "Authorization: Bearer si_" \ -F "file=@photo.jpg" \ -F 'settings={"width":800,"height":600,"fit":"cover"}' diff --git a/apps/docs/tools/audio/audio-channels.md b/apps/docs/tools/audio/audio-channels.md index 018344b0..95e72268 100644 --- a/apps/docs/tools/audio/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/audio-channels` +`POST /api/v1/tools/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/audio-channels \ +curl -X POST http://localhost:1349/api/v1/tools/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/audio-metadata.md b/apps/docs/tools/audio/audio-metadata.md index dcbf30b1..c992131f 100644 --- a/apps/docs/tools/audio/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/audio-metadata` +`POST /api/v1/tools/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/audio-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/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/audio-metadata \ Strip all metadata: ```bash -curl -X POST http://localhost:1349/api/v1/tools/audio/audio-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/audio-metadata \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" \ -F 'settings={"strip": true}' diff --git a/apps/docs/tools/audio/audio-speed.md b/apps/docs/tools/audio/audio-speed.md index 81aad290..182f9558 100644 --- a/apps/docs/tools/audio/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/audio-speed` +`POST /api/v1/tools/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/audio-speed \ +curl -X POST http://localhost:1349/api/v1/tools/audio-speed \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" \ -F 'settings={"factor": 2}' @@ -41,5 +41,5 @@ curl -X POST http://localhost:1349/api/v1/tools/audio/audio-speed \ ## Notes - A factor of `0.25` plays at quarter speed (4x longer). A factor of `4` plays at quadruple speed (4x shorter). -- Pitch changes proportionally with speed. Use pitch-shift if you need to adjust pitch independently. +- Pitch is preserved while speed changes (time-stretch). Use pitch-shift to adjust pitch independently. - Output format matches the input format. diff --git a/apps/docs/tools/audio/convert-audio.md b/apps/docs/tools/audio/convert-audio.md index 502552d7..2d413ea0 100644 --- a/apps/docs/tools/audio/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/audio/convert-audio` +`POST /api/v1/tools/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/audio/convert-audio \ +curl -X POST http://localhost:1349/api/v1/tools/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/audio/fade-audio.md b/apps/docs/tools/audio/fade-audio.md index 0d5c744c..508d5577 100644 --- a/apps/docs/tools/audio/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/audio/fade-audio` +`POST /api/v1/tools/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/audio/fade-audio \ +curl -X POST http://localhost:1349/api/v1/tools/fade-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" \ -F 'settings={"fadeInS": 2, "fadeOutS": 3}' @@ -41,6 +41,6 @@ curl -X POST http://localhost:1349/api/v1/tools/audio/fade-audio \ ## Notes -- Set either value to `0` to skip that fade direction. -- The fade duration should not exceed the audio length. +- Set either value to `0` to skip that fade direction. At least one must be greater than 0. +- The fade duration is clamped to the audio length if it exceeds it. - Output format matches the input format. diff --git a/apps/docs/tools/audio/merge-audio.md b/apps/docs/tools/audio/merge-audio.md index 3ac7798a..b9af04db 100644 --- a/apps/docs/tools/audio/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/audio/merge-audio` +`POST /api/v1/tools/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/audio/merge-audio \ +curl -X POST http://localhost:1349/api/v1/tools/merge-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@intro.mp3" \ -F "file=@main.mp3" \ diff --git a/apps/docs/tools/audio/noise-reduction.md b/apps/docs/tools/audio/noise-reduction.md index 9f005742..b766353b 100644 --- a/apps/docs/tools/audio/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/audio/noise-reduction` +`POST /api/v1/tools/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/audio/noise-reduction \ +curl -X POST http://localhost:1349/api/v1/tools/noise-reduction \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" \ -F 'settings={"strength": "strong"}' diff --git a/apps/docs/tools/audio/normalize-audio.md b/apps/docs/tools/audio/normalize-audio.md index c56e447a..fb57610b 100644 --- a/apps/docs/tools/audio/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/audio/normalize-audio` +`POST /api/v1/tools/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/audio/normalize-audio \ +curl -X POST http://localhost:1349/api/v1/tools/normalize-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" ``` diff --git a/apps/docs/tools/audio/pitch-shift.md b/apps/docs/tools/audio/pitch-shift.md index a39ff129..47e99098 100644 --- a/apps/docs/tools/audio/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/audio/pitch-shift` +`POST /api/v1/tools/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/audio/pitch-shift \ +curl -X POST http://localhost:1349/api/v1/tools/pitch-shift \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" \ -F 'settings={"semitones": -5}' diff --git a/apps/docs/tools/audio/reverse-audio.md b/apps/docs/tools/audio/reverse-audio.md index c7d67cd8..44c24cb7 100644 --- a/apps/docs/tools/audio/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/audio/reverse-audio` +`POST /api/v1/tools/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/audio/reverse-audio \ +curl -X POST http://localhost:1349/api/v1/tools/reverse-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" ``` diff --git a/apps/docs/tools/audio/ringtone-maker.md b/apps/docs/tools/audio/ringtone-maker.md index 922a2433..5d8f276a 100644 --- a/apps/docs/tools/audio/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/audio/ringtone-maker` +`POST /api/v1/tools/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/audio/ringtone-maker \ +curl -X POST http://localhost:1349/api/v1/tools/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/audio/silence-removal.md b/apps/docs/tools/audio/silence-removal.md index 2f14a994..9734bbe6 100644 --- a/apps/docs/tools/audio/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/audio/silence-removal` +`POST /api/v1/tools/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/audio/silence-removal \ +curl -X POST http://localhost:1349/api/v1/tools/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/audio/split-audio.md b/apps/docs/tools/audio/split-audio.md index 17a8b05b..89a55ede 100644 --- a/apps/docs/tools/audio/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/audio/split-audio` +`POST /api/v1/tools/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/audio/split-audio \ +curl -X POST http://localhost:1349/api/v1/tools/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/audio/split-audio \ Split by silence detection: ```bash -curl -X POST http://localhost:1349/api/v1/tools/audio/split-audio \ +curl -X POST http://localhost:1349/api/v1/tools/split-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" \ -F 'settings={"mode": "silence", "thresholdDb": -35, "minSilenceS": 0.5}' @@ -47,7 +47,7 @@ curl -X POST http://localhost:1349/api/v1/tools/audio/split-audio \ ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/audio-segments.zip", + "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/audio_parts.zip", "originalSize": 4500000, "processedSize": 4600000 } @@ -57,5 +57,5 @@ curl -X POST http://localhost:1349/api/v1/tools/audio/split-audio \ - The `downloadUrl` points to a ZIP archive containing all segments. - Only the parameters relevant to the chosen `mode` are used; others are ignored. -- Segment filenames are numbered sequentially (e.g. `001.mp3`, `002.mp3`). +- Segment filenames are numbered sequentially (e.g. `part-000.mp3`, `part-001.mp3`). - Output format matches the input format. diff --git a/apps/docs/tools/audio/transcribe-audio.md b/apps/docs/tools/audio/transcribe-audio.md index c531041c..44269dc5 100644 --- a/apps/docs/tools/audio/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/audio/transcribe-audio` +`POST /api/v1/tools/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/audio/transcribe-audio \ +curl -X POST http://localhost:1349/api/v1/tools/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/audio/trim-audio.md b/apps/docs/tools/audio/trim-audio.md index 92e7da30..0cc4d0b3 100644 --- a/apps/docs/tools/audio/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/audio/trim-audio` +`POST /api/v1/tools/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/audio/trim-audio \ +curl -X POST http://localhost:1349/api/v1/tools/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/audio/volume-adjust.md b/apps/docs/tools/audio/volume-adjust.md index 1559d44b..97c1f201 100644 --- a/apps/docs/tools/audio/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/audio/volume-adjust` +`POST /api/v1/tools/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/audio/volume-adjust \ +curl -X POST http://localhost:1349/api/v1/tools/volume-adjust \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@audio.mp3" \ -F 'settings={"gainDb": 6}' diff --git a/apps/docs/tools/audio/waveform-image.md b/apps/docs/tools/audio/waveform-image.md index 3d66b3f7..bb269c2d 100644 --- a/apps/docs/tools/audio/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/audio/waveform-image` +`POST /api/v1/tools/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/audio/waveform-image \ +curl -X POST http://localhost:1349/api/v1/tools/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/data/chart-maker.md b/apps/docs/tools/data/chart-maker.md index f0f0d8e8..73d213b5 100644 --- a/apps/docs/tools/data/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/data/chart-maker` +`POST /api/v1/tools/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/data/chart-maker \ +curl -X POST http://localhost:1349/api/v1/tools/chart-maker \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@sales.csv" \ -F 'settings={"kind": "line", "title": "Monthly Sales", "width": 960, "height": 540}' @@ -35,7 +35,7 @@ curl -X POST http://localhost:1349/api/v1/tools/data/chart-maker \ ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/sales.png", + "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/sales_chart.png", "originalSize": 1024, "processedSize": 48500 } @@ -44,6 +44,7 @@ curl -X POST http://localhost:1349/api/v1/tools/data/chart-maker \ ## Notes - Input must be a `.csv` or `.json` file. CSV files should have a header row with column names. -- The first column is used as the category axis; remaining numeric columns become data series. -- JSON input should be an array of objects with consistent keys. +- The first column is used as the category label; the second column must be numeric and provides the data values. Only two columns are used. +- JSON input should be an array of `{label, value}` objects, or a plain object whose keys become labels and values become data points. +- Maximum 100 data points. All values must be zero or greater. - Output is always a PNG image regardless of input format. diff --git a/apps/docs/tools/data/create-zip.md b/apps/docs/tools/data/create-zip.md index 0a475a38..b3140c50 100644 --- a/apps/docs/tools/data/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/data/create-zip` +`POST /api/v1/tools/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/data/create-zip \ +curl -X POST http://localhost:1349/api/v1/tools/create-zip \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.pdf" \ -F "file=@data.csv" \ diff --git a/apps/docs/tools/data/csv-excel.md b/apps/docs/tools/data/csv-excel.md index 818eb57d..446d44ce 100644 --- a/apps/docs/tools/data/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/data/csv-excel` +`POST /api/v1/tools/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/data/csv-excel \ +curl -X POST http://localhost:1349/api/v1/tools/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/data/csv-excel \ Excel to CSV: ```bash -curl -X POST http://localhost:1349/api/v1/tools/data/csv-excel \ +curl -X POST http://localhost:1349/api/v1/tools/csv-excel \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.xlsx" \ -F 'settings={"sheet": 2}' diff --git a/apps/docs/tools/data/csv-json.md b/apps/docs/tools/data/csv-json.md index d149e873..4a0b2366 100644 --- a/apps/docs/tools/data/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/data/csv-json` +`POST /api/v1/tools/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/data/csv-json \ +curl -X POST http://localhost:1349/api/v1/tools/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/data/csv-json \ JSON to CSV: ```bash -curl -X POST http://localhost:1349/api/v1/tools/data/csv-json \ +curl -X POST http://localhost:1349/api/v1/tools/csv-json \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@users.json" \ -F 'settings={}' diff --git a/apps/docs/tools/data/extract-zip.md b/apps/docs/tools/data/extract-zip.md index d5a568fb..a393cabb 100644 --- a/apps/docs/tools/data/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/data/extract-zip` +`POST /api/v1/tools/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/data/extract-zip \ +curl -X POST http://localhost:1349/api/v1/tools/extract-zip \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@archive.zip" ``` @@ -29,7 +29,7 @@ curl -X POST http://localhost:1349/api/v1/tools/data/extract-zip \ ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/archive.zip", + "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/archive_extracted.zip", "originalSize": 2800000, "processedSize": 3500000 } diff --git a/apps/docs/tools/data/json-xml.md b/apps/docs/tools/data/json-xml.md index 8b386126..91e9f038 100644 --- a/apps/docs/tools/data/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/data/json-xml` +`POST /api/v1/tools/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/data/json-xml \ +curl -X POST http://localhost:1349/api/v1/tools/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/data/json-xml \ XML to JSON: ```bash -curl -X POST http://localhost:1349/api/v1/tools/data/json-xml \ +curl -X POST http://localhost:1349/api/v1/tools/json-xml \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@config.xml" \ -F 'settings={"pretty": true}' diff --git a/apps/docs/tools/data/merge-csvs.md b/apps/docs/tools/data/merge-csvs.md index 96ce7fc3..a804a758 100644 --- a/apps/docs/tools/data/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/data/merge-csvs` +`POST /api/v1/tools/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/data/merge-csvs \ +curl -X POST http://localhost:1349/api/v1/tools/merge-csvs \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@january.csv" \ -F "file=@february.csv" \ diff --git a/apps/docs/tools/data/split-csv.md b/apps/docs/tools/data/split-csv.md index a36f4e2c..6374a851 100644 --- a/apps/docs/tools/data/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/data/split-csv` +`POST /api/v1/tools/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/data/split-csv \ +curl -X POST http://localhost:1349/api/v1/tools/split-csv \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@large-dataset.csv" \ -F 'settings={"rowsPerFile": 500, "keepHeader": true}' @@ -33,7 +33,7 @@ curl -X POST http://localhost:1349/api/v1/tools/data/split-csv \ ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/large-dataset-split.zip", + "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/large-dataset_parts.zip", "originalSize": 1048576, "processedSize": 1050000 } diff --git a/apps/docs/tools/data/xml-to-csv.md b/apps/docs/tools/data/xml-to-csv.md index 6d1d6179..a81339da 100644 --- a/apps/docs/tools/data/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/data/xml-to-csv` +`POST /api/v1/tools/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/data/xml-to-csv \ +curl -X POST http://localhost:1349/api/v1/tools/xml-to-csv \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@catalog.xml" ``` diff --git a/apps/docs/tools/data/yaml-json.md b/apps/docs/tools/data/yaml-json.md index c0f2e8d1..8ec74168 100644 --- a/apps/docs/tools/data/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/data/yaml-json` +`POST /api/v1/tools/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/data/yaml-json \ +curl -X POST http://localhost:1349/api/v1/tools/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/data/yaml-json \ JSON to YAML: ```bash -curl -X POST http://localhost:1349/api/v1/tools/data/yaml-json \ +curl -X POST http://localhost:1349/api/v1/tools/yaml-json \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@config.json" ``` @@ -49,4 +49,4 @@ curl -X POST http://localhost:1349/api/v1/tools/data/yaml-json \ - Conversion direction is auto-detected from the input file extension: `.yaml` or `.yml` produces `.json`, and `.json` produces `.yaml`. - Both `.yaml` and `.yml` extensions are accepted. -- Multi-document YAML files (separated by `---`) are supported. +- Only the first document in a multi-document YAML file is converted; additional documents separated by `---` are ignored. diff --git a/apps/docs/tools/image/adjust-colors.md b/apps/docs/tools/image/adjust-colors.md index a96fe4b0..ba76462c 100644 --- a/apps/docs/tools/image/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/image/adjust-colors` +`POST /api/v1/tools/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/image/adjust-colors \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/adjust-colors \ Apply a warm vintage look: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/adjust-colors \ +curl -X POST http://localhost:1349/api/v1/tools/adjust-colors \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F 'settings={"temperature": 40, "saturation": -15, "contrast": 10, "effect": "sepia"}' @@ -64,5 +64,5 @@ curl -X POST http://localhost:1349/api/v1/tools/image/adjust-colors \ - Adjustments are applied in this order: brightness, contrast, exposure, saturation/hue, temperature/tint, sharpness, channels, effects. - Temperature uses a 3x3 color recombination matrix on the blue-orange and green-magenta axes. - Exposure maps to Sharp's gamma function (positive brightens midtones, negative darkens them). -- This endpoint also responds at the legacy paths `/api/v1/tools/brightness-contrast`, `/api/v1/tools/saturation`, `/api/v1/tools/color-channels`, and `/api/v1/tools/color-effects`. +- This endpoint also responds at the legacy paths `/api/v1/tools/brightness-contrast`, `/api/v1/tools/saturation`, `/api/v1/tools/color-channels`, and `/api/v1/tools/color-effects`. All use the same schema. - Output format matches the input format. HEIC, RAW, PSD, and SVG inputs are automatically decoded before processing. diff --git a/apps/docs/tools/image/ai-canvas-expand.md b/apps/docs/tools/image/ai-canvas-expand.md index ca4032a7..8797dda8 100644 --- a/apps/docs/tools/image/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/image/ai-canvas-expand` +`POST /api/v1/tools/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/image/ai-canvas-expand \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/background-replace.md b/apps/docs/tools/image/background-replace.md index 68f6e612..55ee767f 100644 --- a/apps/docs/tools/image/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/image/background-replace` +`POST /api/v1/tools/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/image/background-replace \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/barcode-generate.md b/apps/docs/tools/image/barcode-generate.md index 3f991b8b..13b4b88a 100644 --- a/apps/docs/tools/image/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/image/barcode-generate` +`POST /api/v1/tools/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/image/barcode-generate \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/barcode-read.md b/apps/docs/tools/image/barcode-read.md index 837006a9..7c180cbd 100644 --- a/apps/docs/tools/image/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/image/barcode-read` +`POST /api/v1/tools/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/image/barcode-read \ +curl -X POST http://localhost:1349/api/v1/tools/barcode-read \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@receipt.jpg" \ -F 'settings={"tryHarder": true}' diff --git a/apps/docs/tools/image/beautify.md b/apps/docs/tools/image/beautify.md index 2e3b24ca..59cf8b97 100644 --- a/apps/docs/tools/image/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/image/beautify` +`POST /api/v1/tools/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/image/beautify \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/beautify \ ### With Background Image ```bash -curl -X POST http://localhost:13490/api/v1/tools/image/beautify \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/blur-background.md b/apps/docs/tools/image/blur-background.md index f6b24e62..a95e48cb 100644 --- a/apps/docs/tools/image/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/image/blur-background` +`POST /api/v1/tools/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/image/blur-background \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/blur-faces.md b/apps/docs/tools/image/blur-faces.md index 1d378de2..0cf833be 100644 --- a/apps/docs/tools/image/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/image/blur-faces` +`POST /api/v1/tools/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/image/blur-faces \ +curl -X POST http://localhost:1349/api/v1/tools/blur-faces \ -F "file=@group-photo.jpg" \ -F 'settings={"blurRadius":40,"sensitivity":0.3}' ``` diff --git a/apps/docs/tools/image/border.md b/apps/docs/tools/image/border.md index 54bb58a6..75d5d218 100644 --- a/apps/docs/tools/image/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/image/border` +`POST /api/v1/tools/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/image/border \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/bulk-rename.md b/apps/docs/tools/image/bulk-rename.md index 0d0d6504..09917bfa 100644 --- a/apps/docs/tools/image/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/image/bulk-rename` +`POST /api/v1/tools/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/image/bulk-rename \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/bulk-rename \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/circle-crop.md b/apps/docs/tools/image/circle-crop.md index 8e98d822..39c71478 100644 --- a/apps/docs/tools/image/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/image/circle-crop` +`POST /api/v1/tools/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/image/circle-crop \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/collage.md b/apps/docs/tools/image/collage.md index 77aed410..42ae9060 100644 --- a/apps/docs/tools/image/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/image/collage` +`POST /api/v1/tools/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/image/collage \ +curl -X POST http://localhost:1349/api/v1/tools/collage \ -F "file=@photo1.jpg" \ -F "file=@photo2.jpg" \ -F "file=@photo3.jpg" \ diff --git a/apps/docs/tools/image/color-blindness.md b/apps/docs/tools/image/color-blindness.md index f58e97a8..9483203d 100644 --- a/apps/docs/tools/image/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/image/color-blindness` +`POST /api/v1/tools/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/image/color-blindness \ +curl -X POST http://localhost:1349/api/v1/tools/color-blindness \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@design.png" \ -F 'settings={"simulationType": "deuteranopia"}' diff --git a/apps/docs/tools/image/color-palette.md b/apps/docs/tools/image/color-palette.md index b43d659c..dfeef4f0 100644 --- a/apps/docs/tools/image/color-palette.md +++ b/apps/docs/tools/image/color-palette.md @@ -8,24 +8,24 @@ Extract the dominant colors from an image and return them as hex color values. U ## API Endpoint -`POST /api/v1/tools/image/color-palette` +`POST /api/v1/tools/color-palette` -Accepts multipart form data with an image file. No settings field is needed. +Accepts multipart form data with an image file and an optional JSON `settings` field. ## Parameters -This tool has no configurable parameters. Simply upload the image file. - -| Field | Type | Required | Description | -|-------|------|----------|-------------| -| file | file | Yes | The image to extract colors from | +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------| +| count | integer | No | `8` | Number of colors to extract (2-16) | +| format | string | No | `"hex"` | Color format: `hex`, `rgb`, `hsl` | ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/color-palette \ +curl -X POST http://localhost:1349/api/v1/tools/color-palette \ -H "Authorization: Bearer si_your-api-key" \ - -F "file=@photo.jpg" + -F "file=@photo.jpg" \ + -F 'settings={"count": 6, "format": "hex"}' ``` ## Example Response @@ -41,6 +41,14 @@ curl -X POST http://localhost:1349/api/v1/tools/image/color-palette \ "#a0c0e0", "#806040" ], + "hex": [ + "#304080", + "#e0a060", + "#f0f0f0", + "#203020", + "#a0c0e0", + "#806040" + ], "count": 6 } ``` @@ -50,14 +58,15 @@ curl -X POST http://localhost:1349/api/v1/tools/image/color-palette \ | Field | Type | Description | |-------|------|-------------| | filename | string | Sanitized filename | -| colors | array | Array of hex color strings, ordered by dominance (most frequent first) | +| colors | array | Array of color strings in the requested format, ordered by dominance (most frequent first) | +| hex | array | Array of hex color strings (always hex, regardless of the `format` setting) | | count | number | Number of colors extracted | ## Notes -- Returns up to 8 dominant colors, sorted by frequency (most common first). -- The image is internally resized to 50x50 pixels for analysis, so the palette represents overall color distribution rather than small details. -- Colors are quantized to the nearest multiple of 16 to reduce noise, then similar colors (within RGB Manhattan distance of 48) are merged to avoid near-duplicate entries. +- Returns up to `count` dominant colors (default 8, range 2-16), sorted by frequency (most common first). +- The image is internally resized to 100x100 pixels for analysis, so the palette represents overall color distribution rather than small details. +- Colors are extracted using median-cut quantization, which recursively splits pixel populations along the channel with the widest range. - The alpha channel is removed before analysis, so transparent areas are not considered. - This is a read-only endpoint. It does not produce a downloadable output file or a `jobId`. - HEIC, RAW, PSD, and SVG inputs are automatically decoded before analysis. diff --git a/apps/docs/tools/image/colorize.md b/apps/docs/tools/image/colorize.md index 135dc04d..ae900b00 100644 --- a/apps/docs/tools/image/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/image/colorize` +`POST /api/v1/tools/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/image/colorize \ +curl -X POST http://localhost:1349/api/v1/tools/colorize \ -F "file=@old-bw-photo.jpg" \ -F 'settings={"intensity":0.9,"model":"auto"}' ``` diff --git a/apps/docs/tools/image/compare.md b/apps/docs/tools/image/compare.md index e5080d02..8aae29cb 100644 --- a/apps/docs/tools/image/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/image/compare` +`POST /api/v1/tools/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/image/compare \ +curl -X POST http://localhost:1349/api/v1/tools/compare \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@original.jpg" \ -F "file=@modified.jpg" diff --git a/apps/docs/tools/image/compose.md b/apps/docs/tools/image/compose.md index 3046d855..fb29d837 100644 --- a/apps/docs/tools/image/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/image/compose` +`POST /api/v1/tools/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/image/compose \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/compose \ Using multiply blend mode: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/compose \ +curl -X POST http://localhost:1349/api/v1/tools/compose \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F "overlay=@texture.jpg" \ diff --git a/apps/docs/tools/image/compress.md b/apps/docs/tools/image/compress.md index 864c350f..3fe23498 100644 --- a/apps/docs/tools/image/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/image/compress` +`POST /api/v1/tools/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/image/compress \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/compress \ Compress to target size of 200 KB: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/compress \ +curl -X POST http://localhost:1349/api/v1/tools/compress \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F 'settings={"mode": "targetSize", "targetSizeKb": 200}' diff --git a/apps/docs/tools/image/content-aware-resize.md b/apps/docs/tools/image/content-aware-resize.md index e43f59e3..55b9bd28 100644 --- a/apps/docs/tools/image/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/image/content-aware-resize` +`POST /api/v1/tools/content-aware-resize` **Processing:** Synchronous (returns result directly) @@ -15,8 +15,8 @@ Seam carving resize that intelligently removes or adds pixels along paths of lea | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | file | file | Yes | - | Image file (multipart) | -| width | integer | No | - | Target width in pixels | -| height | integer | No | - | Target height in pixels | +| width | number | No | - | Target width in pixels | +| height | number | No | - | Target height in pixels | | protectFaces | boolean | No | `false` | Detect and protect faces from seam removal | | blurRadius | number | No | `4` | Pre-processing blur radius for energy calculation (0-20) | | sobelThreshold | number | No | `2` | Sobel edge detection threshold (1-20). Higher values make the algorithm more aggressive | @@ -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/image/content-aware-resize \ +curl -X POST http://localhost:1349/api/v1/tools/content-aware-resize \ -F "file=@landscape.jpg" \ -F 'settings={"width":800,"protectFaces":true}' ``` diff --git a/apps/docs/tools/image/convert.md b/apps/docs/tools/image/convert.md index 59f1f213..9495f9ce 100644 --- a/apps/docs/tools/image/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/image/convert` +`POST /api/v1/tools/convert` Accepts multipart form data with an image file and a JSON `settings` field. @@ -16,7 +16,7 @@ Accepts multipart form data with an image file and a JSON `settings` field. | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| -| format | string | Yes | - | Target format: `jpg`, `png`, `webp`, `avif`, `tiff`, `gif`, `heic`, `heif`, `jxl`, `bmp`, `ico`, `jp2`, `qoi`, `psd` | +| format | string | Yes | - | Target format: `jpg`, `png`, `webp`, `avif`, `tiff`, `gif`, `heic`, `heif`, `jxl`, `bmp`, `ico`, `jp2`, `qoi`, `psd`, `ppm`, `eps`, `tga` | | quality | number | No | - | Output quality (1-100). Applies to lossy formats like jpg, webp, avif, heic. | ## Supported Output Formats @@ -36,13 +36,16 @@ Accepts multipart form data with an image file and a JSON `settings` field. | jp2 | Lossy | JPEG 2000 | | qoi | Lossless | Quite OK Image format | | psd | Layered | Adobe Photoshop (requires ImageMagick) | +| ppm | Lossless | Portable Pixmap (PPM/PGM/PBM) | +| eps | Vector | Encapsulated PostScript | +| tga | Lossless | Targa image format | ## Example Request Convert to WebP: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/convert \ +curl -X POST http://localhost:1349/api/v1/tools/convert \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F 'settings={"format": "webp", "quality": 85}' @@ -51,7 +54,7 @@ curl -X POST http://localhost:1349/api/v1/tools/image/convert \ Convert to PNG (lossless): ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/convert \ +curl -X POST http://localhost:1349/api/v1/tools/convert \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F 'settings={"format": "png"}' @@ -73,6 +76,6 @@ curl -X POST http://localhost:1349/api/v1/tools/image/convert \ - The output filename extension is automatically updated to match the target format. - SVG inputs are rasterized at 300 DPI before conversion. - PSD conversion requires ImageMagick to be installed on the server. -- BMP, ICO, JP2, JXL, and QOI use specialized CLI encoders and bypass Sharp processing. +- BMP, EPS, ICO, JP2, JXL, PPM, QOI, and TGA use specialized CLI encoders and bypass Sharp processing. - HEIC/HEIF encoding uses the system HEIC encoder library. - Input formats are broad: JPEG, PNG, WebP, AVIF, TIFF, GIF, HEIC, RAW (CR2, NEF, ARW, etc.), PSD, SVG, BMP, and more. diff --git a/apps/docs/tools/image/crop.md b/apps/docs/tools/image/crop.md index e4855349..438dd84d 100644 --- a/apps/docs/tools/image/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/image/crop` +`POST /api/v1/tools/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/image/crop \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/crop \ Crop using percentage values: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/crop \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/duotone.md b/apps/docs/tools/image/duotone.md index f003f157..e499f4b6 100644 --- a/apps/docs/tools/image/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/image/duotone` +`POST /api/v1/tools/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/image/duotone \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/edit-metadata.md b/apps/docs/tools/image/edit-metadata.md index da5084b1..443e5fbd 100644 --- a/apps/docs/tools/image/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/image/edit-metadata` +`POST /api/v1/tools/edit-metadata` Writes metadata fields to the image and returns the modified file. ### Inspect Metadata -`POST /api/v1/tools/image/edit-metadata/inspect` +`POST /api/v1/tools/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/image/edit-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/edit-metadata \ Set GPS coordinates: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/edit-metadata \ Remove GPS and add keywords: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/edit-metadata \ Inspect metadata: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/edit-metadata/inspect \ +curl -X POST http://localhost:1349/api/v1/tools/edit-metadata/inspect \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" ``` diff --git a/apps/docs/tools/image/enhance-faces.md b/apps/docs/tools/image/enhance-faces.md index afbfedde..6f446135 100644 --- a/apps/docs/tools/image/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/image/enhance-faces` +`POST /api/v1/tools/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/image/enhance-faces \ +curl -X POST http://localhost:1349/api/v1/tools/enhance-faces \ -F "file=@portrait.jpg" \ -F 'settings={"model":"codeformer","strength":0.7,"onlyCenterFace":false}' ``` diff --git a/apps/docs/tools/image/erase-object.md b/apps/docs/tools/image/erase-object.md index fa48f7fa..4b9cad7d 100644 --- a/apps/docs/tools/image/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/image/erase-object` +`POST /api/v1/tools/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/image/erase-object \ +curl -X POST http://localhost:1349/api/v1/tools/erase-object \ -F "file=@photo.jpg" \ -F "mask=@mask.png" \ -F "format=png" \ diff --git a/apps/docs/tools/image/favicon.md b/apps/docs/tools/image/favicon.md index 43723b04..c228ee5b 100644 --- a/apps/docs/tools/image/favicon.md +++ b/apps/docs/tools/image/favicon.md @@ -8,13 +8,19 @@ Generate a complete set of favicon and app icon files from a source image. Produ ## API Endpoint -`POST /api/v1/tools/image/favicon` +`POST /api/v1/tools/favicon` -Accepts multipart form data with one or more image files. No settings are required. +Accepts multipart form data with one or more image files and an optional JSON `settings` field. ## Parameters -This tool has no configurable parameters. It generates all standard sizes automatically. +| Parameter | Type | Required | Default | Description | +|-----------|------|----------|---------|-------------| +| background | string | No | - | Background hex color (e.g. `"#ffffff"`). When set, the icon is flattened onto this color. | +| padding | integer | No | `0` | Padding percentage around the icon content (0 to 40) | +| radius | integer | No | `0` | Corner radius percentage for rounded icons (0 to 50) | +| sizes | integer[] | No | - | Restrict output to specific pixel sizes (e.g. `[16, 32, 180]`). Omit to generate all standard sizes. | +| themeColor | string | No | `"#ffffff"` | Theme color hex for the web manifest | ## Generated Files @@ -34,18 +40,19 @@ For each input image, the following files are produced: ## Example Request -Single source image: +Single source image with rounded corners and padding: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/favicon \ +curl -X POST http://localhost:1349/api/v1/tools/favicon \ -H "Authorization: Bearer si_your-api-key" \ - -F "file=@logo.png" + -F "file=@logo.png" \ + -F 'settings={"padding": 10, "radius": 20, "themeColor": "#0a0a0a"}' ``` Multiple source images (each gets its own set in a subfolder): ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/favicon \ +curl -X POST http://localhost:1349/api/v1/tools/favicon \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@logo-light.png" \ -F "file=@logo-dark.png" diff --git a/apps/docs/tools/image/find-duplicates.md b/apps/docs/tools/image/find-duplicates.md index 384d7944..650d1fd7 100644 --- a/apps/docs/tools/image/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/image/find-duplicates` +`POST /api/v1/tools/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/image/find-duplicates \ +curl -X POST http://localhost:1349/api/v1/tools/find-duplicates \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo1.jpg" \ -F "file=@photo2.jpg" \ diff --git a/apps/docs/tools/image/gif-tools.md b/apps/docs/tools/image/gif-tools.md index ee25d6b1..bd5655fd 100644 --- a/apps/docs/tools/image/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/image/gif-tools` +`POST /api/v1/tools/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/image/gif-tools \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/gif-tools \ ### Optimize ```bash -curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/gif-tools \ ### Speed Up ```bash -curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/gif-tools \ ### Extract Single Frame ```bash -curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/gif-tools \ ## Info Sub-Route -`POST /api/v1/tools/image/gif-tools/info` +`POST /api/v1/tools/gif-tools/info` Returns metadata about an animated GIF without processing it. ### Info Request ```bash -curl -X POST http://localhost:13490/api/v1/tools/image/gif-tools/info \ +curl -X POST http://localhost:1349/api/v1/tools/gif-tools/info \ -F "file=@animation.gif" ``` diff --git a/apps/docs/tools/image/gif-webp.md b/apps/docs/tools/image/gif-webp.md index 1cebe744..1cec40e6 100644 --- a/apps/docs/tools/image/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/image/gif-webp` +`POST /api/v1/tools/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/image/gif-webp \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/histogram.md b/apps/docs/tools/image/histogram.md index 9dbc8b3c..6d3423fc 100644 --- a/apps/docs/tools/image/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/image/histogram` +`POST /api/v1/tools/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/image/histogram \ +curl -X POST http://localhost:1349/api/v1/tools/histogram \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F 'settings={"scale": "linear"}' diff --git a/apps/docs/tools/image/html-to-image.md b/apps/docs/tools/image/html-to-image.md index 92342f04..d328d315 100644 --- a/apps/docs/tools/image/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/image/html-to-image` +`POST /api/v1/tools/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/image/html-to-image \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/html-to-image \ Render HTML content: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/html-to-image \ +curl -X POST http://localhost:1349/api/v1/tools/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/image-enhancement.md b/apps/docs/tools/image/image-enhancement.md index a0fd10e5..ce5da8ed 100644 --- a/apps/docs/tools/image/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/image-enhancement` +`POST /api/v1/tools/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/image-enhancement \ +curl -X POST http://localhost:1349/api/v1/tools/image-enhancement \ -F "file=@photo.jpg" \ -F 'settings={"mode":"portrait","intensity":70,"corrections":{"exposure":true,"contrast":true,"sharpness":false}}' ``` @@ -44,7 +44,7 @@ curl -X POST http://localhost:13490/api/v1/tools/image/image-enhancement \ ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "downloadUrl": "/api/v1/download/{jobId}/photo_enhanced.jpg", + "downloadUrl": "/api/v1/download/{jobId}/photo.jpg", "originalSize": 300000, "processedSize": 310000 } @@ -52,7 +52,7 @@ curl -X POST http://localhost:13490/api/v1/tools/image/image-enhancement \ ## Analyze Endpoint -`POST /api/v1/tools/image/image-enhancement/analyze` +`POST /api/v1/tools/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/image-enhancement/analyze \ +curl -X POST http://localhost:1349/api/v1/tools/image-enhancement/analyze \ -F "file=@photo.jpg" ``` diff --git a/apps/docs/tools/image/image-pad.md b/apps/docs/tools/image/image-pad.md index ff051be4..d1ba8225 100644 --- a/apps/docs/tools/image/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/image-pad` +`POST /api/v1/tools/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/image-pad \ +curl -X POST http://localhost:1349/api/v1/tools/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/image-to-base64.md b/apps/docs/tools/image/image-to-base64.md index a74c4f96..f358cb7e 100644 --- a/apps/docs/tools/image/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/image-to-base64` +`POST /api/v1/tools/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/image-to-base64 \ +curl -X POST http://localhost:1349/api/v1/tools/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/image-to-base64 \ Multiple files: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/image-to-base64 \ +curl -X POST http://localhost:1349/api/v1/tools/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/image-to-pdf.md b/apps/docs/tools/image/image-to-pdf.md index e7a536e7..2c7eea98 100644 --- a/apps/docs/tools/image/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/image-to-pdf` +`POST /api/v1/tools/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/image-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/image-to-pdf \ With file size target: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/image-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/image-to-pdf \ One PDF per image: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/image-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/image-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo1.jpg" \ -F "file=@photo2.jpg" \ diff --git a/apps/docs/tools/image/info.md b/apps/docs/tools/image/info.md index 0c6d0997..2b2e56f3 100644 --- a/apps/docs/tools/image/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/image/info` +`POST /api/v1/tools/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/image/info \ +curl -X POST http://localhost:1349/api/v1/tools/info \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" ``` diff --git a/apps/docs/tools/image/lqip-placeholder.md b/apps/docs/tools/image/lqip-placeholder.md index 8f92eb43..64e35dcb 100644 --- a/apps/docs/tools/image/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/image/lqip-placeholder` +`POST /api/v1/tools/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/image/lqip-placeholder \ +curl -X POST http://localhost:1349/api/v1/tools/lqip-placeholder \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F 'settings={"width": 20, "strategy": "blur", "format": "webp"}' @@ -44,8 +44,8 @@ curl -X POST http://localhost:1349/api/v1/tools/image/lqip-placeholder \ "height": 13, "bytes": 280, "strategy": "blur", - "html": "\"\"", - "css": "background-image: url(data:image/webp;base64,UklGR...);" + "html": "", + "css": "background-image:url('data:image/webp;base64,UklGR...');background-size:cover;background-position:center;" } ``` diff --git a/apps/docs/tools/image/meme-generator.md b/apps/docs/tools/image/meme-generator.md index ff696d2d..38cd6fb7 100644 --- a/apps/docs/tools/image/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/image/meme-generator` +`POST /api/v1/tools/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/image/meme-generator \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/meme-generator \ Using a built-in template (JSON body, no file upload): ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/meme-generator \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/noise-removal.md b/apps/docs/tools/image/noise-removal.md index 1561fd43..7a9e8da0 100644 --- a/apps/docs/tools/image/noise-removal.md +++ b/apps/docs/tools/image/noise-removal.md @@ -1,10 +1,14 @@ +--- +description: AI-powered noise and grain removal with multi-tier quality options. +--- + # Noise Removal AI-powered noise and grain removal with multi-tier quality options, using the Python sidecar (SCUNet model). ## API Endpoint -`POST /api/v1/tools/image/noise-removal` +`POST /api/v1/tools/noise-removal` **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) @@ -25,7 +29,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/image/noise-removal \ +curl -X POST http://localhost:1349/api/v1/tools/noise-removal \ -F "file=@noisy-photo.jpg" \ -F 'settings={"tier":"quality","strength":60,"detailPreservation":70,"colorNoise":40}' ``` diff --git a/apps/docs/tools/image/ocr.md b/apps/docs/tools/image/ocr.md index b172f81d..3196f6cd 100644 --- a/apps/docs/tools/image/ocr.md +++ b/apps/docs/tools/image/ocr.md @@ -1,10 +1,14 @@ +--- +description: Extract text from images using AI-powered optical character recognition. +--- + # OCR / Text Extraction Extract text from images using AI-powered optical character recognition. Supports multiple languages and quality tiers. ## API Endpoint -`POST /api/v1/tools/image/ocr` +`POST /api/v1/tools/ocr` **Processing:** Synchronous (returns extracted text directly, though progress is reported via SSE if a `clientJobId` is provided) @@ -23,7 +27,7 @@ Extract text from images using AI-powered optical character recognition. Support ## Example Request ```bash -curl -X POST http://localhost:13490/api/v1/tools/image/ocr \ +curl -X POST http://localhost:1349/api/v1/tools/ocr \ -F "file=@document.png" \ -F 'settings={"quality":"best","language":"en","enhance":true}' ``` diff --git a/apps/docs/tools/image/optimize-for-web.md b/apps/docs/tools/image/optimize-for-web.md index a513663d..88e5160c 100644 --- a/apps/docs/tools/image/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/image/optimize-for-web` +`POST /api/v1/tools/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/image/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/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/image/optimize- ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/optimize-for-web \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/optimize-for-web \ Optimize for AVIF with aggressive compression: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/optimize-for-web \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/optimize-for-web \ ### Preview Endpoint Response -The preview endpoint (`/api/v1/tools/image/optimize-for-web/preview`) returns the binary image directly with informational headers: +The preview endpoint (`/api/v1/tools/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/image/passport-photo.md b/apps/docs/tools/image/passport-photo.md index 8b794ed1..ae6372d0 100644 --- a/apps/docs/tools/image/passport-photo.md +++ b/apps/docs/tools/image/passport-photo.md @@ -1,3 +1,7 @@ +--- +description: AI-powered passport and ID photo generator with face detection, background removal, and print sheet tiling. +--- + # Passport Photo AI-powered passport and ID photo generator. Two-phase workflow: analyze (face detection + background removal) then generate (crop, resize, and tile for printing). @@ -12,7 +16,7 @@ This tool uses a two-phase flow with separate endpoints for analysis and generat ### Phase 1: Analyze -`POST /api/v1/tools/image/passport-photo/analyze` +`POST /api/v1/tools/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 +30,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/image/passport-photo/analyze \ +curl -X POST http://localhost:1349/api/v1/tools/passport-photo/analyze \ -F "file=@headshot.jpg" ``` @@ -71,7 +75,7 @@ If `clientJobId` is provided, progress is streamed (0-30% for face detection, 30 ### Phase 2: Generate -`POST /api/v1/tools/image/passport-photo/generate` +`POST /api/v1/tools/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 +103,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/image/passport-photo/generate \ +curl -X POST http://localhost:1349/api/v1/tools/passport-photo/generate \ -H "Content-Type: application/json" \ -d '{ "jobId": "a1b2c3d4-...", @@ -145,13 +149,13 @@ curl -X POST http://localhost:13490/api/v1/tools/image/passport-photo/generate \ ### Base Route -`POST /api/v1/tools/image/passport-photo` +`POST /api/v1/tools/passport-photo` Returns guidance to use the correct sub-endpoint. ```json { - "error": "Use /api/v1/tools/image/passport-photo/analyze or /generate" + "error": "Use /api/v1/tools/passport-photo/analyze or /generate" } ``` diff --git a/apps/docs/tools/image/pixelate.md b/apps/docs/tools/image/pixelate.md index 5bedbc2e..6514b192 100644 --- a/apps/docs/tools/image/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/image/pixelate` +`POST /api/v1/tools/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/image/pixelate \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/pixelate \ Pixelate a specific region: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/pixelate \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/qr-generate.md b/apps/docs/tools/image/qr-generate.md index 3ce28945..da5997aa 100644 --- a/apps/docs/tools/image/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/image/qr-generate` +`POST /api/v1/tools/qr-generate` Accepts a **JSON body** (not multipart). No file upload is needed. @@ -21,6 +21,7 @@ Accepts a **JSON body** (not multipart). No file upload is needed. | errorCorrection | string | No | `"M"` | Error correction level: `L` (7%), `M` (15%), `Q` (25%), `H` (30%) | | foreground | string | No | `"#000000"` | QR code foreground/module color in hex (`#RRGGBB`) | | background | string | No | `"#FFFFFF"` | QR code background color in hex (`#RRGGBB`) | +| logoDataUri | string | No | - | Logo image as a data URI (`data:image/png;base64,...` or `data:image/jpeg;base64,...`, max 700 KB). Centered on the QR code at 22% of the QR size. Forces error correction to `H` | ### Error Correction Levels @@ -34,7 +35,7 @@ Accepts a **JSON body** (not multipart). No file upload is needed. ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/qr-generate \ +curl -X POST http://localhost:1349/api/v1/tools/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 +44,7 @@ curl -X POST http://localhost:1349/api/v1/tools/image/qr-generate \ Branded QR code with custom colors: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/qr-generate \ +curl -X POST http://localhost:1349/api/v1/tools/qr-generate \ -H "Authorization: Bearer si_your-api-key" \ -H "Content-Type: application/json" \ -d '{"text": "Hello World", "size": 300, "foreground": "#1a365d", "background": "#f7fafc"}' @@ -69,3 +70,4 @@ curl -X POST http://localhost:1349/api/v1/tools/image/qr-generate \ - A 2-module quiet zone (margin) is included around the QR code. - Maximum text length is 2000 characters. Actual capacity depends on error correction level and character encoding. - Higher error correction levels allow the QR code to remain scannable even if partially obscured but reduce data capacity. +- When a `logoDataUri` is provided, error correction is automatically forced to `H` (30%) so the QR code remains scannable despite the logo occluding the center. diff --git a/apps/docs/tools/image/red-eye-removal.md b/apps/docs/tools/image/red-eye-removal.md index 21042404..f65452d6 100644 --- a/apps/docs/tools/image/red-eye-removal.md +++ b/apps/docs/tools/image/red-eye-removal.md @@ -1,10 +1,14 @@ +--- +description: AI-powered detection and correction of red eye caused by camera flash. +--- + # Red Eye Removal AI-powered detection and correction of red eye caused by camera flash. ## API Endpoint -`POST /api/v1/tools/image/red-eye-removal` +`POST /api/v1/tools/red-eye-removal` **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) @@ -23,7 +27,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/image/red-eye-removal \ +curl -X POST http://localhost:1349/api/v1/tools/red-eye-removal \ -F "file=@flash-photo.jpg" \ -F 'settings={"sensitivity":60,"strength":80}' ``` diff --git a/apps/docs/tools/image/remove-background.md b/apps/docs/tools/image/remove-background.md index 7e593818..131a43cc 100644 --- a/apps/docs/tools/image/remove-background.md +++ b/apps/docs/tools/image/remove-background.md @@ -1,10 +1,14 @@ +--- +description: AI-powered background removal with optional effects (blur, shadow, gradient, custom background). +--- + # Remove Background AI-powered background removal with optional effects (blur, shadow, gradient, custom background). ## API Endpoint -`POST /api/v1/tools/image/remove-background` +`POST /api/v1/tools/remove-background` **Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) @@ -32,7 +36,7 @@ AI-powered background removal with optional effects (blur, shadow, gradient, cus ## Example Request ```bash -curl -X POST http://localhost:13490/api/v1/tools/image/remove-background \ +curl -X POST http://localhost:1349/api/v1/tools/remove-background \ -F "file=@photo.jpg" \ -F 'settings={"backgroundType":"transparent","edgeRefine":2,"outputFormat":"png"}' ``` @@ -76,7 +80,7 @@ data: {"phase":"processing","stage":"Removing background...","percent":50} ## Effects Endpoint (Phase 2) -`POST /api/v1/tools/image/remove-background/effects` +`POST /api/v1/tools/remove-background/effects` Re-applies background effects without re-running the AI model. Uses cached mask and original from Phase 1. @@ -107,7 +111,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/image/remove-background/effects \ +curl -X POST http://localhost:1349/api/v1/tools/remove-background/effects \ -F 'settings={"jobId":"a1b2c3d4-...","filename":"photo.jpg","backgroundType":"color","backgroundColor":"#FF5500","outputFormat":"png"}' ``` diff --git a/apps/docs/tools/image/replace-color.md b/apps/docs/tools/image/replace-color.md index 769c1959..1aed3c99 100644 --- a/apps/docs/tools/image/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/image/replace-color` +`POST /api/v1/tools/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/image/replace-color \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/replace-color \ Make a green background transparent: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/replace-color \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/resize.md b/apps/docs/tools/image/resize.md index cf3ede86..b18e6922 100644 --- a/apps/docs/tools/image/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/image/resize` +`POST /api/v1/tools/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/image/resize \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/resize \ Resize by percentage: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/resize \ +curl -X POST http://localhost:1349/api/v1/tools/resize \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F 'settings={"percentage": 50}' diff --git a/apps/docs/tools/image/restore-photo.md b/apps/docs/tools/image/restore-photo.md index d83f4967..6e526b7a 100644 --- a/apps/docs/tools/image/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/image/restore-photo` +`POST /api/v1/tools/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/image/restore-photo \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/rotate.md b/apps/docs/tools/image/rotate.md index 07d847de..d24bf055 100644 --- a/apps/docs/tools/image/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/image/rotate` +`POST /api/v1/tools/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/image/rotate \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/rotate \ Flip horizontally: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/rotate \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/rotate \ Rotate and flip together: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/rotate \ +curl -X POST http://localhost:1349/api/v1/tools/rotate \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F 'settings={"angle": 45, "vertical": true}' diff --git a/apps/docs/tools/image/sharpening.md b/apps/docs/tools/image/sharpening.md index a75b7b10..f17d273d 100644 --- a/apps/docs/tools/image/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/image/sharpening` +`POST /api/v1/tools/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/image/sharpening \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/sharpening \ Unsharp mask with threshold to protect smooth areas: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/sharpening \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/smart-crop.md b/apps/docs/tools/image/smart-crop.md index a7af99ef..04dcc8ca 100644 --- a/apps/docs/tools/image/smart-crop.md +++ b/apps/docs/tools/image/smart-crop.md @@ -4,9 +4,9 @@ Smart subject-aware, face-aware, or trim-based cropping. Uses Sharp's attention/ ## API Endpoint -`POST /api/v1/tools/image/smart-crop` +`POST /api/v1/tools/smart-crop` -**Processing:** Synchronous (uses `createToolRoute` factory, returns result directly) +**Processing:** Asynchronous (returns 202, poll `/api/v1/jobs/{jobId}/progress` for status via SSE) **Model bundle:** `face-detection` (200-300 MB) -- required only for `face` mode @@ -31,19 +31,41 @@ 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/image/smart-crop \ +curl -X POST http://localhost:1349/api/v1/tools/smart-crop \ -F "file=@portrait.jpg" \ -F 'settings={"mode":"face","width":1080,"height":1080,"facePreset":"head-shoulders"}' ``` -## Response (200 OK) +## Response + +### Initial Response (202 Accepted) ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "downloadUrl": "/api/v1/download/{jobId}/portrait_smartcrop.jpg", - "originalSize": 500000, - "processedSize": 320000 + "async": true +} +``` + +### Progress (SSE at `/api/v1/jobs/{jobId}/progress`) + +``` +event: progress +data: {"phase":"processing","percent":50} +``` + +### Final Result (via SSE) + +```json +{ + "phase": "complete", + "percent": 100, + "result": { + "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "downloadUrl": "/api/v1/download/{jobId}/portrait_smartcrop.jpg", + "originalSize": 500000, + "processedSize": 320000 + } } ``` @@ -60,7 +82,7 @@ Removes uniform borders/background from the image. Optionally pads the result to ## Notes -- This tool uses the synchronous `createToolRoute` factory, so it returns a standard response (not 202 async). +- This tool uses the `createToolRoute` factory with `executionHint: "long"`, so it returns 202 with SSE progress. - Face mode requires the `face-detection` model bundle (200-300 MB). - Subject and trim modes work without any AI model bundle. - The `facePreset` determines how tightly the crop frames detected faces: `closeup` is the tightest, `half-body` is the widest. diff --git a/apps/docs/tools/image/split.md b/apps/docs/tools/image/split.md index 5de88c64..94aa5047 100644 --- a/apps/docs/tools/image/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/image/split` +`POST /api/v1/tools/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/image/split \ +curl -X POST http://localhost:1349/api/v1/tools/split \ -F "file=@large-image.png" \ -F 'settings={"columns":3,"rows":3,"outputFormat":"png"}' \ --output split-tiles.zip diff --git a/apps/docs/tools/image/sprite-sheet.md b/apps/docs/tools/image/sprite-sheet.md index 79cf89b4..cbbbb4b5 100644 --- a/apps/docs/tools/image/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/image/sprite-sheet` +`POST /api/v1/tools/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/image/sprite-sheet \ +curl -X POST http://localhost:1349/api/v1/tools/sprite-sheet \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@frame1.png" \ -F "file=@frame2.png" \ diff --git a/apps/docs/tools/image/stitch.md b/apps/docs/tools/image/stitch.md index 5a08b006..464f5e68 100644 --- a/apps/docs/tools/image/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/image/stitch` +`POST /api/v1/tools/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/image/stitch \ +curl -X POST http://localhost:1349/api/v1/tools/stitch \ -F "file=@image1.png" \ -F "file=@image2.png" \ -F "file=@image3.png" \ diff --git a/apps/docs/tools/image/strip-metadata.md b/apps/docs/tools/image/strip-metadata.md index f0d34693..a473e234 100644 --- a/apps/docs/tools/image/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/image/strip-metadata` +`POST /api/v1/tools/strip-metadata` Processes the image and returns a cleaned version with selected metadata removed. ### Inspect Metadata -`POST /api/v1/tools/image/strip-metadata/inspect` +`POST /api/v1/tools/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/image/strip-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/strip-metadata \ Strip only GPS data (keep camera info and color profile): ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/strip-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/strip-metadata \ Inspect metadata without modifying: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/strip-metadata/inspect \ +curl -X POST http://localhost:1349/api/v1/tools/strip-metadata/inspect \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" ``` diff --git a/apps/docs/tools/image/svg-to-raster.md b/apps/docs/tools/image/svg-to-raster.md index e523d522..de218408 100644 --- a/apps/docs/tools/image/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/image/svg-to-raster` +`POST /api/v1/tools/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/image/svg-to-raster \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/svg-to-raster \ ## Batch Endpoint -`POST /api/v1/tools/image/svg-to-raster/batch` +`POST /api/v1/tools/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/image/svg-to-raster/batch \ +curl -X POST http://localhost:1349/api/v1/tools/svg-to-raster/batch \ -F "file=@icon1.svg" \ -F "file=@icon2.svg" \ -F "file=@icon3.svg" \ diff --git a/apps/docs/tools/image/text-overlay.md b/apps/docs/tools/image/text-overlay.md index 8582cef0..dbc97af4 100644 --- a/apps/docs/tools/image/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/image/text-overlay` +`POST /api/v1/tools/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/image/text-overlay \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/text-overlay \ With a background box: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/text-overlay \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/transparency-fixer.md b/apps/docs/tools/image/transparency-fixer.md index 2cecf2cc..e839e8b1 100644 --- a/apps/docs/tools/image/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/image/transparency-fixer` +`POST /api/v1/tools/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/image/transparency-fixer \ +curl -X POST http://localhost:1349/api/v1/tools/transparency-fixer \ -F "file=@fake-transparent.png" \ -F 'settings={"defringe":40,"outputFormat":"png"}' ``` diff --git a/apps/docs/tools/image/upscale.md b/apps/docs/tools/image/upscale.md index 393aae26..d0ad84a2 100644 --- a/apps/docs/tools/image/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/image/upscale` +`POST /api/v1/tools/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/image/upscale \ +curl -X POST http://localhost:1349/api/v1/tools/upscale \ -F "file=@photo.jpg" \ -F 'settings={"scale":4,"model":"auto","faceEnhance":true,"format":"png"}' ``` diff --git a/apps/docs/tools/image/vectorize.md b/apps/docs/tools/image/vectorize.md index d96a28b0..fb6e5600 100644 --- a/apps/docs/tools/image/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/image/vectorize` +`POST /api/v1/tools/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/image/vectorize \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/vectorize \ ### Color Vectorization ```bash -curl -X POST http://localhost:13490/api/v1/tools/image/vectorize \ +curl -X POST http://localhost:1349/api/v1/tools/vectorize \ -F "file=@illustration.png" \ -F 'settings={"colorMode":"color","colorPrecision":8,"layerDifference":6,"filterSpeckle":4}' ``` diff --git a/apps/docs/tools/image/vignette.md b/apps/docs/tools/image/vignette.md index 7ae714d9..e6576c61 100644 --- a/apps/docs/tools/image/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/image/vignette` +`POST /api/v1/tools/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/image/vignette \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/watermark-image.md b/apps/docs/tools/image/watermark-image.md index a8c44b4f..e7355488 100644 --- a/apps/docs/tools/image/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/image/watermark-image` +`POST /api/v1/tools/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/image/watermark-image \ +curl -X POST http://localhost:1349/api/v1/tools/watermark-image \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@photo.jpg" \ -F "watermark=@logo.png" \ diff --git a/apps/docs/tools/image/watermark-text.md b/apps/docs/tools/image/watermark-text.md index b543113e..e2a2dcf4 100644 --- a/apps/docs/tools/image/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/image/watermark-text` +`POST /api/v1/tools/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/image/watermark-text \ +curl -X POST http://localhost:1349/api/v1/tools/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/image/watermark-text \ Tiled watermark across the entire image: ```bash -curl -X POST http://localhost:1349/api/v1/tools/image/watermark-text \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/booklet-pdf.md b/apps/docs/tools/pdf/booklet-pdf.md index 7982cd4a..a9901be7 100644 --- a/apps/docs/tools/pdf/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/pdf/booklet-pdf` +`POST /api/v1/tools/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/pdf/booklet-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/booklet-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"perSheet": 2}' diff --git a/apps/docs/tools/pdf/compress-pdf.md b/apps/docs/tools/pdf/compress-pdf.md index 894f60ee..651a9b51 100644 --- a/apps/docs/tools/pdf/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/pdf/compress-pdf` +`POST /api/v1/tools/compress-pdf` Accepts multipart form data with a PDF file and a JSON `settings` field. @@ -17,7 +17,7 @@ Accepts multipart form data with a PDF file and a JSON `settings` field. | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | mode | string | No | `"quality"` | Compression mode: `quality` or `targetSize` | -| quality | integer | No | - | Compression quality, 1-100 (higher = less compression). Used in `quality` mode | +| quality | integer | No | `75` | Compression quality, 1-100 (higher = less compression). Used in `quality` mode | | targetSizeKb | number | No | - | Target file size in kilobytes. Used in `targetSize` mode | ## Example Request @@ -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/pdf/compress-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/compress-pdf \ Compress to a target size: ```bash -curl -X POST http://localhost:1349/api/v1/tools/pdf/compress-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/convert-document.md b/apps/docs/tools/pdf/convert-document.md index 97b620a2..e9cb4cd8 100644 --- a/apps/docs/tools/pdf/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/pdf/convert-document` +`POST /api/v1/tools/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/pdf/convert-document \ +curl -X POST http://localhost:1349/api/v1/tools/convert-document \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.docx" \ -F 'settings={"format": "odt"}' diff --git a/apps/docs/tools/pdf/convert-presentation.md b/apps/docs/tools/pdf/convert-presentation.md index 21b8ca77..252e3bd2 100644 --- a/apps/docs/tools/pdf/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/pdf/convert-presentation` +`POST /api/v1/tools/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/pdf/convert-presentation \ +curl -X POST http://localhost:1349/api/v1/tools/convert-presentation \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@slides.pptx" \ -F 'settings={"format": "odp"}' diff --git a/apps/docs/tools/pdf/convert-spreadsheet.md b/apps/docs/tools/pdf/convert-spreadsheet.md index 5db61a36..20510e7d 100644 --- a/apps/docs/tools/pdf/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/pdf/convert-spreadsheet` +`POST /api/v1/tools/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/pdf/convert-spreadsheet \ +curl -X POST http://localhost:1349/api/v1/tools/convert-spreadsheet \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@data.xlsx" \ -F 'settings={"format": "csv"}' diff --git a/apps/docs/tools/pdf/crop-pdf.md b/apps/docs/tools/pdf/crop-pdf.md index 85ebf54e..bb8d4ff2 100644 --- a/apps/docs/tools/pdf/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/pdf/crop-pdf` +`POST /api/v1/tools/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/pdf/crop-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/crop-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"margin": 50}' diff --git a/apps/docs/tools/pdf/epub-convert.md b/apps/docs/tools/pdf/epub-convert.md index eecc18ed..c511d818 100644 --- a/apps/docs/tools/pdf/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/pdf/epub-convert` +`POST /api/v1/tools/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/pdf/epub-convert \ +curl -X POST http://localhost:1349/api/v1/tools/epub-convert \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@book.epub" \ -F 'settings={"format": "pdf"}' diff --git a/apps/docs/tools/pdf/excel-to-pdf.md b/apps/docs/tools/pdf/excel-to-pdf.md index 00b7802a..6e13e9e7 100644 --- a/apps/docs/tools/pdf/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/pdf/excel-to-pdf` +`POST /api/v1/tools/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/pdf/excel-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/excel-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@budget.xlsx" ``` diff --git a/apps/docs/tools/pdf/extract-pages.md b/apps/docs/tools/pdf/extract-pages.md index 002f9931..2f5a3ea0 100644 --- a/apps/docs/tools/pdf/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/pdf/extract-pages` +`POST /api/v1/tools/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/pdf/extract-pages \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/flatten-pdf.md b/apps/docs/tools/pdf/flatten-pdf.md index f85c8236..99fe7754 100644 --- a/apps/docs/tools/pdf/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/pdf/flatten-pdf` +`POST /api/v1/tools/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/pdf/flatten-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/flatten-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@form.pdf" ``` diff --git a/apps/docs/tools/pdf/grayscale-pdf.md b/apps/docs/tools/pdf/grayscale-pdf.md index d29e8368..2a1dce5e 100644 --- a/apps/docs/tools/pdf/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/pdf/grayscale-pdf` +`POST /api/v1/tools/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/pdf/grayscale-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/grayscale-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" ``` diff --git a/apps/docs/tools/pdf/html-to-pdf.md b/apps/docs/tools/pdf/html-to-pdf.md index 5845bf4d..46884dfb 100644 --- a/apps/docs/tools/pdf/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/pdf/html-to-pdf` +`POST /api/v1/tools/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/pdf/html-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/html-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@page.html" ``` diff --git a/apps/docs/tools/pdf/linearize-pdf.md b/apps/docs/tools/pdf/linearize-pdf.md index 777567e0..f32a5d64 100644 --- a/apps/docs/tools/pdf/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/pdf/linearize-pdf` +`POST /api/v1/tools/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/pdf/linearize-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/linearize-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" ``` diff --git a/apps/docs/tools/pdf/markdown-to-docx.md b/apps/docs/tools/pdf/markdown-to-docx.md index 0c715bde..a1d95b48 100644 --- a/apps/docs/tools/pdf/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/pdf/markdown-to-docx` +`POST /api/v1/tools/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/pdf/markdown-to-docx \ +curl -X POST http://localhost:1349/api/v1/tools/markdown-to-docx \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@README.md" ``` diff --git a/apps/docs/tools/pdf/markdown-to-html.md b/apps/docs/tools/pdf/markdown-to-html.md index ab00a081..25a5d3ee 100644 --- a/apps/docs/tools/pdf/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/pdf/markdown-to-html` +`POST /api/v1/tools/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/pdf/markdown-to-html \ +curl -X POST http://localhost:1349/api/v1/tools/markdown-to-html \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@notes.md" ``` diff --git a/apps/docs/tools/pdf/markdown-to-pdf.md b/apps/docs/tools/pdf/markdown-to-pdf.md index 9f5e23ec..3e6d78f8 100644 --- a/apps/docs/tools/pdf/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/pdf/markdown-to-pdf` +`POST /api/v1/tools/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/pdf/markdown-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/markdown-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.md" ``` diff --git a/apps/docs/tools/pdf/merge-pdf.md b/apps/docs/tools/pdf/merge-pdf.md index 476bd466..7db593c1 100644 --- a/apps/docs/tools/pdf/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/pdf/merge-pdf` +`POST /api/v1/tools/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/pdf/merge-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/merge-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document1.pdf" \ -F "file=@document2.pdf" \ diff --git a/apps/docs/tools/pdf/nup-pdf.md b/apps/docs/tools/pdf/nup-pdf.md index 7044a881..1bc0e757 100644 --- a/apps/docs/tools/pdf/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/pdf/nup-pdf` +`POST /api/v1/tools/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/pdf/nup-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/nup-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"perSheet": 4}' diff --git a/apps/docs/tools/pdf/ocr-pdf.md b/apps/docs/tools/pdf/ocr-pdf.md index 4e41e92d..89dd7ceb 100644 --- a/apps/docs/tools/pdf/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/pdf/ocr-pdf` +`POST /api/v1/tools/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/pdf/ocr-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/organize-pdf.md b/apps/docs/tools/pdf/organize-pdf.md index 06a5ddb7..e635811b 100644 --- a/apps/docs/tools/pdf/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/pdf/organize-pdf` +`POST /api/v1/tools/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/pdf/organize-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf-metadata.md b/apps/docs/tools/pdf/pdf-metadata.md index ba3cc161..037f10d6 100644 --- a/apps/docs/tools/pdf/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/pdf-metadata` +`POST /api/v1/tools/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/pdf-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf-page-numbers.md b/apps/docs/tools/pdf/pdf-page-numbers.md index b17183fb..0a710805 100644 --- a/apps/docs/tools/pdf/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/pdf-page-numbers` +`POST /api/v1/tools/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/pdf-page-numbers \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf-to-image.md b/apps/docs/tools/pdf/pdf-to-image.md index 9d044608..544df3bd 100644 --- a/apps/docs/tools/pdf/pdf-to-image.md +++ b/apps/docs/tools/pdf/pdf-to-image.md @@ -1,10 +1,14 @@ +--- +description: Convert PDF pages to high-quality images. +--- + # PDF to Image Convert PDF pages to high-quality raster images. Supports page selection, multiple output formats, DPI control, and color modes. Includes info and preview sub-routes for inspecting PDFs before conversion. ## API Endpoint -`POST /api/v1/tools/pdf/pdf-to-image` +`POST /api/v1/tools/pdf-to-image` ## Parameters @@ -19,7 +23,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/pdf-to-image \ +curl -X POST http://localhost:1349/api/v1/tools/pdf-to-image \ -F "file=@document.pdf" \ -F 'settings={"format":"png","dpi":300,"pages":"1-3","colorMode":"color"}' ``` @@ -56,14 +60,14 @@ curl -X POST http://localhost:13490/api/v1/tools/pdf/pdf-to-image \ ## Info Sub-Route -`POST /api/v1/tools/pdf/pdf-to-image/info` +`POST /api/v1/tools/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/pdf-to-image/info \ +curl -X POST http://localhost:1349/api/v1/tools/pdf-to-image/info \ -F "file=@document.pdf" ``` @@ -77,14 +81,14 @@ curl -X POST http://localhost:13490/api/v1/tools/pdf/pdf-to-image/info \ ## Preview Sub-Route -`POST /api/v1/tools/pdf/pdf-to-image/preview` +`POST /api/v1/tools/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/pdf-to-image/preview \ +curl -X POST http://localhost:1349/api/v1/tools/pdf-to-image/preview \ -F "file=@document.pdf" ``` diff --git a/apps/docs/tools/pdf/pdf-to-text.md b/apps/docs/tools/pdf/pdf-to-text.md index f5a6982c..39b1d25d 100644 --- a/apps/docs/tools/pdf/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/pdf-to-text` +`POST /api/v1/tools/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/pdf-to-text \ +curl -X POST http://localhost:1349/api/v1/tools/pdf-to-text \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.pdf" ``` diff --git a/apps/docs/tools/pdf/pdf-to-word.md b/apps/docs/tools/pdf/pdf-to-word.md index 09e2cf6b..574f7312 100644 --- a/apps/docs/tools/pdf/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/pdf-to-word` +`POST /api/v1/tools/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/pdf-to-word \ +curl -X POST http://localhost:1349/api/v1/tools/pdf-to-word \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.pdf" ``` diff --git a/apps/docs/tools/pdf/pdfa-convert.md b/apps/docs/tools/pdf/pdfa-convert.md index 977419cf..8c4201a8 100644 --- a/apps/docs/tools/pdf/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/pdf/pdfa-convert` +`POST /api/v1/tools/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/pdf/pdfa-convert \ +curl -X POST http://localhost:1349/api/v1/tools/pdfa-convert \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" ``` diff --git a/apps/docs/tools/pdf/powerpoint-to-pdf.md b/apps/docs/tools/pdf/powerpoint-to-pdf.md index d28e69ee..3b6d643f 100644 --- a/apps/docs/tools/pdf/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/pdf/powerpoint-to-pdf` +`POST /api/v1/tools/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/pdf/powerpoint-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/powerpoint-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@slides.pptx" ``` diff --git a/apps/docs/tools/pdf/protect-pdf.md b/apps/docs/tools/pdf/protect-pdf.md index 2bdd328a..52dfe946 100644 --- a/apps/docs/tools/pdf/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/pdf/protect-pdf` +`POST /api/v1/tools/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/pdf/protect-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/redact-pdf.md b/apps/docs/tools/pdf/redact-pdf.md index f1d7ca1f..a449a3e4 100644 --- a/apps/docs/tools/pdf/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/pdf/redact-pdf` +`POST /api/v1/tools/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/pdf/redact-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/remove-pages.md b/apps/docs/tools/pdf/remove-pages.md index 2a0cf36b..76b2dc5b 100644 --- a/apps/docs/tools/pdf/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/pdf/remove-pages` +`POST /api/v1/tools/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/pdf/remove-pages \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/repair-pdf.md b/apps/docs/tools/pdf/repair-pdf.md index 75faced3..c24e0d36 100644 --- a/apps/docs/tools/pdf/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/pdf/repair-pdf` +`POST /api/v1/tools/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/pdf/repair-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/repair-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@damaged.pdf" ``` diff --git a/apps/docs/tools/pdf/rotate-pdf.md b/apps/docs/tools/pdf/rotate-pdf.md index 2e81ed11..a42d6677 100644 --- a/apps/docs/tools/pdf/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/pdf/rotate-pdf` +`POST /api/v1/tools/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/pdf/rotate-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/split-pdf.md b/apps/docs/tools/pdf/split-pdf.md index 15806b4b..2d269c56 100644 --- a/apps/docs/tools/pdf/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/pdf/split-pdf` +`POST /api/v1/tools/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/pdf/split-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/split-pdf \ Split into chunks of 10 pages: ```bash -curl -X POST http://localhost:1349/api/v1/tools/pdf/split-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/to-epub.md b/apps/docs/tools/pdf/to-epub.md index 369245d0..a42e0593 100644 --- a/apps/docs/tools/pdf/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/pdf/to-epub` +`POST /api/v1/tools/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/pdf/to-epub \ +curl -X POST http://localhost:1349/api/v1/tools/to-epub \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@manuscript.docx" ``` diff --git a/apps/docs/tools/pdf/unlock-pdf.md b/apps/docs/tools/pdf/unlock-pdf.md index cf971b0b..22435175 100644 --- a/apps/docs/tools/pdf/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/pdf/unlock-pdf` +`POST /api/v1/tools/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/pdf/unlock-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/unlock-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@document.pdf" \ -F 'settings={"password": "s3cret"}' diff --git a/apps/docs/tools/pdf/watermark-pdf.md b/apps/docs/tools/pdf/watermark-pdf.md index 27ec2e9a..bbb6009f 100644 --- a/apps/docs/tools/pdf/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/pdf/watermark-pdf` +`POST /api/v1/tools/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/pdf/watermark-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/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/pdf/word-to-pdf.md b/apps/docs/tools/pdf/word-to-pdf.md index caf00d5b..ea7dead8 100644 --- a/apps/docs/tools/pdf/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/pdf/word-to-pdf` +`POST /api/v1/tools/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/pdf/word-to-pdf \ +curl -X POST http://localhost:1349/api/v1/tools/word-to-pdf \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@report.docx" ``` diff --git a/apps/docs/tools/video/aspect-pad.md b/apps/docs/tools/video/aspect-pad.md index 5dd9ba56..8cdb308d 100644 --- a/apps/docs/tools/video/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/video/aspect-pad` +`POST /api/v1/tools/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/video/aspect-pad \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/auto-subtitles.md b/apps/docs/tools/video/auto-subtitles.md index 698c8d33..3eedc4b5 100644 --- a/apps/docs/tools/video/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/video/auto-subtitles` +`POST /api/v1/tools/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/video/auto-subtitles \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/blur-pad.md b/apps/docs/tools/video/blur-pad.md index 7e864b98..21c0ae0f 100644 --- a/apps/docs/tools/video/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/video/blur-pad` +`POST /api/v1/tools/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/video/blur-pad \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/burn-subtitles.md b/apps/docs/tools/video/burn-subtitles.md index 613e4098..1e9ce3e2 100644 --- a/apps/docs/tools/video/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/video/burn-subtitles` +`POST /api/v1/tools/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/video/burn-subtitles \ +curl -X POST http://localhost:1349/api/v1/tools/burn-subtitles \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F "file=@subtitles.srt" \ diff --git a/apps/docs/tools/video/change-fps.md b/apps/docs/tools/video/change-fps.md index 45370064..07542216 100644 --- a/apps/docs/tools/video/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/video/change-fps` +`POST /api/v1/tools/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/video/change-fps \ +curl -X POST http://localhost:1349/api/v1/tools/change-fps \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"fps": 24}' diff --git a/apps/docs/tools/video/compress-video.md b/apps/docs/tools/video/compress-video.md index 7c44dbb9..c6a5883d 100644 --- a/apps/docs/tools/video/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/video/compress-video` +`POST /api/v1/tools/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/video/compress-video \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/convert-video.md b/apps/docs/tools/video/convert-video.md index a250914f..98368a1e 100644 --- a/apps/docs/tools/video/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/video/convert-video` +`POST /api/v1/tools/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/video/convert-video \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/crop-video.md b/apps/docs/tools/video/crop-video.md index 28a9d220..f5f2d30b 100644 --- a/apps/docs/tools/video/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/video/crop-video` +`POST /api/v1/tools/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/video/crop-video \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/embed-subtitles.md b/apps/docs/tools/video/embed-subtitles.md index 9d4b2c37..46a66608 100644 --- a/apps/docs/tools/video/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/video/embed-subtitles` +`POST /api/v1/tools/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/video/embed-subtitles \ +curl -X POST http://localhost:1349/api/v1/tools/embed-subtitles \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F "file=@subtitles.srt" \ diff --git a/apps/docs/tools/video/extract-audio.md b/apps/docs/tools/video/extract-audio.md index 3181e9a6..ec2c6a0a 100644 --- a/apps/docs/tools/video/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/video/extract-audio` +`POST /api/v1/tools/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/video/extract-audio \ +curl -X POST http://localhost:1349/api/v1/tools/extract-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"format": "mp3"}' diff --git a/apps/docs/tools/video/extract-subtitles.md b/apps/docs/tools/video/extract-subtitles.md index daedc9f2..5ee8df1c 100644 --- a/apps/docs/tools/video/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/video/extract-subtitles` +`POST /api/v1/tools/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/video/extract-subtitles \ +curl -X POST http://localhost:1349/api/v1/tools/extract-subtitles \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` diff --git a/apps/docs/tools/video/gif-to-video.md b/apps/docs/tools/video/gif-to-video.md index eef96721..38e16a5f 100644 --- a/apps/docs/tools/video/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/video/gif-to-video` +`POST /api/v1/tools/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/video/gif-to-video \ +curl -X POST http://localhost:1349/api/v1/tools/gif-to-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@animation.gif" \ -F 'settings={"format": "mp4"}' diff --git a/apps/docs/tools/video/images-to-video.md b/apps/docs/tools/video/images-to-video.md index 58f56df8..9984dd57 100644 --- a/apps/docs/tools/video/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/video/images-to-video` +`POST /api/v1/tools/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/video/images-to-video \ +curl -X POST http://localhost:1349/api/v1/tools/images-to-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@slide1.jpg" \ -F "file=@slide2.jpg" \ @@ -47,5 +47,5 @@ curl -X POST http://localhost:1349/api/v1/tools/video/images-to-video \ - Accepts 2-60 image files per request. Images appear in the video in upload order. - Images are resized and padded to fit the target resolution while preserving aspect ratio. -- The `square` resolution option produces a 720x720 video, useful for social media. +- The `square` resolution option produces a 1080x1080 video, useful for social media. - Output format is always MP4 (H.264). diff --git a/apps/docs/tools/video/merge-videos.md b/apps/docs/tools/video/merge-videos.md index f8d04ac5..7d6cdaeb 100644 --- a/apps/docs/tools/video/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/video/merge-videos` +`POST /api/v1/tools/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/video/merge-videos \ +curl -X POST http://localhost:1349/api/v1/tools/merge-videos \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@intro.mp4" \ -F "file=@main.mp4" \ diff --git a/apps/docs/tools/video/mute-video.md b/apps/docs/tools/video/mute-video.md index 1bb07919..d84c59b7 100644 --- a/apps/docs/tools/video/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/video/mute-video` +`POST /api/v1/tools/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/video/mute-video \ +curl -X POST http://localhost:1349/api/v1/tools/mute-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` diff --git a/apps/docs/tools/video/replace-audio.md b/apps/docs/tools/video/replace-audio.md index 63cc1df1..92ecb05e 100644 --- a/apps/docs/tools/video/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/video/replace-audio` +`POST /api/v1/tools/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/video/replace-audio \ +curl -X POST http://localhost:1349/api/v1/tools/replace-audio \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F "file=@voiceover.mp3" diff --git a/apps/docs/tools/video/resize-video.md b/apps/docs/tools/video/resize-video.md index 9c07df1c..6c3ccd54 100644 --- a/apps/docs/tools/video/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/video/resize-video` +`POST /api/v1/tools/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/video/resize-video \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/resize-video \ Resize to custom dimensions: ```bash -curl -X POST http://localhost:1349/api/v1/tools/video/resize-video \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/reverse-video.md b/apps/docs/tools/video/reverse-video.md index 8cd5ca62..0c428332 100644 --- a/apps/docs/tools/video/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/video/reverse-video` +`POST /api/v1/tools/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/video/reverse-video \ +curl -X POST http://localhost:1349/api/v1/tools/reverse-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` diff --git a/apps/docs/tools/video/rotate-video.md b/apps/docs/tools/video/rotate-video.md index 65ecd8f9..9d9a827f 100644 --- a/apps/docs/tools/video/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/video/rotate-video` +`POST /api/v1/tools/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/video/rotate-video \ +curl -X POST http://localhost:1349/api/v1/tools/rotate-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"transform": "cw90"}' diff --git a/apps/docs/tools/video/stabilize-video.md b/apps/docs/tools/video/stabilize-video.md index 72bac43d..9e748698 100644 --- a/apps/docs/tools/video/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/video/stabilize-video` +`POST /api/v1/tools/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/video/stabilize-video \ +curl -X POST http://localhost:1349/api/v1/tools/stabilize-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"smoothing": 30}' diff --git a/apps/docs/tools/video/trim-video.md b/apps/docs/tools/video/trim-video.md index 41b59069..1ef71893 100644 --- a/apps/docs/tools/video/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/video/trim-video` +`POST /api/v1/tools/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/video/trim-video \ +curl -X POST http://localhost:1349/api/v1/tools/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/video-color.md b/apps/docs/tools/video/video-color.md index 40f1a58a..9fb11f94 100644 --- a/apps/docs/tools/video/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/video-color` +`POST /api/v1/tools/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/video-color \ +curl -X POST http://localhost:1349/api/v1/tools/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/video-loudnorm.md b/apps/docs/tools/video/video-loudnorm.md index 529611ff..ab8e0379 100644 --- a/apps/docs/tools/video/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/video-loudnorm` +`POST /api/v1/tools/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/video-loudnorm \ +curl -X POST http://localhost:1349/api/v1/tools/video-loudnorm \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` @@ -37,6 +37,6 @@ curl -X POST http://localhost:1349/api/v1/tools/video/video-loudnorm \ ## Notes -- Uses FFmpeg's two-pass `loudnorm` filter targeting -14 LUFS integrated loudness, the standard for streaming platforms. +- Uses FFmpeg's `loudnorm` filter targeting -16 LUFS integrated loudness with -1.5 dBTP true peak and 11 LU loudness range (EBU R128 broadcast standard). - The source audio sample rate is preserved in the output. - If the video has no audio track, the request returns a 400 error. diff --git a/apps/docs/tools/video/video-metadata.md b/apps/docs/tools/video/video-metadata.md index 01247e99..1b1f931a 100644 --- a/apps/docs/tools/video/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/video-metadata` +`POST /api/v1/tools/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/video-metadata \ +curl -X POST http://localhost:1349/api/v1/tools/video-metadata \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" ``` @@ -29,9 +29,18 @@ curl -X POST http://localhost:1349/api/v1/tools/video/video-metadata \ ```json { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip.mp4", + "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/clip_clean.mp4", "originalSize": 12500000, - "processedSize": 12480000 + "processedSize": 12480000, + "metadata": { + "container": "mov,mp4,m4a,3gp,3g2,mj2", + "durationS": 42.5, + "bitrateKbps": 2350, + "streams": [ + { "type": "video", "codec": "h264", "width": 1920, "height": 1080 }, + { "type": "audio", "codec": "aac", "sampleRate": 48000 } + ] + } } ``` diff --git a/apps/docs/tools/video/video-speed.md b/apps/docs/tools/video/video-speed.md index 8cd18ba3..a9022072 100644 --- a/apps/docs/tools/video/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/video-speed` +`POST /api/v1/tools/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/video-speed \ +curl -X POST http://localhost:1349/api/v1/tools/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/video-to-frames.md b/apps/docs/tools/video/video-to-frames.md index 21ca6da9..bfc431ab 100644 --- a/apps/docs/tools/video/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/video-to-frames` +`POST /api/v1/tools/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/video-to-frames \ +curl -X POST http://localhost:1349/api/v1/tools/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/video-to-frames \ Extract frames at specific timestamps: ```bash -curl -X POST http://localhost:1349/api/v1/tools/video/video-to-frames \ +curl -X POST http://localhost:1349/api/v1/tools/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/video-to-gif.md b/apps/docs/tools/video/video-to-gif.md index 40794cc4..1fb1a01e 100644 --- a/apps/docs/tools/video/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/video-to-gif` +`POST /api/v1/tools/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`. @@ -19,12 +19,12 @@ Accepts multipart form data with a video file and a JSON `settings` field. This | fps | integer | No | `12` | Output frame rate (1-30) | | width | integer | No | `480` | Output width in pixels (64-1280). Height scales proportionally | | startS | number | No | `0` | Start time in seconds (must be >= 0) | -| durationS | number | No | `5` | Duration in seconds (0-60) | +| durationS | number | No | `5` | Duration in seconds (above 0, max 60) | ## Example Request ```bash -curl -X POST http://localhost:1349/api/v1/tools/video/video-to-gif \ +curl -X POST http://localhost:1349/api/v1/tools/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/video-to-webp.md b/apps/docs/tools/video/video-to-webp.md index c931de55..895d9659 100644 --- a/apps/docs/tools/video/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/video-to-webp` +`POST /api/v1/tools/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/video-to-webp \ +curl -X POST http://localhost:1349/api/v1/tools/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/video/watermark-video.md b/apps/docs/tools/video/watermark-video.md index bc04cc61..13ca28c4 100644 --- a/apps/docs/tools/video/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/video/watermark-video` +`POST /api/v1/tools/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/video/watermark-video \ +curl -X POST http://localhost:1349/api/v1/tools/watermark-video \ -H "Authorization: Bearer si_your-api-key" \ -F "file=@clip.mp4" \ -F 'settings={"text": "PREVIEW", "position": "c", "fontSize": 48, "opacity": 0.3}'