MediaCleaner Pro embeds a JSON REST API directly in the binary. When you launch the application, the same process that runs the 10-stage deduplication pipeline also starts an Axum HTTP server onDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/xcoder-es/media-cleaner-pro/llms.txt
Use this file to discover all available pages before exploring further.
http://127.0.0.1:8080 by default. There is no separate daemon, container, or cloud service — every request is handled locally.
Base URL
http://127.0.0.1:8080
Both SERVER_HOST and SERVER_PORT are configurable via the .env file in the same directory as the binary. See the Configuration section for all available variables.
OpenAPI Specification
The full OpenAPI 3.1 specification is auto-generated from the source code and served at runtime:Endpoints
Health Check
GET /health — Returns the service name and version string. Use this to verify the server is up before issuing pipeline commands.Pipeline Status
GET /api/status — Returns the full StateResponse: stage list, processing stats, running/paused flags, and recent log messages.Start Job
POST /api/start — Starts a new processing job. Accepts source directory, destination directory, and optional Hamming threshold override.Pause / Resume / Cancel
POST /api/control — Sends a control action (pause, resume, or cancel) to the currently running job.SSE Progress Stream
GET /api/progress — Server-Sent Events stream that emits a StateResponse every 500 ms. Connect once and receive live progress without polling.Log Messages
GET /api/logs — Returns up to 1 000 recent log messages (timestamp, level, stage, message).Browse Directories
GET /api/browse — Lists subdirectories under a given path along with the image count in each directory. Used by the embedded UI’s directory picker.OpenAPI Spec
GET /api/openapi.json — Machine-readable OpenAPI 3.1 document describing all schemas and operations.Endpoint Summary
| Method | Path | Description |
|---|---|---|
| GET | /health | Health check — returns version |
| GET | /api/status | Current pipeline state, stats, and logs |
| POST | /api/start | Start a processing job |
| POST | /api/control | Pause, resume, or cancel the running job |
| GET | /api/progress | SSE stream of StateResponse (every 500 ms) |
| GET | /api/logs | Recent log messages (up to 1 000) |
| GET | /api/browse | List subdirectories with image counts |
| GET | /api/openapi.json | OpenAPI 3.1 specification |
Content Types
All request bodies and JSON responses useContent-Type: application/json. The single exception is the progress stream:
| Endpoint | Content-Type |
|---|---|
| All others | application/json |
GET /api/progress | text/event-stream |
POST /api/start), set the Content-Type: application/json header explicitly.
CORS
The server registers a tower-http CORS layer so that the embedded frontend — served from the same origin — can make requests freely. If you build a custom frontend or script running on a different port or origin, requests will succeed because the CORS policy is permissive by default.Health Check Example
The simplest way to confirm the API is reachable is to hit/health:
version field is embedded at compile time from the crate’s Cargo.toml and will reflect whichever release binary you are running.